tcpdump 命令

xie仗劍天涯發表於2017-03-10

tcpdump命令高階網路 tcpdump命令是一款sniffer工具,它可以列印所有經過網路介面的資料包的頭資訊,也可以使用-w選項將資料包儲存到檔案中,方便以後分析。

選項

-a:嘗試將網路和廣播地址轉換成名稱; 
-c<資料包數目>:收到指定的資料包數目後,就停止進行傾倒操作; 
-d:把編譯過的資料包編碼轉換成可閱讀的格式,並傾倒到標準輸出; 
-dd:把編譯過的資料包編碼轉換成C語言的格式,並傾倒到標準輸出; 
-ddd:把編譯過的資料包編碼轉換成十進位制數字的格式,並傾倒到標準輸出; 
-e:在每列傾倒資料上顯示連線層級的檔案頭; 
-f:用數字顯示網際網路地址; 
-F<表達檔案>:指定內含表達方式的檔案; 
-i<網路介面>:使用指定的網路截面送出資料包; 
-l:使用標準輸出列的緩衝區; 
-n:不把主機的網路地址轉換成名字; 
-N:不列出域名; 
-O:不將資料包編碼最佳化; 
-p:不讓網路介面進入混雜模式; 
-q :快速輸出,僅列出少數的傳輸協議資訊; 
-r<資料包檔案>:從指定的檔案讀取資料包資料; 
-s<資料包大小>:設定每個資料包的大小; 
-S:用絕對而非相對數值列出TCP關聯數; 
-t:在每列傾倒資料上不顯示時間戳記; 
-tt: 在每列傾倒資料上顯示未經格式化的時間戳記; 
-T<資料包型別>:強制將表達方式所指定的資料包轉譯成設定的資料包型別; 
-v:詳細顯示指令執行過程; 
-vv:更詳細顯示指令執行過程; 
-x:用十六進位制字碼列出資料包資料; 
-w<資料包檔案>:把資料包資料寫入指定的檔案。

例子

指定埠抓包

[root@layzj022301 ~]# tcpdump -i eth0

指定ip,截獲所有該IP的主機收到的和發出的所有的資料包(如IP =[221.176.33.133)

[root@layzj022301 ~]# tcpdump host 221.176.33.133

監視指定主機和埠的資料包

[root@layzj022301 ~]# tcpdump tcp port 22 and host 221.176.33.133

抓包tcpdump 與wireshark

[root@layzj022301 ~]# tcpdump tcp -i eth0 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
解析:
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個引數的位置,用來過濾資料包的型別
(2)-i eth0 : 只抓經過介面eth0的包
(3)-t : 不顯示時間戳
(4)-s 0 : 抓取資料包時預設抓取長度為68位元組。加上-S 0 後可以抓到完整的資料包
(5)-c 100 : 只抓取100個資料包
(6)dst port ! 22 : 不抓取目標埠是22的資料包
(7)src net 192.168.1.0/24 : 資料包的源網路地址為192.168.1.0/24
(8)-w ./target.cap : 儲存成cap檔案,方便用ethereal(即wireshark)分析

tcpdump --help

[root@study ~]# tcpdump --help
tcpdump version 4.1-PRE-CVS_2016_05_10
libpcap version 1.4.0
Usage: tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ -j tstamptype ] [ -M secret ]
                [ -Q|-P in|out|inout ]
                [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
                [ -W filecount ] [ -y datalinktype ] [ -z command ]
                [ -Z user ] [ expression ]
[root@study ~]#

相關文章