USB pocket analyze

第一次做usb数据分析,记录一下

http://wiki.wireshark.org/USB

http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt

Hut1_12v2.pdf

对于usehid.data

第一字节0x02或者0x20,表示shift键被按

第三字节为press key code,对照如下python代码。

解题思路是通过Description Response  Device包确定设备为keyword,查找usb keyword 地址,然后用

tshark -r xxx.pcap -Y 'usb.src == "usb keyword.addr"'  -T fields -e usbhid.data | grep -v 0000000000000000 dump数据。

可以使用-T json查看完整数据包。



#!/usr/bin/env python3

# run this before the script : `tshark -r access_cards.pcap -Y 'usb.src == "1.16.1"' -T fields -e usbhid.data | grep -v 0000000000000000 > data.dat `

# This is the name of the file that contains the HID data. A line should look like `030000000000000000`

file_name = "data.dat"

# This should cover the most common key codes

MappingN = {}

MappingS = {}

MappingN[4] = "a";          MappingS[4] = "A"

MappingN[5] = "b";          MappingS[5] = "B"

MappingN[6] = "c";          MappingS[6] = "C"

MappingN[7] = "d";          MappingS[7] = "D"

MappingN[8] = "e";          MappingS[8] = "E"

MappingN[9] = "f";          MappingS[9] = "F"

MappingN[10] = "g";          MappingS[10] = "G"

MappingN[11] = "h";          MappingS[11] = "H"

MappingN[12] = "i";          MappingS[12] = "I"

MappingN[13] = "j";          MappingS[13] = "J"

MappingN[14] = "k";          MappingS[14] = "K"

MappingN[15] = "l";          MappingS[15] = "L"

MappingN[16] = "m";          MappingS[16] = "M"

MappingN[17] = "n";          MappingS[17] = "N"

MappingN[18] = "o";          MappingS[18] = "O"

MappingN[19] = "p";          MappingS[19] = "P"

MappingN[20] = "q";          MappingS[20] = "Q"

MappingN[21] = "r";          MappingS[21] = "R"

MappingN[22] = "s";          MappingS[22] = "S"

MappingN[23] = "t";          MappingS[23] = "T"

MappingN[24] = "u";          MappingS[24] = "U"

MappingN[25] = "v";          MappingS[25] = "V"

MappingN[26] = "w";          MappingS[26] = "W"

MappingN[27] = "x";          MappingS[27] = "X"

MappingN[28] = "y";          MappingS[28] = "Y"

MappingN[29] = "z";          MappingS[29] = "Z"

MappingN[30] = "1";          MappingS[30] = "!"

MappingN[31] = "2";          MappingS[31] = "@"

MappingN[32] = "3";          MappingS[32] = "#"

MappingN[33] = "4";          MappingS[33] = "$"

MappingN[34] = "5";          MappingS[34] = "%"

MappingN[35] = "6";          MappingS[35] = "^"

MappingN[36] = "7";          MappingS[36] = "&"

MappingN[37] = "8";          MappingS[37] = "*"

MappingN[38] = "9";          MappingS[38] = "("

MappingN[39] = "0";          MappingS[39] = ")"

MappingN[40] = "Enter";      MappingS[40] = "Enter"

MappingN[41] = "esc";        MappingS[41] = "esc"

MappingN[42] = "del";        MappingS[42] = "del"

MappingN[43] = "tab";        MappingS[43] = "tab"

MappingN[44] = "space";      MappingS[44] = "space"

MappingN[45] = "-";          MappingS[45] = "_"

MappingN[46] = "=";          MappingS[46] = "+"

MappingN[47] = "[";          MappingS[47] = "{"

MappingN[48] = "]";          MappingS[48] = "}"

MappingN[49] = "\\";        MappingS[49] = "|"

MappingN[50] = " ";          MappingS[50] = " "

MappingN[51] = ";";          MappingS[51] = ":",

MappingN[52] = "'";          MappingS[52] = "\\"

MappingN[53] = "`";          MappingS[53] = "~"

MappingN[54] = ",";          MappingS[54] = "<"

MappingN[55] = ".";          MappingS[55] = ">"

MappingN[56] = "/";          MappingS[56] = "?"

MappingN[57] = "CapsLock";  MappingS[57] = "CapsLock"

MappingN[79] = "RightArrow"; MappingS[79] = "RightArrow"

MappingN[80] = "LeftArrow";  MappingS[80] = "LeftArrow"

MappingN[84] = "/";          MappingS[84] = "/"

MappingN[85] = "*";          MappingS[85] = "*"

MappingN[86] = "-";          MappingS[86] = "-"

MappingN[87] = "+";          MappingS[87] = "+"

MappingN[88] = "Enter";      MappingS[88] = "Enter"

MappingN[89] = "1";          MappingS[89] = "1"

MappingN[90] = "2";          MappingS[90] = "2"

MappingN[91] = "3";          MappingS[91] = "3"

MappingN[92] = "4";          MappingS[92] = "4"

MappingN[93] = "5";          MappingS[93] = "5"

MappingN[94] = "6";          MappingS[94] = "6"

MappingN[95] = "7";          MappingS[95] = "7"

MappingN[96] = "8";          MappingS[96] = "8"

MappingN[97] = "9";          MappingS[97] = "9"

MappingN[98] = "0";          MappingS[98] = "0"

MappingN[99] = ".";          MappingS[99] = "."

# capslock default is off

capslock = 0

# shift key is press

shift = 0

# This will contain the converted characters

out = list()

# Do a barrel roll

with open(file_name, "rb") as f:

    line = f.readline()

    while line:

        shift_flag = int(line[0:2], 16)

        idx = int(line[4:6], 16)

        # abnomal index handler

        if idx < 4 or idx > 99:

            line = f.readline()

            continue

          # caplock turn on / off

        if idx == 57:

            capslock = capslock ^ 1

            line = f.readline()

            continue


          # shift press check 

        shift = shift_flag & 0x02 or shift_flag


        # alpha capslock deal

        if MappingN[idx].isalpha():

            if (capslock ^ shift) == 0:

                c = MappingN[idx]

            else:

                c = MappingS[idx]

        #other character does't consider capslock.eg.01234#/

        else:

            if shift == 0:

                c = MappingN[idx]

            else:

                c = MappingS[idx]

        out += c

        line = f.readline()

# Spit it out

print("".join(out))

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,252评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,886评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,814评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,869评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,888评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,475评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,010评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,924评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,469评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,552评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,680评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,362评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,037评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,519评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,621评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,099评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,691评论 2 361

推荐阅读更多精彩内容