tcpdump使用實例

以下將給出9個使用tcpdump的例子,以說明tcpdump的具體使用方法。

 

1.針對特定網口抓包(-i選項)

當我們不加任何選項執行tcpdump時,tcpdump將抓取通過所有網口的包;使用-i選項,我們可以在某個指定的網口抓包:

複製代碼
linux:/tmp/lx # tcpdump -i eth0tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes10:50:28.607429 IP 10.70.121.92.autodesk-lm > 10.71.171.140.ssh: . ack 116 win 6495110:50:28.607436 IP 10.71.171.140.ssh > 10.70.121.92.autodesk-lm: P 116:232(116) ack 1 win 1286410:50:30.384195 arp who-has 128.128.128.35 tell 128.128.128.35
複製代碼

以上例子中,tcpdump抓取所有通過eth0的包。

 

2.抓取指定數目的包(-c選項)

默認情況下tcpdump將一直抓包,直到按下”ctrl+c”中止,使用-c選項我們可以指定抓包的數量:

複製代碼
linux:/tmp/lx # tcpdump -c 2 -i eth0tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes10:58:05.656104 IP 10.71.171.140.ssh > 10.70.121.92.autodesk-lm: P 1210443473:1210443589(116) ack 2583117929 win 1286410:58:05.657074 IP 10.70.121.92.autodesk-lm > 10.71.171.140.ssh: . ack 116 win 652112 packets captured6 packets received by filter0 packets dropped by kernel
複製代碼

以上例子中,只針對eth0網口抓2個包。

 

3.將抓到包寫入文件中(-w選項)

使用-w選項,我們可將抓包記錄到一個指定文件中,以供後續分析

複製代碼
linux:/tmp/lx # tcpdump -w 20120606.pcap -i eth0tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes75 packets captured150 packets received by filter0 packets dropped by kernel
複製代碼

應當保存爲.pcap後綴的文件,方便我們使用wireshark等工具讀取分析。

 

4.讀取tcpdump保存文件(-r選項)

對於保存的抓包文件,我們可以使用-r選項進行讀取:

複製代碼
linux:/tmp/lx # tcpdump -r 20120606.pcapreading from file 20120606.pcap, link-type EN10MB (Ethernet)11:01:57.392907 IP 10.71.171.140.ssh > 10.70.121.92.autodesk-lm: P 1210446405:1210446457(52) ack 2583119957 win 1286411:01:57.392917 IP 10.71.171.140.ssh > 10.70.121.92.autodesk-lm: P 52:168(116) ack 1 win 1286411:01:57.393649 IP 10.70.121.92.autodesk-lm > 10.71.171.140.ssh: . ack 52 win 65327
複製代碼

 

5.抓包時不進行域名解析(-n選項)

默認情況下,tcpdump抓包結果中將進行域名解析,顯示的是域名地址而非ip地址,使用-n選項,可指定顯示ip地址。

 

6.增加抓包時間戳(-tttt選項)

使用-tttt選項,抓包結果中將包含抓包日期:

linux:/tmp/lx # tcpdump -n -tttt -i eth02012-06-0611:14:59.539736 IP 10.71.171.140.22 > 10.70.121.95.1787: P 1:53(52) ack 100 win 75042012-06-0611:14:59.539754 IP 10.71.171.140.22 > 10.70.121.95.1787: P 53:105(52) ack 100 win 75042012-06-0611:14:59.539770 IP 10.71.171.140.22 > 10.70.121.95.1787: P 105:157(52) ack 100 win 7504

 

7.指定抓包的協議類型

我們可以只抓某種協議的包,tcpdump支持指定以下協議:ip,ip6,arp,tcp,udp,wlan等。以下例子只抓取arp協議的包:

複製代碼
linux:/tmp/lx # tcpdump -i eth0 arptcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes11:22:26.948656 arp who-has 10.10.1.30 tell 10.10.1.2611:22:27.017406 arp who-has 10.10.1.30 tell 10.10.1.2611:22:27.078803 arp who-has 10.10.1.30 tell 10.10.1.26
複製代碼

 

8.指定抓包端口

