【Linux】tcpdump命令詳解

foreverfriends發表於2018-02-22

tcpdump可以將網路中傳送的資料包的“頭”完全截獲下來提供分析。

它支援針對網路層、協議、主機、網路或埠的過濾,並提供and、or、not等邏輯語句幫你過濾到無用的資訊。

 

實用命令例項

1.普通情況下,直接啟動tcpdump將監視第一個網路埠所有流過的資料包。

tcpdump

2.如果不指定網路卡,預設tcpdump只會監視第一個網路介面,一般是eth0.

tcpdump -i eth0 

3.監視所有進入或離開主機A04-Test-172的資料包。A04-test-172為主機名。

tcpdump  host  A04-Test-172

4.也可以指定ip,截獲主機192.168.1.1收到和發出的所有資料包。

tcpdump host  192.168.1.1

5.列印helios與hot或者與ace之間通訊的資料包

tcpdump  host  helios  and  (hot or ace)

6.截獲主機192.168.1.1和192.168.1.2或192.168.1.3的通訊包

tcpdump host  192.168.1.1  and (192.168.1.2  or 192.168.1.3)

7.列印ace與任何其他主機之間通訊的IP資料包,但不包括與helios之間的通訊包

tcpdump  ip  host ace  and not  helios

8.如果想截獲主機192.168.1.1除了和192.168.1.2之外所有的主機通訊的ip包

tcpdump  ip host 192.168.1.1  and  ! 192.168.1.2

9.截獲主機hostname傳送的所有資料

tcpdump  -i eth0  src  host  hostname

10.截獲送到主機hostname的所有資料

tcpdump  -i eth0  dst  host  hostname

 

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

11.獲取主機192.168.1.1傳送和收到的telnet包

tcpdump  tcp port 23 and  host  192.168.1.1

12.對本機udp的123埠進行監視(123為ntp服務埠)

tcpdump udp  port 123

 

監視指定網路的資料包

13.列印本地主機與Berkely網路上的主機之間的所有通訊資料包(nt:ucb-ether, 表示Berkely的網路地址)

tcpdump net ucb-ether

14.列印所有通過閘道器snup的ftp資料包(表示式被單引號括起來,防止shell對括號進行錯誤解析)

tcpdump  'gateway snup and (port ftp or ftp-data)'

 15.列印所有源地址或目標地址是本地主機的ip資料包(localnet實際使用時替換為本地網路的名字)

tcpdump ip and  not net  localnet

 

監視指定協議的資料包

16.列印TCP會話中開始和結束的資料包,並且資料包的源或目的不是本地網路上的主機(localnet實際使用時替換為本地網路的名字)

tcpdump  'tcp[tcpflags]'

17.列印所有源或目標埠是80,網路層協議為IPv4,並且含有資料,而不是SYN,FIN以及ACK-only等不含資料的資料包

ip[2:2] 表示整個ip資料包的長度

tcpdump  'tcp port 80 and  (((ip[2:2]  -  ((ip[0]'

18.列印長度超過576位元組,並且閘道器地址是snup的IP資料包

tcpdump   'gateway  snup  and  ip[2:2] > 576'

19.列印所有IP層廣播或多播的資料包,但不是物理乙太網層的廣播或多播資料包

tcpdump 'ether[0]'

20.列印除‘echo  request’或者'echo reply'型別以外的ICMP資料包

tcpdump 'icmp[icmptype]  !=icmp-echo and icmp[ucmptype]  !=icmp-echoreply'

 

tcpdump與Wireshark

21.可將二者進行結合,在Linux中抓包,在windows中分析包

tcpdump tcp -i eth1 -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 eth1 : 只抓取經過eth1的包

(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)分析

 

過濾TCP SYN,ACK或FIN包。

22.只捕獲TCP SYN包

tcpdump  -i  <interface>  "tcp[tcpflags] & (tcp-syn) !=0"

23.只捕獲TCP ACK包

tcpdump  -i  <interface>  "tcp[tcpflags] & (tcp-ack) !=0"

24.只捕獲TCP FIN包

tcpdump  -i  <interface>  "tcp[tcpflags] & (tcp-fin) !=0"

25.捕獲TCP ACK或SYN包

tcpdump  -i  <interface>  "tcp[tcpflags] & (tcp-syn|tcp-ack) !=0"

 

相關文章