私は現在、USBPcap + Python/dpktを使用して、入力USBデバイスの例として光USBマウスを使用して、着信USBトラフィックを分析しようとしています。dpkt.pcap.Readerを使用してstdinから読み取るには?
コマンド
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分析。 sys.stdinの代わりにdpkt.pcap.Reader()をopen( 'foo.pcap')の代わりに使用するにはどうすればよいですか?
P.S. official mini-tutorialに示したように、私は確かに
USBPcapCMD.exe -d \\.\USBPcap2 -o - | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
を行うことができますが、私はUSBスニファ+パイソンを使用して、リアルタイムのUSBトラフィックを実行したいと思います。
P.P.S. Python/PyUSB + libusb-win32は完璧に動作しますが、私はUSBPcapが必要です! :)