为何Scapy报错AttributeError: module 'scapy.all' has no attribute 'hexraw'?
问题原因及解决方法
错误根源
- Scapy的
scapy.all模块里根本没有hexraw这个函数/属性,你调用了一个不存在的API,所以触发AttributeError。 - 额外问题:
p.show()是用来直接在控制台打印数据包结构的,它的返回值是None,所以你赋值的d其实是空值,就算hexraw存在,传入None也会报错。
正确实现方式
如果想获取数据包的十六进制原始数据,按以下步骤来:
- 从
sniff返回的PacketList中取出具体的数据包(因为count=1,所以取索引0的元素) - 将数据包转为原始字节,再转成十六进制字符串
修正后的代码:
import scapy.all as scapy # 捕获1个TCP数据包 packet_list = scapy.sniff(filter='tcp', count=1) # 获取第一个数据包 target_packet = packet_list[0] # 转为十六进制原始数据 hex_raw_data = bytes(target_packet).hex() print(hex_raw_data) # 如需查看数据包结构,直接调用show()即可,无需赋值 target_packet.show()
内容的提问来源于stack exchange,提问作者user20144486
相关产品推荐
相关产品推荐

