2017-02-19 10 views
1

私は現在、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が必要です! :)

答えて

0

あなたは、このために(FIFOバッファ)https://en.wikipedia.org/wiki/Named_pipe#In_Windowsが)に出力あなたのPythonプログラムとパイプ内からcreateNamedPipe in pythonWindows named pipes in practice

名前付きパイプを作成し、オープンUSBpcapを参照してください名前付きパイプを使用することができます先ほど作成した名前付きパイプ(How to Run an .exe File in Pythonhow to run an exe file with the arguments using python)、その後、あなたはdpkt.pcap.Reader()

https://msdn.microsoft.com/de-de/library/windows/desktop/aa365590%28v=vs.85%29.aspx

で名前付きパイプから読み取ります

https://msdn.microsoft.com/de-de/library/windows/desktop/aa365592%28v=vs.85%29.aspx

関連する問題