2017-06-06 55 views
0

我們正在嘗試使用scapyffplay來製作一個小型python應用程序,該應用程序顯示來自嗅探數據包的實時視頻。這是我們的碩士學位研究項目的一部分。目標是製作概念驗證應用程序,以窺探通過tcp傳輸的視頻。
我們有一個工作腳本,寫入.dat文件,然後我們用ffplay讀取它。它工作正常,但有很多延遲,我們認爲我們可以做得更好:直接將其流入ffplay,而無需在文件中寫入原始數據。來自原始tcp數據包的實時視頻

這裏是我們的腳本:

from scapy.all import * 
import os 

export_dat = open("data.dat", "a") 

def write_packet_raw(packet): 
    export_dat.write(str(packet.getlayer(Raw))) 

def realtime_packet(): 
    p = sniff(iface="wlan0", filter="tcp and (port 5555)", count=5000, prn=write_packet_raw) 

realtime_packet() 
export_dat.close() 

然後我們推出:ffplay -window_title Videostream -framedrop -infbuf -f h264 -i data.dat

對我們如何才能做到這一點任何想法?謝謝。

回答

2

以二進制模式寫入stdout而不是文件,並將輸出傳送到ffplay

import sys 
sys.stdout.buffer.write(...) 
sys.stdout.flush() 

然後運行它想:

python3 sniff.py | ffplay -f h264 -i -

-意味着stdin

+0

謝謝我們找到了我們自己的解決方案,但這幾乎是我們所做的! – benuuts