如果你是一位網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)者,你在開(kāi)發(fā)過(guò)程中肯定會(huì)使用到網(wǎng)絡(luò)協(xié)議分析器(network protocol analyzer), 我們也可以稱之為“嗅探器”。eEye 公司有一款很不錯(cuò)的網(wǎng)絡(luò)協(xié)議分析器產(chǎn)品 “Iris”, 我一直使用它的 4.07 版本,由于其功能完備,一直沒(méi)有太多的關(guān)注其他同類軟件,但此版本不能工作在 Windows Vista 上,也不能對(duì)無(wú)線網(wǎng)絡(luò)適配器進(jìn)行分析,而我恰好要在 Vista 上做很多開(kāi)發(fā)工作,又經(jīng)常使用無(wú)線網(wǎng)絡(luò)連接的筆記本電腦,Iris 4.07 無(wú)法滿足我的工作需求了。
幸運(yùn)的是,Wireshark(線鯊)一款基于 winpcap/tcpdump 的開(kāi)源網(wǎng)絡(luò)協(xié)議分析軟件對(duì)vista和無(wú)線網(wǎng)絡(luò)的兼容都很好。他的前身就是Ethereal。他具備了和 Iris 同樣強(qiáng)大的 Decode 能力,甚至線性截包的能力超過(guò) iris。要用好分析器很重要的一點(diǎn)就是設(shè)置好 Filter(過(guò)濾器),在這一點(diǎn)上 Wireshark 的過(guò)濾表達(dá)式更顯強(qiáng)大。
我們來(lái)看個(gè)幾個(gè)簡(jiǎn)單的過(guò)濾器例子:
“ip.dst==211.244.254.1” (所有目標(biāo)地址是211.244.254.1的ip包)
“tcp.port==80″ (所有tcp端口是80的包)
你可以把上述表達(dá)式用 and 連接起來(lái)
“(ip.dst==211.244.254.1) and (tcp.port==80)”
或者再稍加變換
“(ip.dst==211.244.254.1) and !(tcp.port==80)” (所有目的ip是211.244.254.1非 80 端口)
使用表達(dá)式設(shè)置過(guò)濾器比之在界面上選擇/填空更加快捷靈活,如果你不熟悉這些表達(dá)式,Wireshark 也提供了設(shè)置界面,并且最終生成表達(dá)式,這樣也方便了使用者學(xué)習(xí)。
Wireshark 還提供了更高級(jí)的表達(dá)式特性,請(qǐng)看如下表達(dá)式
(tcp.port==80) and (ip.dst==211.244.254.1) and (http[5:2]==7075)
對(duì)象 http 就是 wireshark 解碼以后的 http 數(shù)據(jù)部分 http[5:2] 就是指從 下標(biāo) 5 開(kāi)始的兩個(gè)字節(jié),請(qǐng)思考一下這樣的http 請(qǐng)求
GET /pu*****
怎么樣,如果你在瀏覽器中訪問(wèn) http://www.google.com/pu 或者 http://www.google.com/put 或者 http://www.google.com/pub 都會(huì)被記錄下來(lái),匹配 *****pu***… 了
這樣我們就可以方便的將我們需要檢測(cè)的某個(gè)特別的網(wǎng)絡(luò)指令過(guò)濾出來(lái)。
比如我在幫某硬件編寫上位機(jī)程序的時(shí)候,指令總是以固定格式發(fā)送的,很容易我們就能過(guò)濾掉煩人的無(wú)用的信息,大大的提升了工作效率。
轉(zhuǎn)自cp62的專欄,http://blog.csdn.net/cp62/archive/2008/12/25/3603372.aspx