使用 scapy 在 Python 中读取 .pcap 文件的问题

时间:2021-06-12 08:35:31

标签: python scapy pcap

我正在尝试创建一个程序,我必须在其中读取 pcap 文件,然后计算与某些 IP 相关的数据包数量。我不习惯用 Python 编程,但我必须使用它,因为我在 Raspberry Pi 上使用它,并且根据输出,我必须控制多个引脚。

现在我有这个,但我有一个错误,我不知道如何解决。

from scapy.all import *

from scapy.utils import RawPcapReader
from scapy.layers.l2 import Ether
from scapy.layers.inet import IP, TCP

def read_pcap(name_pcap):
    print("Opening", name_pcap)
    
    client_1 = '192.168.4.4:48878'
    server = '10.0.0.2:80'
    
    (client_1_ip, client_1_port) = client_1.split(':')
    (server_ip, server_port) = server.split(':')
    
    counter = 0
    
    for(pkt_data, pkt_metadata,) in RawPcapReader(name_pcap):
        counter += 1
        
        ether_pkt = Ether(pkt_data)

       # Below here are functions to filter the data
                
    
read_pcap("captura.pcap")

错误是这个:

NameError: name 'Packet' 未定义

错误出现在此 (for(pkt_data, pkt_metadata,) in RawPcapReader(name_pcap):) 行中。

有人知道怎么解决吗?

谢谢你:)

1 个答案:

答案 0 :(得分:0)

正如 Carcigenicate 指出的那样,这是一个已知的错误。它已在 https://github.com/secdev/scapy/commit/ff644181d9bee35979a84671690d8cd1aa1971fa

中修复

您可以同时使用开发版本(超过 https://scapy.readthedocs.io/en/latest/installation.html#current-development-version