f =open('usbdata.txt','r')
fi =open('out.txt','w')while1:
a = f.readline().strip()if a:iflen(a)==16:# 如果是鼠标流量 len 改为 8
out =''for i inrange(0,len(a),2):if i +2!=len(a):
out += a[i]+ a[i +1]+":"else:
out += a[i]+ a[i +1]
fi.write(out)
fi.write('\n')else:break
fi.close()
根据加了冒号的键盘数据,使用脚本一和脚本二还原击键信息
脚本一:
python
mappings ={0x04:"A",0x05:"B",0x06:"C",0x07:"D",0x08:"E",0x09:"F",0x0A:"G",0x0B:"H",0x0C:"I",0x0D:"J",0x0E:"K",0x0F:"L",0x10:"M",0x11:"N",0x12:"O",0x13:"P",0x14:"Q",0x15:"R",0x16:"S",0x17:"T",0x18:"U",0x19:"V",0x1A:"W",0x1B:"X",0x1C:"Y",0x1D:"Z",0x1E:"1",0x1F:"2",0x20:"3",0x21:"4",0x22:"5",0x23:"6",0x24:"7",0x25:"8",0x26:"9",0x27:"0",0x28:"\n",0x2a:"[DEL]",0X2B:" ",0x2C:" ",0x2D:"-",0x2E:"=",0x2F:"[",0x30:"]",0x31:"\\",0x32:"~",0x33:";",0x34:"'",0x36:",",0x37:"."}
nums =[]
keys =open('out.txt')for line in keys:if line[0]!='0'or line[1]!='0'or line[3]!='0'or line[4]!='0'or line[9]!='0'or line[10]!='0'or line[12]!='0'or line[13]!='0'or line[15]!='0'or line[16]!='0'or line[18]!='0'or line[19]!='0'or line[21]!='0'or line[22]!='0':continue
nums.append(int(line[6:8],16))
keys.close()
output =""for n in nums:if n ==0:continueif n in mappings:
output += mappings[n]else:
output +='[unknown]'print('output :')print(output)
脚本二:
python
normalKeys ={"04":"a","05":"b","06":"c","07":"d","08":"e","09":"f","0a":"g","0b":"h","0c":"i","0d":"j","0e":"k","0f":"l","10":"m","11":"n","12":"o","13":"p","14":"q","15":"r","16":"s","17":"t","18":"u","19":"v","1a":"w","1b":"x","1c":"y","1d":"z","1e":"1","1f":"2","20":"3","21":"4","22":"5","23":"6","24":"7","25":"8","26":"9","27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>","2b":"\t","2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\","32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".","38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>","3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}
shiftKeys ={"04":"A","05":"B","06":"C","07":"D","08":"E","09":"F","0a":"G","0b":"H","0c":"I","0d":"J","0e":"K","0f":"L","10":"M","11":"N","12":"O","13":"P","14":"Q","15":"R","16":"S","17":"T","18":"U","19":"V","1a":"W","1b":"X","1c":"Y","1d":"Z","1e":"!","1f":"@","20":"#","21":"$","22":"%","23":"^","24":"&","25":"*","26":"(","27":")","28":"<RET>","29":"<ESC>","2a":"<DEL>","2b":"\t","2c":"<SPACE>","2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"","34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>","3b":"<F2>","3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}
output =[]
keys =open('out.txt')for line in keys:try:if line[0]!='0'or(line[1]!='0'and line[1]!='2')or line[3]!='0'or line[4]!='0'or line[9]!='0'or line[10]!='0'or line[12]!='0'or line[13]!='0'or line[15]!='0'or line[16]!='0'or \
line[18]!='0'or line[19]!='0'or line[21]!='0'or line[22]!='0'or line[6:8]=="00":continueif line[6:8]in normalKeys.keys():
output +=[[normalKeys[line[6:8]]],[shiftKeys[line[6:8]]]][line[1]=='2']else:
output +=['[unknown]']except:pass
keys.close()
flag =0print("".join(output))for i inrange(len(output)):try:
a = output.index('<DEL>')del output[a]del output[a -1]except:passfor i inrange(len(output)):try:if output[i]=="<CAP>":
flag +=1
output.pop(i)if flag ==2:
flag =0if flag !=0:
output[i]= output[i].upper()except:passprint('output :'+"".join(output))
鼠标流量
鼠标流量的数据长度为 4 个字节,集中在 Leftover Capture Data 域的第 3 个字节中
f =open('usbdata.txt','r')
fi =open('out.txt','w')while1:
a = f.readline().strip()if a:iflen(a)==8:# 如果是键盘流量 len 改为 16
out =''for i inrange(0,len(a),2):if i +2!=len(a):
out += a[i]+ a[i +1]+":"else:
out += a[i]+ a[i +1]
fi.write(out)
fi.write('\n')else:break
fi.close()
nums =[]
keys =open('out.txt','r')
f =open('xy.txt','w')
posx =0
posy =0for line in keys:iflen(line)!=12:continue
x =int(line[3:5],16)
y =int(line[6:8],16)if x >127:
x -=256if y >127:
y -=256
posx += x
posy += y
btn_flag =int(line[0:2],16)# 1 for left , 2 for right , 0 for nothingif btn_flag ==2:# 1 代表左键
f.write(str(posx))
f.write(' ')
f.write(str(posy))
f.write('\n')
f.close()