Homemade keylogger

/dev/log/input/event 파일이 이제 키보드 기록에 대한 정보를 담고 있다고 한다. 이를 파싱하면 뭔가 나오는가 보다.
리눅스에서 이렇게 정보가 남으니까 안드로이드에서도 이를 확인할 수 있을 것 같다.
일단 구조 파악해서 간단하게 코드를 작성했다.
import struct import base64 import time from datetime import date, datetime evt_code = {} #evt_code['KEY_RESERVED']=0 evt_code['1']= 2 evt_code['2']= 3 evt_code['3']= 4 evt_code['4']= 5 evt_code['5']= 6 evt_code['6']= 7 evt_code['7']= 8 evt_code['8']= 9 evt_code['9']= 10 evt_code['0']= 11 evt_code['-']=12 evt_code['=']=13 evt_code[' ']= 15 evt_code['Q']= 16 evt_code['W']= 17 evt_code['E']= 18 evt_code['R']= 19 evt_code['T']= 20 evt_code['Y']= 21 evt_code['U']= 22 evt_code['I']= 23 evt_code['O']= 24 evt_code['P']= 25 evt_code['[']=26 evt_code[']']=27 evt_code['\n']=28 evt_code['A']= 30 evt_code['S']= 31 evt_code['D']= 32 evt_code['F']= 33 evt_code['G']= 34 evt_code['H']= 35 evt_code['J']= 36 evt_code['K']= 37 evt_code['L']= 38 evt_code[';']=39 evt_code['`']=40 evt_code['\\']=43 evt_code['Z']= 44 evt_code['X']= 45 evt_code['C']= 46 evt_code['V']= 47 evt_code['B']= 48 evt_code['N']= 49 evt_code['M']= 50 evt_code[',']=51 evt_code['.']= 52 evt_code['/']=53 evt_code[' ']=57 fp = open("ch24.txt",'r') data = base64.b64decode(fp.read()) flag = "" for i in range(0,len(data),0x18): try: uct = data[i:i+0x18] uct_t = struct.unpack('<Q',uct[0:8])[0] uct_ms = struct.unpack('<Q',uct[8:16])[0] uct_type = struct.unpack('<L',uct[16:20])[0] uct_val = bytes(uct[20:24]) timestmp = datetime.fromtimestamp(eval(str(uct_t)+"."+str(uct_ms))) key = [k for k, v in evt_code.items() if v == int.from_bytes(uct_val,byteorder='little')][0].replace('KEY_','') flag += key except: continue r_flag = "" for i in range(0,len(flag)): r_flag += flag[i] print(r_flag)
Python
결과가 좀 이상하게 나온다.
1111111111111111111111111XXTT SSSSHH QQPPPP66SSYYSSTTEE;E;ECCHH00CCHHQQLLLLEENNGEGERROOOOTT66;E;E,,OORGRG 66PP YYEESS QQPPPP66SSYYSSTTEE;E;E66CCHH LLSS 66LL CCQQTT CCHHCCEEXXIITT EECCHOHO SSYYNNTTQQXX EENNQQBBLELE 12211111..,,VVII;;RRCC VVII;; HHIIHIHI,,PPYY II11111111111111133//..UUSSRR..BBININ..PPYYTTGGHHONON FFRROO;; SSYYSS II;;PPOORTRT QQRRGGVV IIFF LLEENN55QQRRGGVV-- .. PPRRININTT55331111UUSQSQGEGE .. ``SS TTOO BEBE XXOOREREDD33 `` QQRRGGVV111111111111111155---- EEXXIITT55-- DEDEFF ;;YY1111XXOORR55DD--.. QQ ==== 4444 FFOORR II ININ DD.. QQ1==== CCHHRR55 [[[[ OORRDD55II---- RREETTUURRNN QQ PPRRININTT55;;YY1XXOORR55QQRRGGVV111111111155------..XX EECCHOHO CCNN1111GGRRQQTTUULLLLUUTTTTNN8888]]55,,..HIHIHIHI,,PPYY ]]55DDQQTTEE ``SS-- 1111166 SSHHQQSSUU;; 1166 GGRREEPP 66OO 44[[[[55QQFF111111111--111111118844--88HHOOHH ..TT;;PP..FFLLQQGG CCHH;;OODD XX \\,,PPYY EEXXIITT C
Python
뭔가 잘 나오기는 하는데 좀 이상한 점이 있다. 단순히 value 만 보는게 아니라, 타입이랑 이런것도 확인해서 파싱해주는게 좋을 거 같다.