我一直很高兴使用一些python生成原始以太网帧,并在windows7上使用python3.5.2和winpcapy发送它们所选择的接口。我刚刚安装了python3.7.4,现在在尝试运行同一代码时收到一个错误。你知道吗
import ctypes
import winpcapy
import sys
errbuf = ctypes.create_string_buffer(winpcapy.PCAP_ERRBUF_SIZE)
alldevs = ctypes.POINTER(winpcapy.pcap_if_t)()
winpcapy.pcap_findalldevs(ctypes.byref(alldevs), errbuf)
device = alldevs.contents
interfaces = []
while True:
interfaces.append(device)
if not device.next:
break
device = device.next.contents
print(interfaces)
在3.5中运行时,代码段将打印找到的接口的列表。但是,如果我在3.7中运行它,我会得到:
Traceback (most recent call last): File "Z:\proj\eth\socket.py", line 5, in
<module> errbuf = ctypes.create_string_buffer(winpcapy.PCAP_ERRBUF_SIZE)
AttributeError: module 'winpcapy' has no attribute 'PCAP_ERRBUF_SIZE'
现在,我可以用一个整数值替换'PCAP\u ERRBUF\u SIZE',但是我得到了进一步的问题,看起来我在3.7中使用winpcapy的方式有一些问题。还有其他人碰到过这种问题吗?你知道吗
您是如何获得
winpcapy
的?你知道吗PyPI winpcapy package与Google代码中的historical winpcapy script不同。PyPI包公开了
libpcap
模块中的winpcapy.winpcapy_types
API。你知道吗在原始的
winpcapy
脚本中,PCAP_ERRBUF_SIZE
是在winpcapy
模块中定义的值。您可以像在您提供的代码中一样导入它:但是,在较新的PyPI包中,
PCAP_ERRBUF_SIZE
是在winpcapy.winpcapy_types
中定义的。所以你需要做一些类似的事情:相关问题 更多 >
编程相关推荐