为了账号安全,请及时绑定邮箱和手机立即绑定

从 python 3.5.2 移动到 python 3.7.4 时出现 winpcapy 错误

从 python 3.5.2 移动到 python 3.7.4 时出现 winpcapy 错误

PIPIONE 2022-05-24 16:03:40
我一直很高兴地使用一些 python 来生成原始以太网帧,并使用带有 winpcapy 的 Python 3.5.2 在 Windows 7 上将它们发送到一个选择的接口。我刚刚安装了 Python 3.7.4,现在在尝试运行相同的代码时收到错误消息。import ctypesimport winpcapyimport syserrbuf = ctypes.create_string_buffer(winpcapy.PCAP_ERRBUF_SIZE)alldevs = ctypes.POINTER(winpcapy.pcap_if_t)()winpcapy.pcap_findalldevs(ctypes.byref(alldevs), errbuf)device = alldevs.contentsinterfaces = []while True:    interfaces.append(device)    if not device.next:        break    device = device.next.contentsprint(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_ERRBUF_SIZE”,但随后我遇到了进一步的问题,看起来我在 3.7 中使用 winpcapy 的方式通常有问题。有没有其他人遇到过这类问题?
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

你是如何获得的winpcapy?


PyPI winpcapy 包与Google Code 上的历史 winpcapy 脚本不同。PyPI 包在模块中公开libpcapAPI 。winpcapy.winpcapy_types


在原始winpcapy脚本中是模块PCAP_ERRBUF_SIZE中定义的值。winpcapy您可以像在您提供的代码中一样导入它:


import winpcapy

print(winpcapy.PCAP_ERRBUF_SIZE)

但是,在较新的 PyPI 包PCAP_ERRBUF_SIZE中定义为winpcapy.winpcapy_types. 因此,您需要执行以下操作:


from winpcapy import winpcapy_types as wtypes

print(wtypes.PCAP_ERRBUF_SIZE)


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信