Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何使用dpkt.pcap.Reader读取标准数据?_Python 2.7_Usb_Pcap_Dpkt - Fatal编程技术网

Python 2.7 如何使用dpkt.pcap.Reader读取标准数据?

Python 2.7 如何使用dpkt.pcap.Reader读取标准数据?,python-2.7,usb,pcap,dpkt,Python 2.7,Usb,Pcap,Dpkt,我目前正在尝试使用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\\u

我目前正在尝试使用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)
如中所示,但我希望使用USB嗅探器+Python执行实时USB通信


p.p.S.Python/PyUSB+libusb-win32工作得非常完美,但我确实需要USBPcap:)

您可以为此()使用命名管道(FIFO缓冲区),请参见和

创建命名管道,从python程序中打开
USBpcap
,将输出通过管道传输到刚才创建的命名管道(,),然后使用
dpkt.pcap.Reader()从命名管道读取

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