我们使用 tftp 协议和以太网电缆将媒体文件发送到我们的远程设备。 同时我们在远程设备上使用了 tcpdump 工具。所以我们将通信保存到一个 .pcap 文件中。
我们使用的 tcpdump 命令:tcpdump -i eth0 -s 0 -w video.pcap host
我们编写了这个简单的 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 小时。