Tcpdump使用详解
生活随笔
收集整理的這篇文章主要介紹了
Tcpdump使用详解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
這個帖子發(fā)表在學(xué)校的清水河畔BBS上,轉(zhuǎn)載過來和大家分享。
?
-----------------華麗的分割線--------------------------------------------
?
Tcpdump?使用詳解
SYNOPSIS(概要)
tcpdump [ -ADeflnNqtvx ] [ -c count ] [ -i interface ] [ -r file ] [ -s snaplen]?
? ?? ?? ?[ -T type ] [ -w file ] [ expression ]?
選項 (OPTIONS)
-A?
Print each packet (minus its link level header) in ASCII.? Handy forcapturing web pages
[應(yīng)用]?在網(wǎng)關(guān)服務(wù)器中輸入:tcpdump–A src host 192.168.x.y [摘取]17:10:56.934040IP 192.168.x.y.icp > by2msg1231711.mixer.edge.messenger.live.com.msnp: . ack4165501895 win 64719 E..(..@...qF.......+.X.G...v.H..P....]........ [分析]以ASCII格式打印除鏈路層的頭部信息的包,這個選項更有益與web頁面的抓取.上面是我對源192.168.x.y包的抓取,一看就知道,它現(xiàn)在連接到MSN。 -e?
每行都顯示鏈路層報頭. [應(yīng)用] tcpdump?-e?src host 192.168.x.y [摘取]17:19:57.71846600:14:22:d2:9e:d0 (oui Unknown) > 00:c0:9f:40:29:6a (oui Unknown), ethertypeIPv4 (0x0800), length 60: 192.168.x.y.acp-conduit > 65.54.167.59.http: R2561727994:2561727994(0) ack 425901151 win 0 [分析]這是針對鏈路層包分析,看看是不是你想要的呢? -c?
當收到count個報文后 退出. [應(yīng)用] tcpdump -e?-c?2 src host 192.168.x.y [摘取] listening on eth0,link-type EN10MB (Ethernet), capture size 96 bytes 13:54:15.963937 IP192.168.x.y.ridgeway2 > 218.93.16.107.http: F 1728282061:1728282061(0) ack2139349129 win 65004 13:54:15.965416 IP192.168.x.y.gwen-sonya > 218.93.16.107.http: S 3089588305:3089588305(0) win65535 <mss 1460,nop,nop,sackOK> 2 packets captured 7 packets receivedby filter 0 packets droppedby kernel [分析]?看到?jīng)]有,我只要抓取兩個匹配包,就OK了。 -D Print the list ofthe network interfaces available on the system and on which tcpdump can??capture packets.? For each networkinterface, a number and an interface??name,?possibly?followed? by? a text description of the interface, is printed.?The interface name or the number can be supplied to the -i flag to specify aninterface on which to capture
[應(yīng)用] tcpdump?-D [摘取] 1.eth0 2.eth1 3.eth2 4.any(Pseudo-device that captures on all interfaces) 5.lo [分析]打印可以被tcpdump抓取的接口名稱??梢蕴峁┙o-i參數(shù),EX:tcpdump –i eth1 -i?
監(jiān)聽interface接口. 如果不指定接口, tcpdump在系統(tǒng)的接口清單中, 尋找號碼最小, 已經(jīng)配置好的接口(loopback 除外). 選中的時候會中斷連接. [應(yīng)用] tcpdump?–i?eth0 ip src 192.168.x.y [摘取] 14:01:15.700262 IP218.83.12.11.32785 > ns-pd.online.sh.cn.domain:? 29083+ PTR?20.152.83.218.in-addr.arpa. (44) [分析]抓取eth0接口的數(shù)據(jù)包
-f?
用數(shù)字形式顯示 '外部的' 互聯(lián)網(wǎng)地址, 而不是字符形式 (如:tcpdump-f?-i eth0 -c 4 src host 192.168.x.y) [應(yīng)用]tcpdump -i eth1?–f [摘取]?14:03:25.655826 IP207.46.124.244.msnp > 218.83.12.11.kpop: P 259:847(588) ack 1 win 64158 [分析]與前一個應(yīng)用對比,你能發(fā)現(xiàn)在摘取中的互聯(lián)網(wǎng)地址都會以IP顯示,而不在有域名啦。。。
-l?
行緩沖標準輸出. 可用于捕捉數(shù)據(jù)的同時查看數(shù)據(jù). 例如, [應(yīng)用]?tcpdump -i eth1 -f-l|tee tcpdump.log [摘取] tcpdump: verboseoutput suppressed, use -v or -vv for full protocol decode listening on eth1,link-type EN10MB (Ethernet), capture size 96 bytes 14:11:57.582718 14:11:58.058394802.1d config 81b6.00:1e:14:9f:f7:00.801a root 8000.00:04:80:78:c0:dd pathcost19 age 1 max 20 hello 2 fdelay 15 [分析]結(jié)合系統(tǒng)命令,使抓取分析數(shù)據(jù)更加靈活與強大,我愛這個功能…
-n?
不把地址轉(zhuǎn)換成名字 (如主機地址, 端口號等) [應(yīng)用]?tcpdump -i eth0src host 192.168.x.y -n [摘取]14:17:30.686094IP 192.168.x.y.10778 > 121.62.99.137.14808: UDP, length 1050
[分析]抓取的數(shù)據(jù)包不會將數(shù)字地址轉(zhuǎn)換成名字 -N 不顯示主機名字中的域名部分 [應(yīng)用]?tcpdump -i eth0src host 192.168.x.y -n [摘取]14:16:45.824513IP 192.168.x.y.alias > by1msg3145607.msnp: . ack 1894015094 win 64827 [分析]?抓取的數(shù)據(jù)包中不會將域名的部分顯示,看by1msg3145607.msnp,典型是省略了很長一段的域名部分(msn的)
-q?
快速輸出. 顯示較少的協(xié)議信息, 輸出行將短一點點. [應(yīng)用]?tcpdump -i eth0src host 192.168.x.y -q [摘取]14:21:48.669851IP 192.168.x.y.tgp > by1msg4082316.phx.gbl.msnp: tcp 0
[分析]打印較短的協(xié)議,用與快速分析。 -w?
把原始報文存進file, 不分析也不顯示. 它們可以以后用 -r 選項顯示. 如果 file 是 “-'', 就寫到標準輸出.(如:tcpdump -e src host 192.168.x.y?-w?/tmp/tcpdump.log) -r?
從file中讀入數(shù)據(jù)報 (文件是用 -w 選項創(chuàng)建的). 如果 file 是“-'', 就讀標準輸入. (如:tcpdump -e src host 192.168.x.y?-r/tmp/tcpdump.log) [分析]以上-w,-r,的作用是相反的,一個是將抓取的包寫入到指定文件,一個是根據(jù)上次寫入的文件來讀取分析。沒有上次的-w操作,-r是無法使用的,除非用”-”,不過如果你用more,cat是無法讀通這個文件的,不像用”|”,借助tee 可以為以后方便 -s Tcpdumpm默認捕獲并識別數(shù)據(jù)包的前96字節(jié)(頭部,非數(shù)據(jù)部分),如果你想讓其看到的更多,則可以使用-s number選項。如果number為0,則表示嗅探的長度為無限大。 -S 改變tcpdump顯示序列號(sequence number)由相對到絕對。
-t?
禁止顯示時戳標志. [應(yīng)用]?tcpdump -i eth0src host 192.168.x.y??-t [摘要] IP192.168.x.y.sonardata > 218.93.16.107.http: . ack 1225435221 win 65535 IP192.168.x.y.sonardata > 218.93.16.107.http: P 0:907(907) ack 1 win 65535 IP192.168.x.y.sonardata > 218.93.16.107.http: . ack 208 win 65328 [分析]看下面
-tt?
顯示未格式化的時戳標志. [應(yīng)用]?tcpdump -i eth0src host 192.168.x.y -tt [摘要] 1247207645.823506IP 192.168.x.y.isis > 61.172.205.8.msnp: . ack 53 win 64309 1247207645.840496IP 192.168.x.y.isis > 61.172.205.8.msnp: P 70:74(4) ack 123 win 64239 1247207645.881594IP 192.168.x.y.isis > 61.172.205.8.msnp: P 74:122(48) ack 123 win 64239 [分析]-t與-tt對比,一看就很清楚了,是時間顯示控制和時間格式控制
-v?
(稍微多一點) 繁瑣的輸出. 例如, 顯示IP數(shù)據(jù)報中的生存周期和服務(wù)類型.
-vv?
更繁瑣的輸出. 例如, 顯示NFS應(yīng)答報文的附加域.?
-x?
以十六進制數(shù)形式顯示每一個報文 (去掉鏈路層報頭后) . 可以顯示較小的完整報文 -X 同上,但是包括鏈路層報頭 -XX [分析]-v,-vv,-x通過上面的敘述,我想大家試一下,一定就會很明白了,至與那個選項更適合大家,那就是看應(yīng)用了,我想這些選項也夠大家用了吧!~反正夠我用了,呵呵!~ expression (表達式) 表達式是一個正則表達式,tcpdump利用它作為過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被dump。如果沒有給出任何條件,則網(wǎng)絡(luò)上所有的信息包將會被截獲。
express語法: [類型] [方向] [協(xié)議] ] 標識 expression由一個或多個原語 (primitive) 組成.?原語通常由一個標識(id,名稱或數(shù)字)和標識前面的一個或多個修飾字(qualifier) 組成. 修飾字有三種不同的類型:?
(1)type?
類型修飾字指出標識名稱或標識數(shù)字代表什么類型的東西. 可以使用的類型有host, net 和 port. 例如,`host foo', `net 128.3', `port 20'. 如果不指定類型修飾字, 就使用缺省的 host (2)Direction?
方向修飾字指出相對于標識的傳輸方向 (數(shù)據(jù)是傳入還是傳出標識). 可以使用的方向有 src, dst, src or dst 和 src and dst. 例如, `src foo', `dst net128.3', `src or dst port ftp-data'. 如果不指定方向修飾字, 就使用缺省的src or dst . 對于 `null' 鏈路層 (就是說 象 slip 之類的 點到點 協(xié)議), 用 inbound和outbound修飾字指定所需的傳輸方向.?
(3)proto 協(xié)議修飾字要求匹配指定的協(xié)議. 可以使用的協(xié)議有: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp 和 udp. 例如,ether src foo', `arp net 128.3',`tcp port 21'. 如果不指定協(xié)議修飾字, 就使用所有符合類型的協(xié)議. 例如,`src foo' 指 `(ip or arp or rarp) src foo', `net bar' 指 `(ip or arp or rarp) net bar', `port 53' 指`(tcp or udp) port 53'.?
[`fddi' 實際上 是 `ether' 的 別名; 分析器把它們視為 ``用在指定網(wǎng)絡(luò)接口上的數(shù)據(jù)鏈路層.'' FDDI 報頭包含類似于以太協(xié)議的源目地址, 而且通常包含 類似于以太協(xié)議的報文類型, 因此你可以分析 FDDI 域, 就象分析以太協(xié)議一樣.FDDI報頭也包含其他域, 但是你不能在過濾器表達式里顯式描述.]
作為上述的補充, 有一些特殊的 `原語' 關(guān)鍵字, 它們不同于上面的模式:gateway, broadcast, less, greater和數(shù)學(xué)表達式. 這些在后面有敘述.?
更復(fù)雜的過濾器表達式 可以通過 and, or 和 not?連接原語來組建. 例如,`host foo and not port ftp and not port ftp-data'. 為了少敲點鍵, 可以忽略相同的修飾子. 例如,`tcp dst port ftp or ftp-data or domain' 實際上 就是 `tcpdst port ftp or tcp dst port ftp-data or tcp dst port domain'.?
允許的 原語 有:?
dst host?host?
如果報文中IP的目的地址域是 host, 則邏輯為真. host既可以是地址, 也可以是主機名.?
src host?host?
如果報文中IP的源地址域 是 host, 則 邏輯為 真.?
host host?
如果報文中 IP的源地址域或者目的地址域是host, 則邏輯為真. 上面所有的 host 表達式 都可以加上 ip, arp, 或 rarp 關(guān)鍵字做前綴, 就象:?
ip host host?
如果host是擁有多個IP地址的主機名, 它的每個地址都會被查驗.?
dst net?net?
如果報文的IP目的地址屬于網(wǎng)絡(luò)號net, 則邏輯為真.?
src net?net?
如果 報文的 IP 源地址 屬于 網(wǎng)絡(luò)號 net, 則邏輯為真.?
net net?
如果報文的IP源地址或目的地址屬于網(wǎng)絡(luò)號 net, 則邏輯為真.?
net?net?mask?netmask (如net192.168.1.0 mask 255.255.255.128)
如果IP地址匹配指定網(wǎng)絡(luò)掩碼(netmask)的net, 則 邏輯為真. 本原語可以用src或 dst 修飾.?
net net/len?
如果IP地址匹配指定網(wǎng)絡(luò)掩碼的net, 則邏輯為真, 掩碼的有效位寬為len. 本原語可以用src或dst修飾.?
dst port?port?
如果報文是ip/tcp或ip/udp, 并且目的端口是port, 則邏輯為真. port是一個數(shù)字, 也可以是 /etc/services 中 說明過的名字(參看tcp(4P)和udp(4P)).如果使用名字, 則檢查端口號和協(xié)議. 如果使用數(shù)字, 或者有二義的名字, 則只檢查端口號(例如, dst port 513 將顯示 tcp/login的數(shù)據(jù) 和 udp/who 的數(shù)據(jù), 而 port domain 將顯示 tcp/domain 和 udp/domain 的數(shù)據(jù)).?
src port?port?
如果 報文 的 源端口號 是 port, 則 邏輯 為 真.?
port?port?
如果報文的源端口或目的端口是port, 則邏輯為真. 上述的任意一個端口表達式都可以用關(guān)鍵字tcp或udp做前綴,就象:?
tcp?src port port
它只匹配源端口是port的 TCP 報文.?
less?length?
如果 報文 的 長度 小于等于 length, 則 邏輯 為 真. 它等同于:?
len <= length.
greater length?
如果報文的長度大于等于 length, 則邏輯為真. 它等同于:?
len >= length.
原語可以用下述方法結(jié)合使用:?
圓括弧括起來的原語和操作符(園括弧在Shell中有特定含義, 所以必須轉(zhuǎn)義).?
取反操作 (`!' or `not').?
連結(jié)操作 (`&&' or `and').?
或操作 (`||' or `or').?
取反操作有最高優(yōu)先級. 或操作和連結(jié)操作有相同的優(yōu)先級, 運算時從左到右結(jié)合. 注意連結(jié)操作需要顯式的and算符, 而不是并列放置.?
如果給出標識符, 但沒給修飾符, 那么暗指最近使用的修飾符. 例如,?
not host vs and ace作為 not host vs and host ace的簡寫形式, 不應(yīng)該和 not ( host vs or ace )混淆.?
? tcpdump?的輸出結(jié)果介紹(OUTPUT FORMAT)
下面我們介紹幾種典型的tcpdump命令的輸出信息 (1)?數(shù)據(jù)鏈路層頭信息 使用命令#tcpdump -e host ice ice?是一臺裝有l(wèi)inux的主機,她的MAC地址是00:90:27:58:AF:1A H219是一臺裝有SOLARIC的SUN工作站,它的MAC地址是08:00:20:79:5B:46; 上一條命令的輸出結(jié)果如下所示: 21:50:12.847509 eth0 > 08:00:20:79:5b:4600:90:27:58:af:1a ip 60: h219.33357 > ice. telnet 0:0(0) ack 22535 win 8760 (DF) 分析:21:50:12是顯示的時間, 847509是ID號, eth0 >表示從網(wǎng)絡(luò)接口設(shè)備發(fā)送數(shù)據(jù)包(eth0??ice.telnet 表明該數(shù)據(jù)包是從主機H219的33357端口發(fā)往主機ICE的TELNET(23)端口. ack 22535表明對序列號是222535的包進行響應(yīng). win 8760表明發(fā)送窗口的大小是8760. (2) ARP包的TCPDUMP輸出信息 使用命令#tcpdump arp 得到的輸出結(jié)果是: 22:32:42.802509 eth0 > arp who-has h10tell ice (0:90:27:58:af:1a) 22:32:42.802902 eth0 表明從主機發(fā)出該數(shù)據(jù)包, arp表明是 ARP請求包, who-has h10 tell ice表明是主機ICE請求主機h10的MAC地址。 0:90:27:5 8:af:1a是主機ICE的MAC地址。 (3) TCP包的輸出信息 用TCPDUMP捕獲的TCP包的一般輸出信息是: src > dst: flags data-seqno ack windowurgent options 分析: src > dst:表明從源地址到目的地址, flags是TCP包中的標志信息,如:S 是SYN標志, F (F IN), P (PUSH) , R (RST) "." (沒有標記); data-seqno是數(shù)據(jù)包中的數(shù)據(jù)的順序號, ack是 下次期望的順序號, window是接收緩存的窗口大小, urgent表明數(shù)據(jù)包中是否有緊急指針. Options是選項. (4) UDP包的輸出信息 用TCPDUMP捕獲的UDP包的一般輸出信息是: H10.port1 > ice.port2: udp lenth UDP十分簡單,上面的輸出行表明從主機h10的port1端口發(fā)出的一個UDP數(shù)據(jù)包到主機 ICE的port2端口,類型是UDP, 包的長度是lenth example: 如果想要獲取主機61.151.247.124接收或發(fā)出的telnet包,使用如下命令 tcpdump tcp port 23 and host 61.151.247.124 tcpdump -n tcp port 23 and src host218.83.152.2 tcpdump -n -w /etc/tcpdump.log tcp port 23and src host 218.83.152.2 tcpdump -r /etc/tcpdump.log tcpdump -i eth0 -w tcpdump.log tcpdump -r tcpdump.log
顯示 所有 進出 sundown 的 報文:?
tcpdump host sundown
顯示helios和hot|ace之間的報文傳送:?
tcpdump host helios and \( hot or ace \)
顯示ace和除了helios 以外的所有主機的IP報文:?
tcpdump ip host ace and not helios?
轉(zhuǎn)載于:https://www.cnblogs.com/geekard/archive/2012/10/04/2711349.html
總結(jié)
以上是生活随笔為你收集整理的Tcpdump使用详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原博客地址
- 下一篇: 《你必须知道的261个java语言问题》