我的java天地

          Tcpdump 使用手冊(cè)

          Tcpdump

          SYNOPSIS(
          概要)
          tcpdump [ -ADeflnNqtvx ] [ -c count ]
          ? ?? ?? ?[ -i interface ] [ -r file ] [ -s snaplen ]
          ? ?? ?? ?[ -T type ] [ -w file ] [ expression ]
          選項(xiàng) (OPTIONS)
          -A
          Print each packet (minus its link level header) in ASCII.? Handy for capturing web pages
          [
          應(yīng)用] 在網(wǎng)關(guān)服務(wù)器中輸入:tcpdump –A src host 192.168.x.y
          [ 摘取 ]17:10:56.934040 IP 192.168.x.y.icp > by2msg1231711.mixer.edge.messenger.live.com.msnp: . ack 4165501895 win 64719
          E..(..@...qF.......+.X.G...v.H..P....]........
          [ 分析 ] ASCII格式打印除鏈路層的頭部信息的包,這個(gè)選項(xiàng)更有益與web頁(yè)面的抓取.上面是我對(duì)源192.168.x.y包的抓取,一看就知道,它現(xiàn)在連接到MSN
          -e
          每行都顯示鏈路層報(bào)頭.
          [ 應(yīng)用 ] tcpdump -e src host 192.168.x.y
          [ 摘取 ]17:19:57.718466 00:14:22:d2:9e:d0 (oui Unknown) > 00:c0:9f:40:29:6a (oui Unknown), ethertype IPv4 (0x0800), length 60: 192.168.x.y.acp-conduit > 65.54.167.59.http: R 2561727994:2561727994(0) ack 425901151 win 0
          [ 分析 ] 這是針對(duì)鏈路層包分析,看看是不是你想要的呢?
          -c
          當(dāng)收到count個(gè) 報(bào)文 后 退出.
          [ 應(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 IP 192.168.x.y.ridgeway2 > 218.93.16.107.http: F 1728282061:1728282061(0) ack 2139349129 win 65004
          13:54:15.965416 IP 192.168.x.y.gwen-sonya > 218.93.16.107.http: S 3089588305:3089588305(0) win 65535 <mss 1460,nop,nop,sackOK>
          2 packets captured
          7 packets received by filter
          0 packets dropped by kernel
          [ 分析 ] 看到?jīng)]有,我只要抓取兩個(gè)匹配包,就OK了。?????
          -D?? Print? the? list? of? the network interfaces available on the system and on which tcpdump can
          ???? capture packets.? For each network interface, 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 an interface 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抓取的接口名稱。可以提供給-i參數(shù),EX:tcpdump –I eth1
          -i
          監(jiān)聽(tīng)interface接口. 如果不指定接口, tcpdump在系統(tǒng)的接口清單中, 尋找號(hào)碼最小, 已經(jīng)配置好的接口(loopback 除外). 選中的時(shí)候會(huì)中斷連接.
          [ 應(yīng)用 ] tcpdump –i eth0 ip src 192.168.x.y
          [ 摘取 ]
          14:01:15.700262 IP 218.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 IP 207.46.124.244.msnp > 218.83.12.11.kpop: P 259:847(588) ack 1 win 64158
          [ 分析 ] 與前一個(gè)應(yīng)用對(duì)比,你能發(fā)現(xiàn)在摘取中的互聯(lián)網(wǎng)地址都會(huì)以IP顯示,而不在有域名啦。。。
          -l
          行緩沖標(biāo)準(zhǔn)輸出. 可用于捕捉數(shù)據(jù)的同時(shí)查看數(shù)據(jù). 例如,
          [ 應(yīng)用 ] tcpdump -i eth1 -f -l|tee tcpdump.log
          [ 摘取 ]
          tcpdump: verbose output 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.058394 802.1d config 81b6.00:1e:14:9f:f7:00.801a root 8000.00:04:80:78:c0:dd pathcost 19 age 1 max 20 hello 2 fdelay 15
          [ 分析 ] 結(jié)合系統(tǒng)命令,使抓取分析數(shù)據(jù)更加靈活與強(qiáng)大,我愛(ài)這個(gè)功能
          -n
          不把地址轉(zhuǎn)換成名字 (如主機(jī)地址, 端口號(hào)等)
          [ 應(yīng)用 ] tcpdump -i eth0 src host 192.168.x.y -n
          [ 摘取 ]14:17:30.686094 IP 192.168.x.y.10778 > 121.62.99.137.14808: UDP, length 1050
          [
          分析 ] 抓取的數(shù)據(jù)包不會(huì)將數(shù)字地址轉(zhuǎn)換成名字
          -N
          不顯示主機(jī)名字中的域名部分
          [ 應(yīng)用 ] tcpdump -i eth0 src host 192.168.x.y -n
          [ 摘取 ]14:16:45.824513 IP 192.168.x.y.alias > by1msg3145607.msnp: . ack 1894015094 win 64827
          [ 分析 ] 抓取的數(shù)據(jù)包中不會(huì)將域名的部分顯示,看by1msg3145607.msnp,典型是省略了很長(zhǎng)一段的域名部分(msn)
          -q
          快速輸出. 顯示較少的協(xié)議信息, 輸出行將短一點(diǎn)點(diǎn).
          [ 應(yīng)用 ] tcpdump -i eth0 src host 192.168.x.y -q
          [ 摘取 ]14:21:48.669851 IP 192.168.x.y.tgp > by1msg4082316.phx.gbl.msnp: tcp 0
          [
          分析 ] 打印較短的協(xié)議,用與快速分析。
          -w
          把原始報(bào)文存進(jìn)file, 不分析也不顯示. 它們可以以后用 -r 選項(xiàng)顯示. 如果 file“-'', 就寫到標(biāo)準(zhǔn)輸出.(如:tcpdump -e src host 192.168.x.y -w /tmp/tcpdump.log)
          -r
          file中讀入數(shù)據(jù)報(bào) (文件是用 -w 選項(xiàng)創(chuàng)建的). 如果 file“-'', 就讀標(biāo)準(zhǔn)輸入. (如:tcpdump -e src host 192.168.x.y -r /tmp/tcpdump.log)
          [ 分析 ] 以上-w,-r,的作用是相反的,一個(gè)是將抓取的包寫入到指定文件,一個(gè)是根據(jù)上次寫入的文件來(lái)讀取分析。沒(méi)有上次的-w操作,-r是無(wú)法使用的,除非用”-”,不過(guò)如果你用more,cat是無(wú)法讀通這個(gè)文件的,不像用”|”,借助tee 可以為以后方便
          -t
          禁止顯示時(shí)戳標(biāo)志.
          [ 應(yīng)用 ] tcpdump -i eth0 src host 192.168.x.y -t
          [ 摘要 ]
          IP 192.168.x.y.sonardata > 218.93.16.107.http: . ack 1225435221 win 65535
          IP 192.168.x.y.sonardata > 218.93.16.107.http: P 0:907(907) ack 1 win 65535
          IP 192.168.x.y.sonardata > 218.93.16.107.http: . ack 208 win 65328
          [ 分析 ] 看下面
          -tt
          顯示未格式化的時(shí)戳標(biāo)志.
          [ 應(yīng)用 ] tcpdump -i eth0 src host 192.168.x.y -tt
          [ 摘要 ]
          1247207645.823506 IP 192.168.x.y.isis > 61.172.205.8.msnp: . ack 53 win 64309
          1247207645.840496 IP 192.168.x.y.isis > 61.172.205.8.msnp: P 70:74(4) ack 123 win 64239
          1247207645.881594 IP 192.168.x.y.isis > 61.172.205.8.msnp: P 74:122(48) ack 123 win 64239
          [ 分析 ]-t -tt對(duì)比,一看就很清楚了,是時(shí)間顯示控制和時(shí)間格式控制
          -v
          (
          稍微多一點(diǎn)) 繁瑣的輸出. 例如, 顯示IP數(shù)據(jù)報(bào)中的生存周期和服務(wù)類型.
          -vv
          更繁瑣的輸出. 例如, 顯示NFS應(yīng)答報(bào)文的附加域.
          -x
          以十六進(jìn)制數(shù)形式顯示每一個(gè)報(bào)文 (去掉鏈路層報(bào)頭后) . 可以顯示較小的完整報(bào)文
          [ 分析 ]-v,-vv,-x 通過(guò)上面的敘述,我想大家試一下,一定就會(huì)很明白了,至與那個(gè)選項(xiàng)更適合大家,那就是看應(yīng)用了,我想這些選項(xiàng)也夠大家用了吧!~反正夠我用了,呵呵!~

          expression (
          表達(dá)式)
          表達(dá)式是一個(gè)正則表達(dá)式,tcpdump利用它作為過(guò)濾報(bào)文的條件,如果一個(gè)報(bào)文滿足表達(dá)式的條件,則這個(gè)報(bào)文將會(huì)被捕獲。如果沒(méi)有給出任何條件,則網(wǎng)絡(luò)上所有的信息包將會(huì)被截獲。
          v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}
          圖:Expression的構(gòu)造
          expression 由一個(gè)或多個(gè)原語(yǔ) (primitive) 組成. 原語(yǔ)通常由一個(gè)標(biāo)識(shí)(id,名稱或數(shù)字)和 標(biāo)識(shí) 前面的一個(gè)或多個(gè)修飾字(qualifier) 組成. 修飾字有三種不同的類型:
          (1)type
          類型修飾字指出標(biāo)識(shí)名稱或標(biāo)識(shí)數(shù)字代表什么類型的東西. 可以使用的類型有host, netport. 例如, `host foo', `net 128.3', `port 20'. 如果不指定類型修飾字, 就使用缺省的 host
          (2)Direction
          方向修飾字指出相對(duì)于標(biāo)識(shí)的傳輸方向 (數(shù)據(jù)是傳入還是傳出標(biāo)識(shí)). 可以使用的方向有 src, dst, src or dstsrc and dst. 例如, `src foo', `dst net 128.3', `src or dst port ftp-data'. 如果不指定方向修飾字, 就使用缺省的src or dst . 對(duì)于 `null' 鏈路層 (就是說(shuō) 象 slip 之類的 點(diǎn)到點(diǎn) 協(xié)議),inboundoutbound修飾字指定所需的傳輸方向.
          (3)proto
          協(xié)議修飾字要求匹配指定的協(xié)議. 可以使用的協(xié)議有: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcpudp. 例如,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'
          實(shí)際上 是 `ether' 的 別名; 分析器把它們視為 ``用在指定網(wǎng)絡(luò)接口上的數(shù)據(jù)鏈路層.'' FDDI 報(bào)頭包含類似于以太協(xié)議的源目地址, 而且通常包含 類似于以太協(xié)議的報(bào)文類型, 因此你可以分析 FDDI, 就象分析以太協(xié)議一樣. FDDI報(bào)頭也包含其他域, 但是你不能在過(guò)濾器表達(dá)式里顯式描述.]

          作為上述的補(bǔ)充, 有一些特殊的 `原語(yǔ)' 關(guān)鍵字, 它們不同于上面的模式: gateway, broadcast, less, greater和數(shù)學(xué)表達(dá)式. 這些在后面有敘述.

          更復(fù)雜的過(guò)濾器表達(dá)式 可以通過(guò) and, ornot 連接原語(yǔ)來(lái)組建. 例如, `host foo and not port ftp and not port ftp-data'. 為了少敲點(diǎn)鍵, 可以忽略 相同的修飾子. 例如, `tcp dst port ftp or ftp-data or domain' 實(shí)際上 就是 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.

          允許的 原語(yǔ) 有:
          dst host host
          如果報(bào)文中IP的目的地址域是 host, 則邏輯為真. host既可以是地址, 也可以是主機(jī)名.
          src host host
          如果報(bào)文中IP的源地址域 是 host, 則 邏輯為 真.
          host host
          如果報(bào)文中 IP 的 源地址域或者目的地址域是host, 則邏輯為真. 上面所有的 host 表達(dá)式 都可以加上 ip, arp,rarp 關(guān)鍵字做前綴, 就象:
          ip host host

          如果host是擁有多個(gè)IP地址的主機(jī)名, 它的每個(gè)地址都會(huì)被查驗(yàn).

          dst net net
          如果報(bào)文的IP目的地址屬于網(wǎng)絡(luò)號(hào)net, 則邏輯為真.
          src net net
          如果 報(bào)文的 IP 源地址 屬于 網(wǎng)絡(luò)號(hào) net, 則邏輯為真.
          net net
          如果報(bào)文的IP源地址或目的地址屬于網(wǎng)絡(luò)號(hào) net, 則邏輯為真.
          net net mask netmask (
          net 192.168.1.0 mask 255.255.255.128)
          如果IP地址匹配指定網(wǎng)絡(luò)掩碼(netmask)net, 則 邏輯為真. 本原語(yǔ)可以用srcdst 修飾.
          net net/len
          如果IP地址匹配指定網(wǎng)絡(luò)掩碼的net, 則邏輯為真, 掩碼的有效位寬為len. 本原語(yǔ)可以用srcdst修飾.
          dst port port
          如果報(bào)文是ip/tcpip/udp, 并且目的端口是port, 則邏輯為真. port是一個(gè)數(shù)字, 也可以是 /etc/services 中 說(shuō)明過(guò)的名字(參看tcp(4P)udp(4P)). 如果使用名字, 則檢查端口號(hào)和協(xié)議. 如果使用數(shù)字, 或者有二義的名字, 則只檢查端口號(hào) (例如, dst port 513 將顯示 tcp/login 的數(shù)據(jù) 和 udp/who 的數(shù)據(jù),port domain 將顯示 tcp/domainudp/domain 的數(shù)據(jù)).
          src port port
          如果 報(bào)文 的 源端口號(hào) 是 port, 則 邏輯 為 真.
          port port
          如果報(bào)文的源端口或目的端口是port, 則邏輯為真. 上述的任意一個(gè)端口表達(dá)式都可以用關(guān)鍵字tcpudp做前綴,就象:
          tcp src port port
          它只匹配源端口是portTCP 報(bào)文.

          less length
          如果 報(bào)文 的 長(zhǎng)度 小于等于 length, 則 邏輯 為 真. 它等同于:
          len <= length.

          greater length
          如果報(bào)文的長(zhǎng)度大于等于 length, 則邏輯為真. 它等同于:
          len >= length.

          原語(yǔ)可以用下述方法結(jié)合使用:
          圓括弧括起來(lái)的原語(yǔ)和操作符(園括弧在Shell中有特定含義, 所以必須轉(zhuǎn)義).
          取反操作 (`!' or `not').
          連結(jié)操作 (`&&' or `and').
          或操作 (`||' or `or').
          取反操作有最高優(yōu)先級(jí). 或操作和連結(jié)操作有相同的優(yōu)先級(jí), 運(yùn)算時(shí)從左到右結(jié)合. 注意連結(jié)操作需要顯式的and算符, 而不是并列放置.

          如果給出標(biāo)識(shí)符, 但沒(méi)給修飾符, 那么暗指最近使用的修飾符. 例如,
          not host vs and ace
          作為 not host vs and host ace的簡(jiǎn)寫形式, 不應(yīng)該和 not ( host vs or ace )混淆.
          ?
          tcpdump 的輸出結(jié)果介紹 (OUTPUT FORMAT)
          下面我們介紹幾種典型的 tcpdump 命令的輸出信息
          (1) 數(shù)據(jù)鏈路層頭信息
          使用命令 #tcpdump -e host ice
          ice 是一臺(tái)裝有 linux 的主機(jī) 她的 MAC 地址是 00 902758AF1A
          H219 是一臺(tái)裝有 SOLARIC SUN 工作站 它的 MAC 地址是 08 0020795B46 上一條
          命令的輸出結(jié)果如下所示:
          21:50:12.847509 eth0 > 08:00:20:79:5b:46 00:90:27:58:af:1a ip 60: h219.33357 > ice.
          telnet 0:0(0) ack 22535 win 8760 (DF)
          分析 215012 是顯示的時(shí)間 847509 ID 號(hào) eth0 >表示從網(wǎng)絡(luò)接口設(shè)備發(fā)送數(shù)據(jù)包( eth0 < 表示從網(wǎng)絡(luò)接口 eth0 接受該數(shù)據(jù)包 ), 08:00:20:79:5b:46是主機(jī)H219的MAC地址,
          它表明是從源地址H219發(fā)來(lái)的數(shù)據(jù)包. 00:90:27:58:af:1a是主機(jī)ICE的MAC地址,表示該數(shù)據(jù)包的目的地址是ICE . ip 是表明該數(shù)據(jù)包是IP數(shù)據(jù)包,60 是數(shù)據(jù)包的長(zhǎng)度, h219.33357 > ice.
          telnet 表明該數(shù)據(jù)包是從主機(jī)H219的33357端口發(fā)往主機(jī)ICE的TELNET(23)端口. ack 22535表明對(duì)序列號(hào)是222535的包進(jìn)行響應(yīng). win 8760表明發(fā)送窗口的大小是8760.
          (2) ARP包的TCPDUMP輸出信息
          使用命令#tcpdump arp
          得到的輸出結(jié)果是:
          22:32:42.802509 eth0 > arp who-has h10 tell ice (0:90:27:58:af:1a)
          22:32:42.802902 eth0 < arp reply h10 is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
            分析: 22:32:42是時(shí)間戳, 802509是ID號(hào), eth0 >表明從主機(jī)發(fā)出該數(shù)據(jù)包, arp表明是
          ARP請(qǐng)求包, who-has h10 tell ice表明是主機(jī)ICE請(qǐng)求主機(jī)h10的MAC地址。 0:90:27:5
          8:af:1a是主機(jī)ICE的MAC地址。
          (3) TCP包的輸出信息
          用TCPDUMP捕獲的TCP包的一般輸出信息是:
          src > dst: flags data-seqno ack window urgent options
          分析:
          src > dst: 表明從源地址到目的地址 , flags TCP 包中的標(biāo)志信息 , 如:S SYN 標(biāo)志 , F (F
          IN), P (PUSH) , R (RST) "." (沒(méi)有標(biāo)記); data-seqno是數(shù)據(jù)包中的數(shù)據(jù)的順序號(hào), ack是
          下次期望的順序號(hào), window是接收緩存的窗口大小, urgent表明數(shù)據(jù)包中是否有緊急指針.
          Options是選項(xiàng).
          (4) UDP包的輸出信息
          用TCPDUMP捕獲的UDP包的一般輸出信息是:
          H10.port1 > ice.port2: udp lenth
          UDP十分簡(jiǎn)單,上面的輸出行表明從主機(jī)h10的port1端口發(fā)出的一個(gè)UDP數(shù)據(jù)包到主機(jī)
          ICE的port2端口,類型是UDP, 包的長(zhǎng)度是lenth
          example:
          如果想要獲取主機(jī)61.151.247.124接收或發(fā)出的telnet包,使用如下命令
          tcpdump tcp port 23 and host 61.151.247.124
          tcpdump -n tcp port 23 and src host 218.83.152.2
          tcpdump -n -w /etc/tcpdump.log tcp port 23 and src host 218.83.152.2
          tcpdump -r /etc/tcpdump.log
          tcpdump -i eth0 -w tcpdump.log
          tcpdump -r tcpdump.log

          顯示 所有 進(jìn)出 sundown 的 報(bào)文:
          tcpdump host sundown

          顯示helioshot|ace之間的報(bào)文傳送:
          tcpdump host helios and \( hot or ace \)

          顯示ace和除了helios 以外的所有主機(jī)的IP報(bào)文:
          tcpdump ip host ace and not helios?

          本文出自 “壞男孩” 博客,請(qǐng)務(wù)必保留此出處http://5ydycm.blog.51cto.com/115934/176151

          posted on 2011-03-02 10:09 tobyxiong 閱讀(945) 評(píng)論(0)  編輯  收藏 所屬分類: linix

          <2011年3月>
          272812345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(144)

          隨筆檔案(157)

          相冊(cè)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 阿鲁科尔沁旗| 漠河县| 同江市| 洛南县| 卢氏县| 香格里拉县| 伊金霍洛旗| 沁水县| 靖远县| 穆棱市| 新建县| 南城县| 惠水县| 溆浦县| 遵化市| 盐池县| 拉萨市| 团风县| 黄石市| 灵丘县| 兴义市| 义乌市| 新晃| 封丘县| 安丘市| 康马县| 汶川县| 霞浦县| 都兰县| 石狮市| 聂拉木县| 安陆市| 留坝县| 葫芦岛市| 萨嘎县| 合水县| 定州市| 清河县| 高阳县| 张北县| 高雄县|