強大的抓包工具, 博大精深内容太多, 是以這篇部落格整理得隻說常用, 具體的參考tcpdump使用者手冊,
tcpdump需要root權限, 是以記得加上sudo
常用參數
-
-nn選項:
意思是說當tcpdump遇到協定号或端口号時,不要将這些号碼轉換成對應的協定名稱或端口名稱。比如,大家都知道80是http端口,tcpdump就不會将它顯示成http了
-
-c選項:
是Count的含義,這設定了我們希望tcpdump幫我們抓幾個包。
- -i : 指定哪一張網卡
- -l : 使得輸出變為行緩沖
- -t : 輸出時不列印時間戳
- -v : 輸出更詳細的資訊
- -F : 指定過濾表達式所在的檔案, 可以建立了一個filter.txt文本檔案來存儲過濾表達式,然後通過-F來指定filter.txt
- -w : 将流量儲存到檔案中
- -r : 讀取raw packets檔案
常用過濾規則
-
隻看到目的機器dst(比如是qq.com)之間的網絡包
sudo tcpdump -i eth0 ‘dst qq.com’ 也可以寫成 sudo tcpdump -i eth0 ‘dst host qq.com’
注 : 上述的那個host可以省略
tcpdump支援如下的類型:
1. host:指定主機名或IP位址,例如’host roclinux.cn’或’host 202.112.18.34′
2. net :指定網絡段,例如’arp net 128.3’或’dst net 128.3′
3. portrange:指定端口區域,例如’src or dst portrange 6000-6008′
4. port : 端口
如果我們沒有設定過濾類型,那麼預設是host。
-
隻抓udp的包
sudo tcpdump -i eth0 ‘udp’
tcpdump具有根據網絡包的協定來進行過濾的能力,我們還可以把udp改為ether、ip、ip6、arp、tcp、rarp等
-
隻抓目的機器的某個端口的包(比如隻抓baidu.com的53或者80端口的包)
sudo tcpdump -i eth0 ‘dst baidu.com and (dst port 53 or dst port 80)’
-
通過eth0網卡的,且來源是qq.com伺服器或者目标是qq.com伺服器的網絡包
sudo tcpdump -i eth0 ‘host qq.com’
-
通過eth0網卡的,且qq.com和baidu.com之間通訊的網絡包,或者qq.com和sina.cn之間通訊的網絡包
tcpdump -i eth0 ‘host qq.com and (baidu.com or sina.cn)’
-
擷取和baidu.com之間建立TCP三向交握中第一個網絡包,即帶有SYN标記位的網絡包
sudo tcpdump -i eth0 ‘tcp[tcpflags] & tcp-syn != 0 and dst host baidu.com’
注 :
因為用proto [ expr : size]文法在寫過濾表達式時,你需要把協定格式完全背在腦子裡,才能把表達式寫對。可這對大多數人來說,可能有些困難。為了讓tcpdump工具更人性化一些,有一些常用的偏移量,可以通過一些名稱來代替,比如icmptype表示ICMP協定的類型域、icmpcode表示ICMP的code域,tcpflags則表示TCP協定的标志字段域。
更進一步的,對于ICMP的類型域,可以用這些名稱具體指代:icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-redirect, icmp-echo, icmp-routeradvert, icmp-routersolicit, icmp-timxceed, icmp-paramprob, icmp-tstamp, icmp-tstampreply, icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply。
而對于TCP協定的标志字段域,則可以細分為tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg。
輸出内容解釋
[email protected]:~$ sudo tcpdump -i eth0 'host baidu.com'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
:: IP > .http: Flags [S], seq , win , options [mss ,sackOK,TS val ecr ,nop,wscale ], length
:: IP .http > : Flags [S.], seq , ack , win , options [mss ,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale ], length
:: IP > .http: Flags [.], ack , win , length
:: IP > .http: Flags [P.], seq :, ack , win , length
:: IP .http > : Flags [.], ack , win , length
:: IP .http > : Flags [P.], seq :, ack , win , length
:: IP > .http: Flags [.], ack , win , length
:: IP .http > : Flags [P.], seq :, ack , win , length
:: IP > .http: Flags [.], ack , win , length
:: IP .http > : Flags [P.], seq :, ack , win , length
:: IP > .http: Flags [.], ack , win , options [nop,nop,sack {:}], length
:: IP > .http: Flags [.], ack , win , length
:: IP .http > : Flags [.], ack , win , length
:: IP > .http: Flags [.], ack , win , length
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQ3chVEa0V3bT9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVPnhVY6lTbiZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DO5IjNzcjM3ATOygDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)