tcpdump抓包


tcpdump簡單來說就是輸出網絡上的數據報文。可以根據使用者的選擇來對網絡上的數據報文進行截獲並進行分析。

可以根據網絡協議、物理接口、ip地址和端口號等各種條件進行過濾,還可以對抓獲報文大小進行控制,等等。

1. 抓取報文

最簡單的開始捕獲報文的方法是直接使用tcpdump並指定捕獲的網卡名稱即可。

tcpdump -i eth0

可以使用ctrl+c來結束捕獲程序。tcpdump的可視化輸出功能有限。通常是捕獲報文並保存下來,然后使用圖形用戶界面軟件wireshark來分析。

可以使用-w選項來指定文件名即可將報文保存下來。

tcpdump -i eth0 -s 1500 -w aaa.cap

tcpdump有很多參數來控制在哪里捕獲,如何捕獲,以及捕獲文件如何保存處理等選項,

-i interface 指定監聽的網卡

-s  指定每個報文中截取的數據長度,不是缺省的68字節。如果僅僅對報頭感興趣,可以不使用該選項,指定為0說明不限制報文長度,而是捕獲整個報文。一般以太網的MTU值為1500,因此指定長度為1500即可。

-w filename  報文保存到文件

-c 當收到指定報文個數后退出

-e 打印鏈接頭,如MAC地址(print the link-level header on each dump line. This can be used, to print MAC layer addresses for protocols)。

-n 不要將IP地址和端口號進行轉換,轉換需要CPU時間

-G <rotate_seconds> 每隔指定的時間,將捕獲的報文循環保存為新文件。需要-w配合使用,並指定時間格式才能循環保存文件,否則覆蓋原來文件。常用事件格式%d(每月中的第幾天),%H(當前的小時時間),%M(當前的分鍾時間),%S(當前的秒時間)。

-D 輸出tcpdump可以捕獲的接口列表,包含接口編號和接口名稱

-v 當解析或打印時輸出詳細的信息。例如報文的生存時間TTL、ID等IP報文選項。

-r 讀取有-w創建的報文

-t 不打印時間戳

tcpdump -i eth0 -s 1500 -G 60 -w  wang%H%M%s.pcap

tcpdump -i eth0 -n -v -c 500

2. 匹配規則

只有符合表達式要求的報文才會被抓取到。

表達式由一個或多個基本元素加上連接符組成,這些基本元素也稱為原語,是指不可分割的最小單元。基本元素由一個ID和一個或多個修飾符組成,有3種不同類型的修飾符。

第一種是類型修飾符,共4個類型修飾符,分別為host、net、port和portrange。

host指定要捕獲的主機或ip地址。

net需要捕獲報文的子網。

port和portrange分別用於指定端口和端口范圍。

第二種是傳輸方向的修飾符,包括src和dst。不僅可修飾地址,也可修飾端口。

tcpdump -i eth0 'dst port 80' -v
tcpdump -i eth0 'prot 5060 and src 192.168.1.100' -v

第三種是協議修飾符,可以基於特定的協議來進行過濾,可以是IP、ARP、RARP、ICMP、TCP和UDP等協議類型,如tcp port 21、udp port 5060等。

另外這些原語可以使用and(&&)、or(||)和not(!)來進行運算組合。所有的報文集合是全集,可以進行交、並和補集運算。在多個層次的集合運算時,可以使用小括號來分割其集合運算符的結合關系。

tcpdump -i eth0 -s0 -w wang.pcap host 10.0.0.15
tcpdump -i eth0 -w aaa.pcap port 59 or port 53 or port 80 or arp or icmp

 

摘自:智能路由器開發指南


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM