я использую pkts = rdpcap('./xxx.pcap')
для получения pkts в xxx.pcap
, как я и ожидал, его тип должен быть scapy.plist.Packet
, но после rd он был преобразован в тип list
, в то время как элемент списка не может быть передан как pkts[IP]
, мой код выглядит следующим образом:
print(type(pkts))
myfunc(pkts)
и myfun c выглядит следующим образом:
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
i pnet равен IPy.iP,
, теперь я знаю, что мне нужно преобразовать тип list
в scapy.plist.PacketList
, но как я могу это сделать?