如果想要對某個特定的端口抓包,可以通過以下命令:

複製代碼
linux:/tmp/lx # tcpdump -i eth0 port 22tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes11:41:04.387547 IP 10.70.121.92.autodesk-lm > 10.71.171.140.ssh: . ack 1216136825 win 6475111:41:04.387891 IP 10.71.171.140.ssh > 10.70.121.92.autodesk-lm: P 1:233(232) ack 0 win 1608011:41:04.398973 IP 10.70.121.92.autodesk-lm > 10.71.171.140.ssh: P 0:52(52) ack 233 win 64519
複製代碼

 

9.抓取特定目標ip和端口的包

網絡包的內容中,包含了源ip地址、端口和目標ip、端口,我們可以根據目標ip和端口過濾tcpdump抓包結果,以下命令說明了此用法:

linux:/tmp/lx # tcpdump -i eth0 dst 10.70.121.92 and port 22

 

**********************************************************************************************************************

先來看一個比較基本的用法:

tcpdump -i eth0

其中,eth0爲參數值,表示需要抓包的網口,這是個必需參數哦。

tcpdump支持很多的關鍵字,下面先看幾個例子:

(例1)tcpdump -i eth0 host 192.168.0.250 -----在網口eth0上抓取主機地址爲192.168.0.250的所有數據包

(例2)tcpdump -i eth0 net 192.168.0.0/24 ------ 在網口eth0上抓取網絡地址爲192.168.0.0/24的所有數據包

(例3)tcpdump -i eth0 port 80 ------ 在網口eth0上抓取端口爲80的所有數據包(注意,這裏不區分是源端口還是目的端口)

當然,我們也可以指定源端口或目的端口

(例4)tcpdump -i eth0 src port 80 and dst port6100 --- 在網口eth0上抓取源端口爲80且目的端口爲6100的數據包,這裏用到了and邏輯運算符,後面再介紹

(例5)tcpdump -i eth0 icmp --- 在網口eth0上抓取所有icmp協議的數據包

以上幾個例子,可以大致體現出tcpdump的基本用法。

除了這三種類型的關鍵字外,還有其他重要的關鍵字,如:gateway,broadcast,less,greater,還有三種邏輯運算,取非運算是'not'、'!',與運算符是'and'、'&&'、

或運算符是'or'、'||',這些關鍵字可以組合起來構成強大的組合條件來滿足我們的需求。

先看看tcpdump的具體參數及意義:

-i:指定tcpdump監聽的網絡接口

-s:指定要監聽數據包的長度

-c:指定要監聽的數據包數量,達到指定數量後自動停止抓包

-w:指定將監聽到的數據包寫入文件中保存

-A:指定將每個監聽到的數據包以ACSII可見字符打印

-n:指定將每個監聽到數據包中的域名轉換成IP地址後顯示

-nn:指定將每個監聽到的數據包中的域名轉換成IP、端口從應用名稱轉換成端口號後顯示

-e:指定將監聽到的數據包鏈路層的信息打印出來,包括源mac和目的mac,以及網絡層的協議

-p:將網卡設置爲非混雜模式,不能與host或broadcast一起使用

-r:指定從某個文件中讀取數據包

-S:指定打印每個監聽到的數據包的TCP絕對序列號而非相對序列號

 

 

OK,參數介紹先到這裏,下面看幾個具體例子

 

tcpdump -i eth0 -s 1400 -nn host 192.168.0.250 and ! 192.168.0.74 and icmp -e

抓取網口eth0上192.168.0.250與除192.168.0.74外的其他主機之間的icmp報文

 

tcpdump -i eth0 -s 1400 -nn tcp and \(host 192.168.0.250 and ! 192.168.0.74\)

抓取網口eth0上192.168.0.250與除192.168.0.74外的所有tcp數據包,這裏用到了括號,注意,在tcpdump中使用括號時必須用轉義

tcpdump -i eth0 ether src or dst 00:21:85:6C:D9:A3

抓取網口eth0上源mac地址或目的mac地址爲00:21:85:6C:D9:A3的所有數據包,注意,這裏的mac地址格式必須以':'分隔。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章