2012-02-12 37 views
0

我正在寫一個程序來打開一個PCAP文件,然後過濾一些數據包,然後寫分組數據作爲文件字符串,但我做諾特知道爲什麼會這樣progrme之後無所作爲打開pcap文件。如何從PCAP文件過濾RTSP數據包

int rtsp = 0;

FileWriter的fstream2 =新的FileWriter( 「E:\ write2.txt」,TRUE);

的BufferedWriter fbw2 =新的BufferedWriter(fstream2);

System.out.println(「RTSP:」); JpcapCaptor captor2 = JpcapCaptor.openFile(「E:\ rtsp_with_data_over_tcp.pcap」);

而(真){

分組packet2 = captor2.getPacket();

如果(packet2 == NULL || packet2 == Packet.EOF)中斷;

rtsp = rtsp + 1; String PacketData2 = new String(packet2.data);

fbw2.write(PacketData2);

fbw2.newLine();
}

fbw2.close();

captor2.close();

的System.out.println( 「RTSP:」 + RTSP);

即使這最後一個打印語句也不起作用。

任何人都可以指導我嗎? !

+0

如果你把'的System.out.println(packet2);'在while循環,它循環打印每個數據包? – ecle 2012-02-12 15:36:35

回答

1

據RTSP使用的默認端口,您可以過濾

rtsp   554/tcp Real Time Stream Control Protocol 
rtsp   554/udp Real Time Stream Control Protocol 
rtsp-alt  8554/tcp RTSP Alternate (see port 554) 
rtsp-alt  8554/udp RTSP Alternate (see port 554) 

http://www.cs.columbia.edu/~hgs/rtsp/

+0

我剛更改了pcap文件,現在這段代碼正在工作。我想問一個問題,「看554港」是什麼意思? rtsp流量到達8554還是用於查看554是否可用? – blackfyre 2012-02-12 16:49:26

+0

@ user1204089用於RTSP服務的端口通常在RTSP服務器的RTSP端口設置中定義。端口554和8554僅用於遵守IANA建議。如果端口554已被使用,IANA建議使用8554.但是,由RTSP系統集成商決定設置給定IP網絡中的任何空閒端口。所以,端口554和8554並不總是意味着它們被用於RTSP。因此,您需要檢查來自此端口的數據包/數據報以確認它們正在使用RTSP。 – 2012-02-13 02:30:07

+0

@ee謝謝!對於其他協議也是如此,例如MSMMS的默認端口是1755,那麼我們可能會在這個端口上得到一些其他數據包,並且msmms可能會轉到其他端口? – blackfyre 2012-02-13 11:12:33