繁体   English   中英

IndexError:找不到图层[4]

[英]IndexError: Layer [4] not found

我在Linux中将scapy用于python,并编写了适用于特定pcap文件的代码,但是当我尝试另一个pcap文件时,它显示出错误:IndexError:Layer [4] not found。 我试图在网上找到解决方案,但是没有任何效果。

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()函数,但它也无济于事。 我真的很感谢您的帮助。

问题是您正在使用packet[i] 您应该使用packet更改每个packet[i] 在scapy中,每个数据包都是由堆叠的层组成的,因此,当您使用packet[i] ,相当于说“给我打包后的第i个堆叠层”。 这意味着在您第一次编写循环时,您就在“数据包堆栈”中寻找第一层,依此类推。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM