2011-09-06 55 views
8

我已經使用了兩個,並且我得出結論說我可以用tcpflow從網頁讀取html數據,但不能使用tcpdump。我得到的最好的是有很多週期符號的醜陋的ASCII文本。tcpdump vs tcpflow(或「爲什麼tcpdump ASCII數據包的數據不可讀?」)

我的理解是,tcpdump不會重組數據包,而tcpflow會。但是,如果這是關鍵的區別,tcpdump的數據包數據是不是仍然是人類可讀的 - 僅僅是更小的塊? tcpdump僅限於ASCII並且大多數網絡流量使用UTF-8編碼的問題?

我是網絡分析/編程的新手,所以如果我錯過了一些明顯的東西,請原諒我。

+3

只需使用wireshark讀取tcpdump捕獲文件,然後在相關會話中選擇一個數據包。您可以使用「分析」>「跟蹤TCP流」獲取整個流的ASCII轉儲。 –

回答

11

要獲得加密數據,應該使用帶有選項tcpdump –A(大寫字母a)的tcpdump。它傳輸沒有任何標題的文本,主要用於網頁。因此我們很容易得到響應頁面。

我認爲你在應用層和傳輸層數據包之間感到困惑。

我不知道tcpflow,但tcpdump捕獲整個數據包(包括頭文件和所有其他東西),而不僅僅是數據。您提到的html數據將位於tcp/udp/icmp數據包的數據部分無論你使用什麼,所以它需要你瞭解tcp/udp/icmp包的結構以及...

我在我的機器上捕獲這個數據包,並且HTML數據清晰可見,你需要編寫腳本來獲取它從具有分組結構知識的輸出中獲得。

16:15:17.968325 IP 172.31.9.84.80 > 172.31.9.177.56559: P 2575928381:2575928808(427)  
ack 65285447 win 1716 <nop,nop,timestamp 21031622 15165633> 
0x0000: 4500 01df 66fd 4000 4006 66d8 ac1f 0954 [email protected]@.f....T 
0x0010: ac1f 09b1 0050 dcef 9989 8c3d 03e4 2d47 ..... P.....=..-G 
0x0020: 8018 06b4 1a2a 0000 0101 080a 0140 eac6  .....*[email protected] 
0x0030: 00e7 68c1 4854 5450 2f31 2e31 2032 3030 ..h.HTTP/1.1.200 
0x0040: 204f 4b0d 0a44 6174 653a 2046 7269 2c20 .OK..Date:.Fri,. 
0x0050: 3130 204a 756c 2032 3030 3920 3130 3a32 10.Jul.2009.10:2 
0x0060: 303a 3136 2047 4d54 0d0a 5365 7276 6572 0:16.GMT..Server 
0x0070: 3a20 4170 6163 6865 2f32 2e30 2e35 3220 :.Apache/2.0.52. 
0x0080: 2852 6564 2048 6174 290d 0a4c 6173 742d (Red.Hat)..Last- 
0x0090: 4d6f 6469 6669 6564 3a20 4672 692c 2031 Modified:.Fri,.1 
0x00a0: 3020 4a75 6c20 3230 3039 2030 393a 3331 0.Jul.2009.09:31 
0x00b0: 3a30 3420 474d 540d 0a45 5461 673a 2022 :04.GMT..ETag:." 
0x00c0: 3266 6231 3333 2d37 372d 6131 3935 3436 2fb133-77-a19546 
0x00d0: 3030 220d 0a41 6363 6570 742d 5261 6e67  00"..Accept-Rang 
0x00e0: 6573 3a20 6279 7465 730d 0a43 6f6e 7465 es:.bytes..Conte 
0x00f0: 6e74 2d4c 656e 6774 683a 2031 3139 0d0a nt-Length:.119.. 
0x0100: 4b65 6570 2d41 6c69 7665 3a20 7469 6d65 Keep-Alive:.time 
0x0110: 6f75 743d 3135 2c20 6d61 783d 3130 300d out=15,.max=100. 
0x0120: 0a43 6f6e 6e65 6374 696f 6e3a 204b 6565 .Connection:.Kee 
0x0130: 702d 416c 6976 650d 0a43 6f6e 7465 6e74 p-Alive..Content 
0x0140: 2d54 7970 653a 2074 6578 742f 6874 6d6c -Type:.text/html 
0x0150: 3b20 6368 6172 7365 743d 4953 4f2d 3838  ;.charset=ISO-88 
0x0160: 3539 2d31 0d0a 0d0a 3c68 746d 6c3e 0a0a 59-1....<html>.. 
0x0170: 3c62 6f64 793e 0a49 6e64 6961 6e20 696e <body>.Indian.in 
0x0180: 7374 6974 7574 6520 6f66 2074 6563 686e stitute.of.techn 
0x0190: 6f6c 6f67 7920 2e2e 2e2e 2e20 7468 6973  ology.......this 
0x01a0: 2069 7320 7468 6520 7465 7374 2070 6167 .is.the.test.pag 
0x01b0: 652e 0a3c 4120 6872 6566 3d22 6164 2e68 e..<A.href="ad.h 
0x01c0: 746d 6c22 3e61 6263 643c 2f41 3e0a 0a3c tml">abcd</A>..< 
0x01d0: 2f62 6f64 793e 0a3c 2f68 746d 6c3e 0a   /body>.</html>. 

