python-3.x - 如何在 py3 代码中将列表转换为 scapy.plist.PacketList?
问题描述
我pkts = rdpcap('./xxx.pcap')
以前在 中接收 pkts xxx.pcap
,正如我所料,它的类型应该是scapy.plist.Packet
,但是在 rd 之后,它被转换为list
类型,而列表元素不能被传输为pkts[IP]
,我的代码如下:
print(type(pkts))
myfunc(pkts)
和 myfunc 如下:
def myfunc(pkts, src_ip):
if src_ip is not None:
print(pkts[0].show())
try:
pkts = pkts[IP].filter(lambda x:x[IP].src in ipnet(src_ip))
expect:
raise TypeError
return pkts
当我跑步时,它会引发:
Traceback (most recent call last):
File "parser.py", line 89, in ip_filter
pkts = pkts[IP].filter(lambda x:x[IP].src in ipnet(src_ip))
TypeError: list indices must be integers or slices, not Packet_metaclass
ipnet 等于 IPy.iP,
现在,我知道我需要将类型转换list
为scapy.plist.PacketList
,但我该怎么做呢?
解决方案
感谢罗斯,我明白了,因为 python3 会将 pkts 的类型从scapy.plist.PacketList
to重置list
,所以我们需要在PacketList(pkts)
这里使用 scapy,如下所示:
def func2(pkts):
pkts=PacketList(pkts)
packet's process code.
def func1():
pkts=rdpcap('xxx.pcap')
func2(pkts)
因为我不擅长英语,我不知道它是否清除了 supscri**ed。
推荐阅读
- react-native - 将本机设置状态从抽屉导航器反应到其他组件
- node.js - Npm install angular/cli 错误 EPERM 操作不允许
- sql - 如何在 SQL Server 中根据客户分区记录的列值和 COUNT() 添加标志列
- checkbox - 禁用包含复选框的 mvc kendo 网格上的单击事件
- java - 在 Java 中键入时的 Eclipse 光子延迟
- google-cloud-platform - 通过java读取AVRO文件并作为JSON传递
- angular - “Access-Control-Allow-Origin”标头的值“http://localhost:4200”不等于提供的来源
- c# - 为什么一个名为 DefaultStringValue 的属性总是首先出现在 IntelliSense 中?
- java - 我可以使用 for 循环通过 Json.createObjectBuilder 构建 JsonObject 吗?
- php - Array_push 推送不可见元素,仅在第二次推送时有效