tcpdump 強大的功能和靈活的策略,主要體現(xiàn)在過濾器(BPF)強大的表達式組合能力。
本節(jié)主要分享一些常見的所謂高級用法,希望讀者能夠舉一反三,根據(jù)自己實際需求,來靈活使用它。
1. 抓取指定客戶端訪問 ssh 的數(shù)據(jù)包
$tcpdump-nieth0src192.168.1.100anddstport22
2. 抓取從某個網(wǎng)段來,到某個網(wǎng)段去的流量
$tcpdump-nieth0srcnet192.168.1.0/16anddstnet10.0.0.0/8or172.16.0.0/16
3. 抓取來自某個主機,發(fā)往非 ssh 端口的流量
$tcpdump-nieth0src10.0.2.4andnotdstport22
4. 當構建復雜查詢的時候,你可能需要使用引號,單引號告訴 tcpdump 忽略特定的特殊字符,這里的 () 就是特殊符號,如果不用引號的話,就需要使用轉義字符
$tcpdump-nieth0
'src10.0.2.4and(dstport3389or22)'
5. 基于包大小進行篩選,如果你正在查看特定的包大小,可以使用這個參數(shù)
小于等于 64 字節(jié):
$tcpdump-niless64
大于等于 64 字節(jié):
$tcpdump-nieth0greater64
等于 64 字節(jié):
$tcpdump-nieth0length==64
6. 過濾 TCP 特殊標記的數(shù)據(jù)包
抓取某主機發(fā)送的 RST 數(shù)據(jù)包:
$tcpdump-nieth0srchost192.168.1.100and
'tcp[tcpflags]&(tcp-rst)!=0'
抓取某主機發(fā)送的 SYN 數(shù)據(jù)包:
$tcpdump-nieth0srchost192.168.1.100and
'tcp[tcpflags]&(tcp-syn)!=0'
抓取某主機發(fā)送的 FIN 數(shù)據(jù)包:
$tcpdump-nieth0srchost192.168.1.100and
'tcp[tcpflags]&(tcp-fin)!=0'
抓取 TCP 連接中的 SYN 或 FIN 包
$tcpdump
'tcp[tcpflags]&(tcp-syn|tcp-fin)!=0'
7. 抓取所有非 ping 類型的 ICMP 包
$tcpdump
'icmp[icmptype]!=icmp-echoandicmp[icmptype]!=icmp-echoreply'
8. 抓取端口是 80,網(wǎng)絡層協(xié)議為 IPv4, 并且含有數(shù)據(jù),而不是 SYN、FIN 以及 ACK 等不含數(shù)據(jù)的數(shù)據(jù)包
$tcpdump
'tcpport80and(((ip[2:2]-((ip[0]&0xf)<<2))?-?((tcp[12]&0xf0)>>2))!=0)'
解釋一下這個復雜的表達式,具體含義就是,整個 IP 數(shù)據(jù)包長度減去 IP 頭長度,再減去 TCP 頭的長度,結果不為 0,就表示數(shù)據(jù)包有 data,如果還不是很理解,需要自行補一下 tcp/ip 協(xié)議
9. 抓取 HTTP 報文,0x4754 是 GET 前兩字符的值,0x4854 是 HTTP 前兩個字符的值
$tcpdump-nieth0
'tcp[20:2]=0x4745ortcp[20:2]=0x4854'
-
嵌入式
+關注
關注
5210文章
20680瀏覽量
337362 -
Linux
+關注
關注
88文章
11822瀏覽量
219600 -
網(wǎng)絡
+關注
關注
14文章
8340瀏覽量
95600 -
數(shù)據(jù)包
+關注
關注
0文章
270瀏覽量
25663
發(fā)布評論請先 登錄
Arduino串口高級用法,你都掌握了嗎?
tcpdump命令介紹
ActiveMQ高級用法
tcpdump的安裝以及通過實例來演示如何使用 tcpdump 命令
網(wǎng)絡行抓包分析工具tcpdump安裝介紹
tcpdump常見的高級用法
評論