最後7-8行描述html數據。

使用-s0捕獲整個幀和-X打印在上面的ASCII人類可讀格式。

要獲得加密數據,應該使用帶選項-A(大寫字母a)的TCPDUMP。它傳輸沒有任何標題的文本,主要用於網頁。因此我們很容易得到響應頁面。

對於如:

我要求的index.html到172.31.9.84在端口80

然後我要求GET/index.html的(只包含文本的示例頁面「印度理工學院,這是測試頁」)

在這一刻,當我捕獲的數據包我得到的東西如:

Request: 

18:10:42.387426 IP 172.31.9.177.42943 > 172.31.9.84.80: 
P 1:15(14) ack 1 win 46 <nop,nop,timestamp 6644101 353753635> 
[email protected]@........T...P^R.Mb.L.....ke..... 
.ea....#GET /index.html 

Response: 

18:10:42.388127 IP 172.31.9.84.80 > 172.31.9.177.42943: P 1:53(52) 
ack 15 win 1448 <nop,nop,timestamp 353758368 6644101> 
[email protected]@.8m..T.. ..P..b.L.^R.[....d...... 
.....ea.<html> 

<body> 
Indian institute of technology this is the test page 
</body> 
</html> 
+0

非常感謝你的Udit。是的,我在OSI模型的兩層之間感到困惑。 –

+1

更好的是,使用'tcpdump -w'將軟件包完全記錄到文件中,然後使用'tcpdump -r'來恢復它們並通過迭代找到最佳的命令行選項以查看您想要查看的詳細信息。 –

+0

'你提到的html數據應該在tcp/udp/icmp數據包的數據部分中嗎?真的嗎?您認爲他可能訪問了一個網站,該網站使用封裝在... ICMP數據包中的HTML進行響應。不太可能。 ''''''''''''''''''''''''''''''''''''''''''你需要編寫腳本來從輸出結果中獲得它,你可以簡單地使用Wireshark。 –

2

當試圖獲得HTTP數據使用tcpdump的,你會看到C ^如果應用-A選項,則以ASCII格式查看文本。但是,HTTP數據幾乎總是使用gzip模式或其他模式壓縮。你可以看到它在頭:

內容編碼:gzip,壓縮,bzip2的

因此,tcpdump的會在你的屏幕上幾個字節輸出,他們是壓縮數據!您將需要使用tshark或wireshark來查看平面數據。那麼你的問題不是UTF8。

您可以在Apache Web服務器上測試tcpdump數據顯示禁用deflate模塊。

希望得到這個幫助。

+0

這確實有幫助。謝謝你Eriberto。 –