Python Tkinter 错误:AttributeError: 'is_at' - Scapy ARP 包解析问题
Python Tkinter 错误:AttributeError: 'is_at' - Scapy ARP 包解析问题
错误信息:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/local/python3/lib/python3.8/tkinter/__init__.py", line 1883, in __call__
return self.func(*args)
File "/root/PycharmProjects/pythonProject/i/m.py", line 90, in scan_hosts
if pkt[ARP].op == ARP.is_at:
File "/usr/local/python3/lib/python3.8/site-packages/scapy/base_classes.py", line 378, in __getattr__
raise AttributeError(attr)
AttributeError: is_at
问题分析:
这是一个 AttributeError 异常,意味着代码中尝试访问一个不存在的属性或方法。在这个特定的情况下,代码尝试访问 ARP.is_at 属性,但是这个属性不存在。
可能原因:
- Scapy 版本问题:
ARP.is_at可能在较旧的 Scapy 版本中存在,但在新版本中已经被移除或重命名。 - 代码错误: 代码中可能存在错误,例如将
ARP.is_at写成了错误的名称。
解决方法:
- 检查 Scapy 版本: 确保你使用的是最新版本的 Scapy 库,并参考官方文档确认
ARP类中是否包含is_at属性。 - 查看代码: 仔细检查代码,确保
ARP.is_at的拼写正确,并且在使用之前进行了正确的导入。 - 参考 Scapy 文档: 查看 Scapy 库的官方文档,了解
ARP类中可用的属性和方法。 - 使用替代方法: 如果
ARP.is_at属性已经被移除,尝试使用其他属性或方法来实现相同的功能。
示例:
from scapy.layers.l2 import ARP
# 检查 ARP 包的类型
if pkt[ARP].op == 1: # ARP 请求
# 处理 ARP 请求
elif pkt[ARP].op == 2: # ARP 响应
# 处理 ARP 响应
建议:
- 使用最新版本的 Scapy 库。
- 仔细检查代码,确保属性和方法的名称正确。
- 参考官方文档,了解库的最新更新和使用方式。
原文地址: https://www.cveoy.top/t/topic/jnka 著作权归作者所有。请勿转载和采集!