linux下的抓包工具。linux
抓包工具比較好用的有兩個,一個是snort,一個是tcpdump,此次不說snort了,以爲這個工具雖然很強大,可是比較複雜,仍是tcpdump比較簡單。tcpdump windows、linux版本均有。linux版本能夠在如下網站下載:www.tcpdump.org.express
安裝好tcpdump以後,運行tcpdump:windows
1. tcpdump -D 獲取網絡適配器列表,如下是在windows上獲取到的結果:網絡
1.\Device\PssdkLoopback (PSSDK Loopback Ethernet Emulation Adapter) 2.\Device\{CF587901-C85F-4FD6-896F-D977DEFE76EC} (Intel(R) PRO/100 VE Network Co nnection) |
2. tcpdump -i <須要監控的網絡適配器編號>,例如我想監控lo(127.0.0.1),即上面列表中的1.\Device\PssdkLoopback: (windows上特有的,linux不適用)tcp
tcpdump -i 1 |
若是不使用-i來定義監控適配器的話,默認使用列表中的第一個;工具
3. 監控主機爲192.9.200.59上8000端口的tcp協議:oop
tcpdump host 192.9.200.59 and tcp port 8000 |
4. 若是想要顯示數據包的內容,須要使用-X參數,如,我想要顯示捕獲的http數據包http header的內容:網站
tcpdump -X host 192.9.200.59 and tcp port 8000 |
顯示結果以下:xml
22:13:19.717472 IP testhost59.12535 > liujuan59.8000: . 1:330(329) ack 1 win 327 8 0x0000: 4500 0171 e616 0000 8006 cb2b 0000 0000 E..q.......+.... 0x0010: c009 c83b 30f7 1f40 0000 0002 0000 0002 ...;0..@........ 0x0020: 5010 8000 b066 0000 504f 5354 202f 2048 P....f..POST./.H 0x0030: 5454 502f 312e 310d 0a43 6f6e 7465 6e74 TTP/1.1..Content 0x0040: 2d54 7970 653a 2074 6578 742f 786d 6c3b -Type:.text/xml; 0x0050: 2063 .c |
能夠看到該結果只顯示了http頭的一部分,沒有顯示全,是由於tcpdump默認將顯示的數據長度截斷了,能夠使用-s後面加數據長度,來設置數據顯示長度:get
tcpdump -X -s 0 host 192.9.200.59 and tcp port 8000 |
以上的例子中,-s 0 表示自動設置長度使其可以顯示全部數據。
5. 捕獲的數據太多,不斷刷屏,可能須要將數據內容記錄到文件裏,須要使用-w參數:
tcpdump -X -s 0 -w aaa host 192.9.200.59 and tcp port 8000 |
則將以前顯示在屏幕中的內容,寫入tcpdump可執行文件同級目錄下的aaa文件中。
文件查看方式以下,須要使用-r參數:
tcpdump -X -s 0 -r aaa host 192.9.200.59 and tcp port 8000 |
若是這樣寫:
tcpdump -r aaa |
則只能看到最簡單的數據傳輸交互過程,看不到數據包內容,查看時也須要使用相應的參數。
6.總結
總結一下,tcpdump的參數分兩個部分,選項(Options)和表達式(expression):
tcpdump[ -adeflnNOpqRStuvxX] [ -c count]