出自公眾號(hào):釋然IT雜談
Wireshark是什么?
Wireshark是最流行的網(wǎng)絡(luò)嗅探器之一,能在多種平臺(tái)上抓取和分析網(wǎng)絡(luò)包,比如windows、linux和mac等。它的圖形界面非常友好,但如果你覺得鼠標(biāo)操作不夠有范,也可以使用它的命令行形式——TShark。
學(xué)習(xí)Wireshark有何意義?
很顯然,Wireshark并不能幫我們變成網(wǎng)絡(luò)新貴,但它對(duì)技術(shù)上有所追求的攻城獅來說,有著金錢難以衡量的價(jià)值。用它來輔助學(xué)習(xí),可以更深入地理解網(wǎng)絡(luò)協(xié)議;用它來排查故障,可以更快地發(fā)現(xiàn)問題。假如你是團(tuán)隊(duì)中唯一掌握Wireshark的網(wǎng)絡(luò)攻城獅,這個(gè)看家本領(lǐng)非常有助于你保持大牛地位。在同事們手足無措時(shí),你可以用最快的速度擺平,然后平靜地說一句:“問題解決了,我先去泡杯咖啡。”接下來就可以離開座位,讓他們一臉崇拜地研究你滿是Tshak命令的屏幕了。
Wireshark圖形窗口介紹
WireShark 主要分為這幾個(gè)界面:
1. Display Filter(顯示過濾器), 用于過濾
2. Packet List Pane(封包列表), 顯示捕獲到的封包, 有源地址和目標(biāo)地址,端口號(hào)。顏色不同,代表
3. Packet Details Pane(封包詳細(xì)信息), 顯示封包中的字段
4. Dissector Pane(16進(jìn)制數(shù)據(jù))
5. Miscellanous(地址欄,雜項(xiàng))
顯示過濾器
顯示過濾器是在原來或者現(xiàn)在抓包的基礎(chǔ)上,過濾掉其他的包,找到自己需要的數(shù)據(jù)報(bào)包。如圖所示:
過濾表達(dá)式的規(guī)則
表達(dá)式規(guī)則
- 協(xié)議過濾 比如TCP,只顯示TCP協(xié)議。
- IP 過濾 比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102, ip.dst==192.168.1.102, 目標(biāo)地址為192.168.1.102
- 端口過濾 tcp.port ==80, 端口為80的 tcp.srcport == 80, 只顯示TCP協(xié)議的愿端口為80的。
- Http模式過濾 http.request.method=="GET", 只顯示HTTP GET方法的。
- 邏輯運(yùn)算符為 AND/ OR 常用的過濾表達(dá)式
過濾表達(dá)式 用途http 只查看HTTP協(xié)議的記錄ip.src ==192.168.1.102 or ip.dst==192.168.1.102 源地址或者目標(biāo)地址是192.168.1.102
封包列表
封包列表的面板中顯示,編號(hào),時(shí)間戳,源地址,目標(biāo)地址,協(xié)議,長(zhǎng)度,以及封包信息。你可以看到不同的協(xié)議用了不同的顏色顯示。
你也可以修改這些顯示顏色的規(guī)則, View ->Coloring Rules.
封包詳細(xì)信息
這個(gè)面板是我們最重要的,用來查看協(xié)議中的每一個(gè)字段。
各行信息分別為:
Frame: 物理層的數(shù)據(jù)幀概況
Ethernet II: 數(shù)據(jù)鏈路層以太網(wǎng)幀頭部信息
Internet Protocol Version 4: 互聯(lián)網(wǎng)層IP包頭部信息
Transmission Control Protocol: 傳輸層T的數(shù)據(jù)段頭部信息,此處是TCP
Hypertext Transfer Protocol: 應(yīng)用層的信息,此處是HTTP協(xié)議
我們用wireshark實(shí)際分析下三次握手的過程。打開wireshark, 打開瀏覽器輸入 http://www.cr173.com 在wireshark中輸入http過濾, 然后選中GET /tankxiao HTTP/1.1的那條記錄,右鍵然后點(diǎn)擊"Follow TCP Stream", 這樣做的目的是為了得到與瀏覽器打開網(wǎng)站相關(guān)的數(shù)據(jù)包,將得到如下圖
圖中可以看到wireshark截獲到了三次握手的三個(gè)數(shù)據(jù)包。第四個(gè)包才是HTTP的, 這說明HTTP的確是使用TCP建立連接的。
第一次握手?jǐn)?shù)據(jù)包
客戶端發(fā)送一個(gè)TCP,標(biāo)志位為SYN,序列號(hào)為0, 代表客戶端請(qǐng)求建立連接。如下圖
第二次握手的數(shù)據(jù)包
服務(wù)器發(fā)回確認(rèn)包, 標(biāo)志位為 SYN,ACK. 將確認(rèn)序號(hào)(Acknowledgement Number)設(shè)置為客戶的I S N加1以.即0+1=1, 如下圖
第三次握手的數(shù)據(jù)包
客戶端再次發(fā)送確認(rèn)包(ACK) SYN標(biāo)志位為0,ACK標(biāo)志位為1.并且把服務(wù)器發(fā)來ACK的序號(hào)字段+1,放在確定字段中發(fā)送給對(duì)方.并且在數(shù)據(jù)段放寫ISN的+1,如下圖:
就這樣通過了TCP三次握手,建立了連接
Wireshark命令窗口介紹
Wireshark網(wǎng)絡(luò)分析軟件用命令窗口處理數(shù)據(jù)包的情況很少,在處理大包時(shí),為節(jié)約資源同時(shí)也是有效地利用PC機(jī)硬件,不得不用wireshark的命令行來處理數(shù)據(jù)包,以達(dá)到預(yù)期目的。
命令行方式與wireshark圖形界面等效的命令是:tshark.exe
不管是用安裝版的還是綠色版的wireshark軟件,只要找到安裝目錄,即可進(jìn)行操作。
在命令窗口(DOS)輸入dir%20*.exe,就會(huì)列出所有可執(zhí)行文件。Tshark.exe就是wireshark的命令行文件,與窗口方式具有同等的功效(有點(diǎn)賣“野藥”的感覺)。Tshark.exe有很多參數(shù),可以通過命令后加-h查看幫助。
有很多的參數(shù)
命令行工具功能很強(qiáng)大,參數(shù)多且可組合使用。如果我們?cè)贑DN機(jī)房或核心設(shè)備上做鏡像抓包時(shí),因數(shù)據(jù)量太大,圖形界面抓包,幾十秒或幾秒鐘的時(shí)間,電腦有可能就會(huì)藍(lán)屏,造成電腦死機(jī),達(dá)不到我們抓包的效果,所以,這時(shí)候我們就會(huì)用到命令行進(jìn)行抓包。命令行捕獲最大的優(yōu)點(diǎn)就是資源占用少,可控性強(qiáng)。缺點(diǎn)是參數(shù)繁多,不易記憶和操作。
Tshark默認(rèn)情況下選擇的是電腦中的第一張網(wǎng)卡,我們可以利用參數(shù)-D(注意大小寫,參數(shù)中大小寫的定義會(huì)不同)來查看。
舉例:如下圖
其他的一些命令的參數(shù)和用法,請(qǐng)參考-h幫助或相關(guān)資料研究學(xué)習(xí)。
工具文件下載地址:https://www.wireshark.org/download/