天天看點

【實用技巧】wireshark過濾抓包與過濾檢視

在分析網絡資料和判斷網絡故障問題中,都離不開網絡協定分析軟體(或叫網絡嗅探器、抓包軟體等等)這個“利器”,通過網絡協定分析軟體我們可以捕獲網絡中正常傳輸哪些資料包,通過分析這些資料包,我們就可以準确地判斷網絡故障環節出在哪。網絡協定分析軟體衆多,比如ethereal(wireshark的前身),wireshark,omnipeek,sniffer,科來網絡分析儀(被譽為國産版sniffer,符合我們的使用習慣)等等,本人水準有限,都是初步玩玩而已,先談談個人對這幾款軟體使用感受,wireshark(ethereal)在對資料包的解碼上,可以說是相當的專業,能夠深入到協定的細節上,用它們來對資料包深入分析相當不錯,更重要的是它們還是免費得,但是用wireshark(ethereal)來分析大量資料包并在大量資料包中快速判斷問題所在,比較費時間,不能直覺的反應出來,而且操作較為複雜。像omnipeek,sniffer,科來網絡分析儀這些軟體是專業級網絡分析軟體,不僅僅能解碼(不過有些解碼還是沒有wireshark專業),還能直覺形象的反應出資料情況,這些軟體會對資料包進行統計,并生成各種各樣的報表日志,便于我們檢視和分析,能直覺的看到問題所在,但這類軟體是收費,如果想感受這類專業級的軟體,我推薦玩科來網絡分析儀技術交流版,免費注冊激活,但是隻能對50個點進行分析。廢話不多說,下面介紹幾個wireshark使用小技巧,說的不好,還請各位多指點批評。

目前wireshark最新版本是1.7的,先簡單對比下wireshark的1.6和1.7版本。

下面是wireshark的1.6版本的界面圖:(看不清圖,請點選放大)

【實用技巧】wireshark過濾抓包與過濾檢視

 點選圖中那個按鈕,進入抓包網卡選擇,然後點選option進入抓包條件設定,就會打開如下圖的對話框

【實用技巧】wireshark過濾抓包與過濾檢視

如果想抓無線網卡的資料吧,就把圖中那個勾去掉,不然會報錯。點選Capture Filter進入過濾抓包設定(也可以在這個按鈕旁邊,那個白色框直接寫過濾文法,文法不完成或無法錯誤,會變成粉紅色的框,正确完整的會變成淺綠色),Filter name是過濾條件命名,Filter string 是過濾的文法定義,設定好了,點選new會把你設定好的加入到過濾條件區域,下次要用的時候,直接選者你定義這個過濾條件名。

下面是wireshark的1.7版本的界面圖:

【實用技巧】wireshark過濾抓包與過濾檢視

界面有所變化,同樣是點選option進入過濾編輯,如下圖:

【實用技巧】wireshark過濾抓包與過濾檢視

如果,左邊的輕按兩下左邊網卡可以直接進入過濾抓包設定對話框,中間是點選option後進入的對話框,再輕按兩下網卡進入下面的過濾抓包設定對話框,後面就跟wireshark的1.6版本一樣了。

下面聊聊過濾抓包文法,Filter string中怎麼寫文法。大家可以看看capture Filter原來已有的怎麼定義的。

【實用技巧】wireshark過濾抓包與過濾檢視

要弄清楚并設定好這個過濾條件的設定,得弄清楚TCP/IP模型中每層協定原理,以及資料包結構中每個比特的意思。上面這是抓得ARP,在資料鍊路層來看的,ARP是上層協定,在ethernet包結構表示的協定類型代碼是 0x0806,如果站在網絡層來說(ARP協定有時又稱為2.5層的協定,靠近資料鍊路層),我們的過濾文法可以這樣寫:

【實用技巧】wireshark過濾抓包與過濾檢視

這兩個是等價的,抓得都是ARP包。或許有的朋友這裡不太明白,建議去看《TCP/IP協定族》《TCP/IP協定詳卷》等等原來書籍,先了解資料包結構。從這個設定來看,可以看出wireshark的過濾抓包多麼深入了。

現在我簡單講講過濾抓包文法以及怎樣設定想要的過濾抓包文法(Filter string該填寫什麼東西)。

組合過濾文法常使用的連接配接:

過濾文法1 and 過濾文法2  隻有同時滿足文法1和2資料才會被捕獲

