Python 索引器:找不到层[4]
我在linux中使用scapy for python,我编写了一段代码,用于特定的pcap文件,但当我尝试另一个pcap文件时,它向我展示了eror: 索引器:找不到层[4]。 我试图在网上找到一个解决方案,但没有任何效果Python 索引器:找不到层[4],python,linux,scapy,Python,Linux,Scapy,我在linux中使用scapy for python,我编写了一段代码,用于特定的pcap文件,但当我尝试另一个pcap文件时,它向我展示了eror: 索引器:找不到层[4]。 我试图在网上找到一个解决方案,但没有任何效果 from scapy.all import * import pandas as pd df = pd.DataFrame(columns=['Dest_IP', 'Source_IP', 'Source_Port']) packets = rdpcap("attack.p
from scapy.all import *
import pandas as pd
df = pd.DataFrame(columns=['Dest_IP', 'Source_IP', 'Source_Port'])
packets = rdpcap("attack.pcap")
i = 0
for packet in packets:
print i
print packet[i].summary()
if(packet[i].haslayer(IP)):
insert_ip_dest = packet[IP].dst
insert_ip_source = packet[IP].src
else:
insert_ip_dest = 'N/A'
insert_ip_source = 'N/A'
if(packet[i].haslayer(TCP)):
insert_dest_port = packet[TCP].dport
else:
insert_dest_port = 'N/A'
df.loc[i] = [insert_ip_dest, insert_ip_source, insert_dest_port]
i = i+1
df.to_csv("packets.csv")
我甚至尝试使用haslayer()函数,但也没用。
我真的很感激任何帮助 问题是您使用的是
数据包[i]
。您应该使用数据包更改每个数据包[i]
。实际上,每个数据包都是由堆叠的层组成的,因此当你使用数据包[i]
时,就相当于说“给我打包中的第i个堆叠层”。这意味着,在您第一次编写循环时,您要查找“数据包堆栈”中的第一层,等等。问题在于您使用的是packet[i]
。您应该使用数据包更改每个数据包[i]
。实际上,每个数据包都是由堆叠的层组成的,因此当你使用数据包[i]
时,就相当于说“给我打包中的第i个堆叠层”。这意味着,在您第一次编写循环代码时,您正在寻找第一层“数据包堆栈”,等等。请粘贴错误回溯的完整堆栈跟踪(最近一次调用):文件“create_table.py”,第9行,在print packet[i].summary()文件“/home/oded/.local/lib/python2.7/site packages/scapy/packet.py”,第817行,在getitem raise Indexer(“未找到[%s]层”%lname)中,Indexer:Layer[4]not found@DNIT13请粘贴错误回溯的完整堆栈跟踪(最近一次调用):文件“create_table.py”,第9行,在print packet[i].summary()文件“/home/oded/.local/lib/python2.7/site packages/scapy/packet.py”,第817行,在getitem提升索引器中(“未找到层[%s]“%lname”)索引器:未在dnit13处找到层[4]