tcpdump 常用命令
參數:
tcpdump的選項
-a 將網絡地址和廣播地址轉變成名字
-d 將匹配信息包的代碼以人們能夠理解的匯編格式給出
-dd 將匹配信息包的代碼以c語言程序段的格式給出
-ddd 將匹配信息包的代碼以十進制的形式給出
-e 在輸出行打印出數據鏈路層的頭部信息,包括源mac和目的mac,以及網絡層的協議
-f 將外部的Internet地址以數字的形式打印出來
-l 使標準輸出變為緩沖行形式
-n 指定將每個監聽到數據包中的域名轉換成IP地址后顯示,不把網絡地址轉換成名字
-t 在輸出的每一行不打印時間戳
-v 輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息
-vv 輸出詳細的報文信息
-c 在收到指定的包的數目后,tcpdump就會停止
-F 從指定的文件中讀取表達式,忽略其它的表達式
-i 指定監聽的網絡接口
-p 將網卡設置為非混雜模式,不能與host或broadcast一起使用
-r 從指定的文件中讀取包(這些包一般通過-w選項產生)
-w 直接將包寫入文件中,并不分析和打印出來
-s snaplen表示從一個包中截取的字節數。0表示包不截斷,抓完整的數據包。默認的話 tcpdump 只顯示部分數據包,默認68字節
-T 將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠程過程調用)和snmp(簡單網絡管理協議)
-X 告訴tcpdump命令,需要把協議頭和包內容都原原本本的顯示出來(tcpdump會以16進制和ASCII的形式顯示)-vvv:產生比-vv更詳細的輸出。
-XX:輸出包的頭部數據,會以16進制和ASCII兩種方式同時輸出。
-nn :直接以IP以及PORT number顯示,而非主機名與服務名稱
關鍵字:
主機:host、src host、dst host
網段:net、src net、dst net
端口:port、src port、dst port
協議:ip、arp、icmp、tcp、udp、ip6
表達式:and or not,也可以是&& || ! 來表示
TCP Flags:tcp[tcpflags]
//獲取 br0 設備所有數據 時間 1500秒 保存文件名稱 test.pcap
./tcpdump -i br0 -s 1500 -w test.pcap
//獲取環網數據 IP 127.0.0.1 端口 12766 數據并顯示 包頭 和 負載
./tcpdump -i lo port 12766 -XX -v -nn
//獲取 目的主機為 172.16.1.1 端口為 80 的包
tcpdump -i eth1 src host 172.16.1.1 and port 80
//獲取目的主機是172.16.1.1 且 源主機是1.2 或 1.3 的包
tcpdump -i eth1 dst host 172.16.1.1 and src host / (172.16.1.2 or 172.16.1.3 /)
//獲取 源端口為 80的包
tcpdump -i eth1 src port 80
//抓取所有經過eth1的、協議相關的操作
tcpdump -i eth1 ip
tcpdump -i eth1 icmp
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
//抓取回環網口的包:
tcpdump -i lo
//防止包截斷:
tcpdump -s0
//以數字顯示主機及端口:
tcpdump -n
// -l 參數 結合 管道處理數據
// 過濾數據長度為88 的包
tcpdump -i lo udp -v -nn -l | grep "length 88"
tcpdump -i lo udp -X -v -nn -l | awk '{print $1}'
//過濾源主機mac為00:00:00:11:22的報頭
tcpdump ether src 00:00:00:11:22
//基于網段過濾 過濾所有172.16.1.*
tcpdump net 172.16.1.0/24
//找出一段時間內發包最多的 IP,或者從一堆報文中找出發包最多的 IP,可以使用下面的命令:
$ tcpdump -nnn -t -c 200 | cut -f 1,2,3,4 -d '.' | sort | uniq -c | sort -nr | head -n 20
cut -f 1,2,3,4 -d '.' : 以 . 為分隔符,打印出每行的前四列。即 IP 地址。sort | uniq -c : 排序并計數sort -nr : 按照數值大小逆向排序
//指定具體數據
// tcp包長度 > 100
./tcpdump -i br0 -XX -n port 80 and 'tcp[2:2]>100'
// 過濾 udp 負載長度? = 12
// UDP包結構? (長度 = UDP包頭長度 8 + 負載長度)第5個字節開始計算,數組坐標從0開始計算
| 源端口 2 | 目的端口 2 | 長度2 | 校驗和2 | 負載 |
//所有負載長度=12 -->? udp數據包的長度 = 8 + 12 = 20
//負載數據偏移地址 = udp[8+N:L]?? (N=0 是數據部分起始地址 L是截取數據部分長度)
./tcpdump -i br0 -XX -n port 80 and 'udp[4:2]=20'
//ip長度 20 只抓取 udp 數據 協議部分要寫在最前頭
./tcpdump udp? -i br0 -XX -n port 80 and 'ip[2:2]=20'
參考:https://baijiahao.baidu.com/s?id=1671144485218215170&wfr=spider&for=pchttps://baijiahao.baidu.com/s?id=1671144485218215170&wfr=spider&for=pc
總結
以上是生活随笔為你收集整理的tcpdump 常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 直播网站LiveTV Mining,爬虫
- 下一篇: 电大实训平台计算机专业考核答题,新疆电大