2

現在、入力デバイスの例として光学式 USB マウスを使用して、USBPcap + Python/dpkt を使用して着信 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)

残念ながら、キャプチャしたデータの LIVE 分析に問題があります。open('foo.pcap') の代わりにdpkt.pcap.Reader() をsys.stdinで動作させるにはどうすればよいですか?

PS きっとできる

USBPcapCMD.exe -d \\.\USBPcap2 -o - | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -

公式のミニチュートリアルに示されているように、USB スニファー + Python を使用してリアルタイムの USB トラフィックを実行したいと考えています。

PPS Python/PyUSB + libusb-win32 は完璧に動作しますが、USBPcap が必要です! :)

4

1 に答える 1