繁体   English   中英

连续读取正在连续写入的 python 中的 pcap 文件

[英]Continuously read pcap file in python that being written continuously

使用Python我想从tshark (或用libpcappfring编写的一段代码)实时捕获连续写入的pcap文件中,以它们写入的相同顺序连续读取数据包。

为了测试这一点,我按以下方式在 Python 中使用了tsharkscapy

@terminal1: ping -i 5 192.168.1.10

@terminal2: tshark -f "icmp" -a filesize:1000 -w ping_live.pcap

Python 中的数据包阅读器旨在每 5 秒读取每个未读数据包(而不是每次都读取整组数据包)。 但它不会等待5秒后即将写入的下一组数据包,它会退出。

from scapy.all import *

def process_packet(packet):
    print(packet.summary())

sniff(offline="ping_live.pcap", prn=process_packet, store=0)
print("sniff complete, exiting")

然后我尝试在sniff方法周围放置while True:循环,但它不是只读取下一个未读数据包,而是一次又一次地读取整个文件。

我的要求的解决方案是什么(不限于scapy )?

谢谢

我不确定这是否能回答您的问题,因为我无法理解确切的要求。 根据我对您问题中信息的解释,您希望“以与写入 PCAP 文件相同的顺序连续读取数据包。”

您的示例使用了ICMP,因此我的答案将使用该协议。

import pyshark

# filter live capture by type, which is ICMP
capture = pyshark.LiveCapture('en0', display_filter='icmp')

for packet in capture:

    # obtain all the field names within the ICMP packets
    field_names = packet.icmp._all_fields

    # obtain all the field values 
    field_values = packet.icmp._all_fields.values()

    # enumerate the field names and field values
    for field_name, field_value in zip(field_names, field_values):

        # filter the time stamp
        if field_name == 'icmp.data_time':
            print(field_value)
            # output
            Mar 21, 2021 09:03:21.681450000 EDT
            Mar 21, 2021 09:03:21.681450000 EDT
            Mar 21, 2021 09:03:22.686135000 EDT
            Mar 21, 2021 09:03:22.686135000 EDT
            Mar 21, 2021 09:03:23.689576000 EDT
            Mar 21, 2021 09:03:23.689576000 EDT
            Mar 21, 2021 09:03:24.691429000 EDT
            Mar 21, 2021 09:03:24.691429000 EDT
            Mar 21, 2021 09:03:25.692395000 EDT
            Mar 21, 2021 09:03:25.692395000 EDT
            truncated...

以下是可以过滤的字段名称:

icmp.type
icmp.code
icmp.checksum
icmp.checksum.status
icmp.ident
icmp.seq
icmp.seq_le
icmp.data_time
icmp.data_time_relative
data
data.data
data.len

希望这个答案对您有所帮助。

PS 这是我使用pyshark编写的 GitHub 文档。

暂无
暂无

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

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