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"