1、說明
tcpdump - dump traffic on a network
tcpdum option
tcpdump [-adeflnnopqstvx] [-c 數量
][-f
檔名][-i
網路介面
][-r
檔名][-s snaplen][-t
型別][-w
檔名][
表示式]
tcpdump可以將網路中傳送的資料報的「頭」完全截獲下來提供分析。它支援針對網路層、協議、主機、網路或埠的過濾,
並提供and、or
、not
等邏輯語句來幫助你去掉無用的資訊。
系統時間 **主機
.埠
>
目標主機
.埠 資料報引數
07:40:51.668134 ip 192.168.161.160 > 10.6.12.8: icmp echo request, id 12587, seq 5, length 64
07:40:51.671144 ip 10.6.12.8 > 192.168.161.160: icmp echo reply, id 12587, seq 5, length 64
用tcpdump
過濾出來的資料用
ethereal
來分析。
2、option
-a將網路位址和廣播位址轉變成名字;
-b在資料鏈路層上選擇協議,包括ip、
arp、
rarp
、ipx
都是這一層的
-d將匹配資訊包的**以人們能夠理解的彙編格式給出;
-dd將匹配資訊包的**以
c語言程式段的格式給出;
-ddd
將匹配資訊包的**以十進位制的形式給出;
-e在輸出行列印出資料鏈結層的頭部資訊;
-f將外部的
internet
位址以數字的形式列印出來;
-l使標準輸出變為緩衝行形式;
進行重定向
-n不把網路位址轉換成名字;
-nn不進行埠名稱的轉換。
-n不列印出缺省的網域名稱。
-s指定資料報的長度
-t在輸出的每一行不列印時間戳;
-tt列印原始的、未格式化過的時間。
-tttt
完整的時間格式
-v輸出乙個稍微詳細的資訊,例如在
ip包中可以包括
ttl和服務型別的資訊;
-vv輸出詳細的報文資訊;
-c在收到指定的包的數目後,
tcpdump
就會停止;
-f從指定的檔案中讀取表示式
,忽略其他的表示式;
-xprint packet format in hex and ascii.
-i指定監聽的網路介面;
-r從指定的檔中讀取包
(這些包一般通過
-w選項產生);
-w直接將包寫入檔中,並不分析和列印出來;
src、
dst、
port
、host
、net
、ether
、gateway
這幾個選項又分別包含
src、
dst
、port
、host
、net
、ehost
等子選項。他們用來分辨資料報的**和去向。
host
指定主機相關無論它是源還是目的,
net指定網路相關的,
ether
是實體地址,而
gateway
則用於閘道器。
ip icmp arp rarp和
tcp udp icmp
這些選項要放到第乙個引數位置,用來過濾資料報的型別。
-t將監聽到的包直接解釋為指定的型別的報文,常見的型別有
rpc(遠端過程)
3、表示式
1)表示式是乙個正規表示式,
tcpdump
利用它作為過濾報文的條件。
在表示式中一般有如下幾種型別的關鍵字,一種是關於型別的關鍵字,主要包括
host
,net
,port
;第二種是確定傳輸方向的關鍵字,主要包括
src,dst,dst or src, dst and src
;第三種是協議的關鍵字,主要包括
ip ,arp,rarp,tcp,udp
等型別。
還有其他關鍵字,
gateway, broadcast,less,greater,
還有三種邏輯運算,非
'not ' '! '
;與'and','&&'
;或'or' ,'||';2)
src > dst:
表明從源位址到目的位址
, flags
是tcp
包中的標誌資訊
,"." (
沒有標記),
s是syn標誌
, f (fin), p(push) , r (rst) ; data-seqno
是資料報中的資料的順序號
, ack
是下次期望的順序號
, window
是接收快取的視窗大小
, urgent
表明資料報中是否有緊急指標。
4、示例
1)tcpdump //
監聽所有資料報
2)tcpdump -b arp
3)tcpdump -i eth0 //
只顯示通過
eth0
介面上的所有報頭
4)src host 192.168.0.1 //
指定源主機
ip位址是
192.168.0.1
5)dst net 192.168.0.0/24 //
指定目標是網路
192.168.0.0
6)tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24
7)tcpdump ether src 00:50:04:ba:9b
8)tcpdump src host 192.168.0.1 and dst port not telnet //
過濾源主機
192.168.0.1
和目的埠不是
telnet
的報頭9)
tcpdump ip//
只過濾資料
-鏈路層上的
ip報頭。
10)tcpdump udp and src host 192.168.0.1 //
只過濾源主機
192.168.0.1
的所有udp
報頭。11)
tcpdump tcp port 23 host 210.27.48.1
12)tcpdump -w test.out -i eth0 tcp port 6881
13)tcpdump -w test.out -i eth0 tcp port 6881 or udp \( 33210 or 33220 \)
14)tcpdump -w test.out dst 10.168.28.22 and tcp port 22
15)tcpdump tcp portrange 20-24
16)tcpdump -s 1500 //-s 0
就可以按包長,擷取資料
17)tcpdump -l > dat & tail -f dat
」,例如
tcpdump -l |grep "sldfj"
18)tcpdump ip host 210.27.48.1 and !210.27.48.2
5、其他
1)在共享式的網路中,資訊包是會廣播到網路中所有主機的網路介面,在沒有使用
sniffer
工具之前,主機的網路裝置會判斷該資訊包是否應該接收,這樣它就會拋棄不應該接收的資訊包,
sniffer
工具卻使主機的網路裝置接收所有到達的資訊包,這樣就達到了網路監聽的效果。
2)顯然為了安全起見,不用作網路管理用途的計算機上不應該執行這一類的網路分析軟體,為了遮蔽它們,可以遮蔽核心中的
bpfilter
偽裝置。一般情況下網路硬體和
tcp/ip
堆疊不支援接收或傳送與本計算機無關的資料報,為了接收這些資料報,就必須使用網絡卡的混雜模式,並繞過標準的
tcp/ip
堆疊才行。在
freebsd
下,這就需要核心支援偽裝置
bpfilter
。因此,在核心中取消
bpfilter
支援,就能遮蔽
tcpdump
之類的網路分析工具。參考【
1】 】
】 後面的討論不錯
】 】
tcpdump簡單使用
1.基本命令 1 列出可監控的網絡卡介面 any包含所有active的介面 tcpdump list inte ces tcpdump d 2 監控any介面且只輸出前5條記錄 c引數 count tcpdump i any c 5 3 預設tcpdump會將ip port解析為name,禁用該解析...
tcpdump使用詳解
tcpdump採用命令列方式,它的命令格式為 tcpdump adeflnnopqstvx c 數量 f 檔名 i 網路介面 r 檔名 s snaplen t 型別 w 檔名 表示式 1.tcpdump的選項介紹 a 將網路位址和廣播位址轉變成名字 d 將匹配資訊包的 以人們能夠理解的彙編格式給出 ...
tcpdump 日常使用
使用 i引數指定tcpdump監聽的網路介面,這在計算機具有多個網路介面時非常有用,使用 c引數指定要監聽的資料報數量,使用 w引數指定將監聽到的資料報寫入檔案中儲存 a想要截獲所有210.27.48.1 的主機收到的和發出的所有的資料報 tcpdump host 210.27.48.1 b想要截獲...