抓包工具Ethereal的基本使用
這是網上熱心人寫的教程,我實踐了一下,很簡單,不過基本的工作是夠用了,我暫且整理整理。
完全可以按照步驟進行基本的抓包。
1. 使用前參數設定——capture 選項設定
interface: 指定在哪個介面(網卡)上抓包。一般情況下都是單網卡,使用預設。
limit each packet: 限制每個包的大小,預設情況不限制
capture packets in promiscuous mode:是否開啟混雜模式。如果開啟,抓取所有的資料包。一般情況下只需要監聽本機收到或者發出的包,因此應該關閉這個選項。
filter: 過濾器。只抓取滿足過濾規則的包(暫時略過,在主介面上進行,比較方便)
file: 如果需要將抓到的包寫到檔案中,在這裡輸入檔案名稱。
use ring buffer: 是否使用迴圈緩衝。預設情況下不使用,即一直抓包。注意,迴圈緩衝只有在寫檔案的時候才有效。如果使用了迴圈緩衝,還需要設定檔案的數目,檔案多大時回卷
其他的項選擇預設的就可以了
2. 使用抓包
2.1直接使用
啟動ethreal以後,選擇菜單capature->start,開始抓包,按stop結束抓包。抓的包就會顯示在面板中,並且已經分析好了。
注意:該方法十分簡單,但是卻沒有進行過濾,抓的包過多,對分析問題不太方便。
2.2過濾器抓包
2.2.1 基本結構是:
[not] primitive [and|or [not] primitive ...]
在抓包完成以後,顯示過濾器可以用來找到你感興趣的包,可以根據
1)協議
2)是否存在某個域
3)域值
4)域值之間的比較
來尋找你感興趣的包。
舉個例子,如果你只想查看使用tcp協議的包,在ethereal視窗的左下角的filter中輸入tcp,然後斷行符號,ethereal就會只顯示tcp協議的包。如所示
值比較運算式
2.2.2 過濾器操作符
可以使用下面的操作符來構造顯示過濾器
自然語言 類c表示 舉例
eq == ip.addr==10.1.10.20
ne != ip.addr!=10.1.10.20
gt > frame.pkt_len>10
lt
ge >= frame.pkt_len>=10
le
運算式組合
可以使用下面的邏輯操作符將運算式組合起來
自然語言 類c表示 舉例
and && 邏輯與,比如ip.addr=10.1.10.20&&tcp.flag.fin
or || 邏輯或,比如ip.addr=10.1.10.20||ip.addr=10.1.10.21
xor ^^ 異或,如tr.dst[0:3] == 0.6.29 xor tr.src[0:3] ==
not ! 邏輯非,如 !llc
例如:
我想抓取ip地址是192.168.2.10的主機,它所接收收或發送的所有的http報文,那麼合適的顯示filter(過濾器)就是
請記住一個訣竅:只好在filter的背景是綠色,就證明你設定的filter是合乎規定的,但是當背景是紅色時,就說明你設定的filter是ethereal不允許的,是不對的。如
所有的過濾器(filter)都可以在filter旁邊的expression…中選取。
3. 升級抓包軟體——在ethereal使用協議外掛程式
ethereal能夠支援許多協議,但有些協議需要安裝外掛程式以後才能解,比如h.323
以h.323協議為例,首先下載ethereal的h.323外掛程式,
http://www.voice2sniff.org/
下載完了以後將檔案(h323.dll)解壓到ethereal安裝目錄的plugin/0.9.x目錄下面,比如我的是0.9.11
然後,需要進行一下設定
1)啟動ethereal
2)菜單edit->preference
3)單擊protocols前面的"+"號,展開protocols
4)找到q931,並單擊
5)確保"desegment.... tcp segments"是選中的(即方框被按下去)
6)單擊tcp
7)確保"allow....tcp streams"是選中的
8)確保沒有選中"check....tcp checksum"和"use....sequence numbers"
9)單擊tpkt
10)確保"desegment....tcp segments"是選中的
11)點擊save,然後點擊apply,然後點擊ok
你也完全可以不斷地重新安裝新版本winpcap和ethreal,這樣就可以不需在舊的ethreal的版本中安裝新的外掛程式來支援新的協議外掛程式。這也是懶人的一種做法j
後續有時間再根據工作用到添加,整理手頭的另外幾份抓包資料。
本貼來自天極網群樂社區--http://q.yesky.com/group/review-17808856.html
網路抓包工具Ethereal
(2010-01-01 10:09:48)
網路抓包工具Ethereal
Q:如何使用Ethereal進行抓包?
1,先過濾後抓包:首先在Capture Options點擊Capture Filter設定過濾規則。若要即時查看,請勾選Display Options的Update list of packets in real time,然後包。 樣本:輸入host 192.168.1.5 and port 80,僅抓取IP為192.168.1.5,連接埠為80的包。
2,先抓包後過濾:抓包後,在Filter中輸入運算式過濾。
樣本:輸入ip.src,ip.dst,tcp.srcport,tcp.dstport,tcp.ack,tcp.len,eth等,可與關聯運算式配合使用。如ip.src==192.168.1.5 &&tcp.srcport==80,僅顯示源IP為192.168.1.5,源連接埠為80的包。
Q:如何分析使用Ethereal抓到的包?
這裡簡單以TCP/IP為例(修改網摘),
一,資料連結層:
1、Destination:目的MAC地址。(eth.src)
2、Source:源MAC地址。(eth.dst)
3、Type:乙太網路類型(IP0x0800,8表示為乙太網路)。(eth.type)
二,IP網路層:
1、Version=4,表示IP協議的版本號碼為4.該部分佔4個BIT位。(ip.version)
2、Header Length=20 Bytes,表示IP包頭的總長度為20個位元組。該部分佔4個BIT位,單位為4個位元組,因此,一個IP包頭的長度最長為“1111”,即15*4=60個位元組。
3、Type of Service=00,表示服務類型為0.該部分用二個十六進位值來表示,共佔8個BIT.
8個BIT的含義是:
000 前三位不用
0 表示最小時延,如Telnet服務使用該位
0 表示輸送量,如FTP服務使用該位
0 表示可靠性,如SNMP服務使用該位
0 表示最小代價
0 不用
4、Total Length=48Bytes,表示該IP包的總長度為48個位元組。該部分佔16個BIT,單位為Byte.由此可見,一個IP資料包的最大長度為2的 16次方減1,即:65535個位元組。因此,在乙太網路中能夠傳輸的最大IP資料包為65535個位元組。(ip.len)
5、Identification=363,表示IP包識別號為363.該部分佔16個BIT,以十進位數表示。(ip.id)
6、Flags,表示片標誌,佔3個BIT.各位含義分別為:第一個“0”不用,第二個“0”為分區標誌位,“1”表示分區,“0”表示不分版本。第三個0為是否最後一片標誌位,0表示最後一片,1表示還有更多的片。(ip.flags)
7、Fragment Offset=0,表示片位移為0個Bytes.該部分佔13個BIT.
8、Time to Live=128Secongs/Hops,表示存留時間TTL值為128.該部分佔8個BIT.(ip.ttl)
9、Proctol=6(TCP),表示協議類型為TCP,協議代碼是6.如果是UDP協議,則此處的協議代碼應為17.如果是ICMP協議,則此處的協議代碼應為1.該部分佔8個BIT.(ip.proto)
10、Header Checksun=4035(correct),表示IP包頭校正和為4035,括弧內的Correct表示此IP資料包是正確的,沒有被非法修改過。該部分佔16個BIT,用十六進位表示。(ip.checksum)
11、Source Address=76.88.16.104,表示IP資料包源地址為:76.88.16.104.該部分佔32個BIT.(ip.src)
12、Destination Address=76.88.16.16,表示IP資料包目的地址為:76.88.16.16.該部分佔32個BIT.(ip.dst)
13、No Options,表示IP資料包中未使用選項部分。當需要記錄路由時才使用該選項。
三,TCP傳輸層:
1、Source Port=1038,表示發起串連的源連接埠為1038.該部分佔16個BIT.通過此值,可以看出發起串連的電腦源連接埠號碼。(tcp.srcport)
2、Destination Port=21(FTP-CTRL),表示要串連的目的連接埠為21.該部分佔16個BIT.通過此值,可以看出要登入的目的連接埠號碼。21連接埠表示是FTP服務連接埠。(tcp.dstport)
3、Initial Sequence Number=1791872318,表示初始串連的請求號,即SEQ值。該部分佔32個BIT,值從1到2的32次方減1.(tcp.seq)
4、Acknowledgment Number=1791872319,表示對方的應答號應為1791872319,即對方返回的ACK值。該部分佔32個BIT,值從1到2的32次方減1.(tcp.ack)
5、Data Offset=28 Bytes,表示資料位移的大小。該部分佔4個BIT.
6、Reserved Bites:保留位,此處不用。該部分佔6個BIT.
7、Flags=02.該值用兩個十六進位數來表示。該部分長度為6個BIT,6個標誌位的含義分別是:(tcp.flags)
0 URG,緊急資料標誌,為1表示有緊急資料,應立即進行傳遞。
0 ACK,確認標誌位,為1表示此資料包為應答資料包
0 PSH,PUSH標誌位,為1表示此資料包應立即進行傳遞。
0 RST:複位標誌位。如果收到不屬於原生資料包,則返回一個RST
0 SYN:串連請求標誌位。為1表示為發起串連的請求資料包。
0 FIN:結束串連請求標誌位。為1表示是結束串連的請求資料包。
8、Window=64240,表示視窗是64240.該部分佔16個BIT.
9、CheckSum=92D7(Correct),表示校正和是92D7.該部分佔16個BIT,用十六進位表示。(tcp.checksum)
10、Urgent Pointer=0,表示緊急指標為0.該部分佔16個BIT.
11、Maximum Segment Size=1460,表示最大段大小為1460個位元組。