#!/usr/bin/python # coding=utf-8 import json import sys import os ''' Simple Rubber Ducky script converter by David Gouveia ':126} sketch = '''#include // Rubber ducky script converter developed by: David Gouveia // https://www.davidgouveia.net void setup(){ Keyboard.begin(); %s Keyboard.end(); } void type(int key){ Keyboard.press(key); delay(50); Keyboard.release(key); } void writeStr(byte *str, int len) { for(int i=0;i 1: for i in l: if i in self.functions: instructions.append("Keyboard.press(" + self.mappings[self.functions.index(i)] + ");") elif len(i) == 1: instructions.append("Keyboard.press(" + str(ord(i)) + ");") else: instructions.append("Keyboard.press(" + i + ");") instructions.append("delay(" + self.DEFAULT_DELAY + ");") instructions.append("Keyboard.releaseAll();") else: if l[0] in self.functions: instructions.append("type(" + self.mappings[self.functions.index(l[0])] + ");") else: instructions.append("type(" + l[0] + ");") instructions.append("delay(" + self.DEFAULT_DELAY + ");") return self.sketch % "\n".join([" " + x for x in instructions]) if __name__ == "__main__": if len(sys.argv) > 1 and os.path.isfile(sys.argv[1]): try: with open(sys.argv[1], "r") as r: print RubberDuino().convert(r.read()) sys.exit(0) except Exception as e: print "Error converting script: %s" % e.message sys.exit(1) else: print "Usage:\n\n%s " % sys.argv[0] sys.exit(1)