使用 rdpcap() 解析 .pcap 文件需要很长时间

问题描述 投票:0回答:0

我们使用 tftp 协议和以太网电缆将媒体文件发送到我们的远程设备。 同时我们在远程设备上使用了 tcpdump 工具。所以我们将通信保存到一个 .pcap 文件中。

我们使用的 tcpdump 命令:tcpdump -i eth0 -s 0 -w video.pcap host and udp

我们编写了这个简单的 python 代码来分析 .pcap 文件,然后将数据从帧合并到输出文件

我们的目标是; 比较输出文件的二进制信息和第一个媒体文件的二进制信息。 所以我们可以看看通信线路是否有损失。

Python代码:

from scapy.all import rdpcap
a = rdpcap('video.pcap')

file = b''
print ( 'Packet Count:' , len(a))

for x in range(0,len(a)):
    if (a[x].src=='<HOST>' and a[x].dst=='<DEVICE>' and a[x].proto==17 ):   #Filter
           for y in range(  4  ,  len(a[x].load  )   ):  #We take after fourth element of payload
                file = file + a[x].load[y].to_bytes(1, 'big')
                print(x , y , a[x].load[y] )
print(file)

with open("video.mp4", "wb") as binary_file:
    # Write bytes to file
    binary_file.write(file)

代码有效并创建了合法的输出文件。但它真的很慢。

例如; 从 pcap 文件生成一个 45 秒 1080p 30 FPS .mp4 文件大约需要 3.5 小时。

python scapy pcap tcpdump tftp
© www.soinside.com 2019 - 2024. All rights reserved.