過濾文法1 or 過濾文法2   隻有滿足文法1或者2任何一個都會被捕獲

not 過濾文法               除該文法外的所有資料包都捕獲

常用的過濾文法說明:

ether host D0:DF:9A:87:57:9E  定義捕獲MAC為D0:DF:9A:87:57:9E的資料包,不管這個MAC位址是目标MAC還是源MAC,都捕獲這個資料包

ether proto 0x0806            定義了所有資料包中隻要ethernet協定類型是0x0806的資料包進行捕獲。

如果我們用and來組合這兩個文法:

ether host D0:DF:9A:87:57:9E and ether proto 0x0806(該文法等價于ether host D0:DF:9A:87:57:9E and arp)

表示我們隻針對MAC為D0:DF:9A:87:57:9E的ARP包進行捕獲。

arp             該文法隻捕獲所有的arp資料包

ip              該文法隻捕獲資料包中有IP頭部的包。(這個文法可以用 ether proto 0x0800,因為ethernet協定中得0x0800表示ip)

host 192.168.1.1 該文法隻捕獲IP頭部中隻要有192.168.1.1這個位址的資料,不管它是源IP位址還是目标IP位址。

tcp              該文法隻捕獲所有是tcp的資料包

tcp port 23      該文法隻捕獲tcp端口号是23的資料包,不管源端口還是目标端口。

udp              該文法隻捕獲所有是udp的資料包

udp  port 53     該文法隻捕獲udp端口号是23的資料包,不管源端口還是目标端口。

port 68         該文法隻捕獲端口為68的資料,不管是TCP還是UDP,不管該端口号是源端口,還是目标端口。

以上是常用的過濾抓包文法,靈活組合,就可以定位抓包。下面簡單舉幾個例子。

【實用技巧】wireshark過濾抓包與過濾檢視

這是個Radius的過濾抓包,如果不清楚它是TCP還是UDP,可以使用文法port 1645 or port 1646來定義。

這個過濾抓包文法的設定是,IP位址為172.16.1.102的除了TCP協定不捕獲外,其他所有資料都捕獲。

以上就是過濾抓包的文法簡單說明和介紹,最後如下操作就可抓包了。

【實用技巧】wireshark過濾抓包與過濾檢視

設定好就點選new,那麼過濾抓包的名字就會加入進去,下次隻有選擇名字就可以直接抓了,點選ok之後,文法對的話,就會呈現淺綠色,文法不完整或錯誤就是粉紅色,按下start就可以捕獲自己想要的資料包了。

接下來,介紹下wireshark的過濾檢視的資料包,在面對大量資料包,我們怎麼快速鎖定查找自己想要的資料包。Wireshark的過濾抓包檢視文法深入包的細節了,草草看了至少有上百條文法。要很好的了解和運用這些文法,TCP/IP協定原理得清楚。有興趣的朋友可以如下圖深入檢視過濾檢視使用的文法。

【實用技巧】wireshark過濾抓包與過濾檢視

下面我隻簡單介紹幾個常用:

eth.addr eq 00:08:d2:00:09:10    查找MAC等于00:08:d2:00:09:10的資料包,不過源MAC還是目标MAC

eth.src eq 00:08:d2:00:09:10     查找源MAC位址為00:08:d2:00:09:10的資料包

eth.dst eq 00:08:d2:00:09:10     查找源MAC位址為00:08:d2:00:09:10的資料包

eth.type eq 0x0806               查找ethernet協定類型為0x0806(ARP包)的資料包

ip.addr eq 10.1.1.2             查找IP位址為10.1.1.2的資料包

tcp.dstport eq 80               查找TCP目标端口為80的資料包

tcp.srcport eq 80               查找TCP源端口為80的資料包

udp.srcport eq 53               查找UDP源端口為53的資料包

udp.dstport eq 53               查找UDP目标端口為53的資料包

ip.addr eq 10.1.1.2 and udp.srcport eq 53 定位檢視IP位址為10.1.1.2,UDP源端口為53的資料包。

下面是示範圖:

【實用技巧】wireshark過濾抓包與過濾檢視

輸入檢視文法後,回車,wireshark查找資料,看資料包的大小決定查找時間,我抓了個300多M的包,過濾查找想要的包花了3分鐘。

【實用技巧】wireshark過濾抓包與過濾檢視

正在查找包

【實用技巧】wireshark過濾抓包與過濾檢視

過濾查找出了自己想要的包了,

繼續閱讀