【发布时间】:2017-07-08 12:23:54
【问题描述】:
我目前正在尝试使用 USBPcap + Python/dpkt 分析传入的 USB 流量,并以光学 USB 鼠标作为示例输入设备。
启动包含命令的批处理文件后
USBPcapCMD.exe -d \\.\USBPcap7 -o - | pipetest.py
以下代码完美运行:
# pipetest.py
# sniffing for USB-mouse activities
import sys
import dpkt, struct
try:
f = open('c:\\users\\user\\downloads\\test.pcap','wb')
while True:
inpt = sys.stdin.read(34) # package length
f.write(inpt)
except KeyboardInterrupt:
f.close()
f = open('c:\\users\\user\\downloads\\test.pcap','rb')
pcap = dpkt.pcap.Reader(f)
print
for ts, buf in pcap:
data = struct.unpack("b"*7, buf[-7:]) # 7-byte leftover with mouse info
print data
f.close()
输出是:
34
34
34
34
34
34
34
34
34
34
34
34
^C
(3, 4, 0, 0, 0, 0, 0) <---|
(3, 0, 0, 0, 0, 0, 0) |
(3, 4, 0, 0, 0, 0, 0) <---|
(3, 0, 0, 0, 0, 0, 0) |------ Four clicks with mouse wheel
(3, 4, 0, 0, 0, 0, 0) <---|
(3, 0, 0, 0, 0, 0, 0) |
(3, 4, 0, 0, 0, 0, 0) <---|
(0, 0, 0, 9, 0, 1, 7)
很遗憾,我在对捕获的数据进行实时分析时遇到了问题。如何让 dpkt.pcap.Reader() 使用 sys.stdin 而不是 open('foo.pcap')?
附:我一定可以的
USBPcapCMD.exe -d \\.\USBPcap2 -o - | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
如official mini-tutorial 所示,但我想使用 USB 嗅探器 + Python 执行实时 USB 流量。
P.P.S. Python/PyUSB + libusb-win32 完美运行,但我确实需要 USBPcap! :)
【问题讨论】:
标签: python-2.7 usb pcap dpkt