Hackit2017-USB ducker-writeup
usb keyboard pcap
Task
|
|
Solution
题目提供了pcap文件。
可以知道对应的设备为apple的keyboard。
对于keyborad的数据传输,在数据包的Leftover Capture Data
中,根据这篇文章: USB鼠标、键盘数据格式 和 HID Keyboard report descriptor。键盘发送给PC的数据每次8个字节,假设收到的数据为:
第一个字节是modifier keys,对应的规则如下:
一个字节是8位,这里是02
,即对应着0000 0010
,即可解码为Left Shift
,也就是说按下了键盘左边的Shift键。假若数据为00
,则表示啥都不做。
第二个字节是padding,默认为00
。可略过不提。
第三个字节起到第八个字节为普通按键,解码规则可以根据 Universal Serial Bus (USB)中第53页的规则来解码。
比如说我们收到了数据为:
根据解码规则,以及第一字节shift被按下,可知为大写字母A
。
接下去开始针对题目提供的数据包进行分析。
根据 https://www.wireshark.org/docs/dfref/u/usb.html 可以知道 Leftover Capture Data
所对应的Field name为 usb.capdata
,我们可以把值为00:00:00:00:00:00:00:00
的数据过滤掉,因为它表示啥都不输入。
而我们的目标是keyboard的数据,从pcap包中看它对应的设备Device address为3,所对应的Field name为usb.device_address
。
我们可以使用tshark命令提取对应的数据,并将其保存到usbdata.txt中。
提取出来的数据差不多这样:
(好吧,至于为什么还有00:00:00:00:00:00:00:00,哪位解释下)
由于还有一些零行,可以用下面命令再过滤一遍:
然后根据解码规则进行解码。脚本如下:
解出来为:
打出来: