图解用Wireshark进行Http协议分析
一 安裝WireShark
??? 安裝完成后,運(yùn)行,如果出現(xiàn)NPF未運(yùn)行的提示,如下圖;說明可能是裝的時(shí)候WinPcap未裝上;一般安裝Wireshark會(huì)同時(shí)自動(dòng)安裝Winpcap;
?
?
如果裝了Winpcap,在C:\Windows\System32\drivers下,會(huì)出現(xiàn)npf.sys;另外系統(tǒng)帶有npfs.sys,不是一個(gè)東西;
?
如果是npf服務(wù)未運(yùn)行,在命令行執(zhí)行net start npf啟動(dòng)服務(wù)。
?
從菜單中查看一下可用的連接,本機(jī)用網(wǎng)卡進(jìn)行的本地連接,只有一個(gè)連接,不同的配置,或者無線連接,此處可能會(huì)出現(xiàn)多個(gè)連接;
?
從菜單看一下捕獲選項(xiàng),Capture Filter按鈕后的文本框?yàn)榭?#xff0c;沒有捕獲過濾器;可以設(shè)置了過濾器再捕獲,也可以先捕獲,再過濾;此處采用后者;
?
二 進(jìn)行捕獲分析
點(diǎn)擊前面有個(gè)綠色標(biāo)志的Start按鈕開始捕獲;
?
捕獲一小會(huì)點(diǎn)紅色停止按鈕停止;不到一分鐘,已經(jīng)有600多個(gè)包;當(dāng)前本機(jī)正在上網(wǎng),打開了多個(gè)網(wǎng)頁;
?
在過濾表達(dá)式框中輸入 http,只查看http協(xié)議的包,如下圖; 由于所有打開的網(wǎng)頁都停止刷新好長時(shí)間了,http協(xié)議的包只有兩個(gè);
?
這兩個(gè)包是本機(jī)和117.79.93.218之間交互的,百度一下此IP,如下圖;這個(gè)應(yīng)該是百度的IP;
上述的一個(gè)包是 http ?200;?
這表示服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁。
?
GET /socket.io/1/xhr-polling/g6BvKEWe5k1WjFgt595_?t=1427092879908
這一段是握手后的socket.io的請求;表明瀏覽器已經(jīng)使用了新的HTML 5的websocket技術(shù);
?
查看一下本機(jī)的IP,網(wǎng)關(guān),DNS等參數(shù);控制面板-網(wǎng)絡(luò)和共享中心-本地連接-詳細(xì)信息,顯示如下圖的本機(jī)IP配置信息;
?
上圖顯示本機(jī)連接的網(wǎng)關(guān)是192.168.1.254, 在過濾表達(dá)式框輸入表達(dá)式查看包含此IP的包,一個(gè)也無;
?
但是卻有大量的本機(jī)和192.168.1.250之間交互的包;應(yīng)該是網(wǎng)管用某種方法把192.168.1.250映射為了192.168.1.254;這是網(wǎng)管干的,不是我干的;
以后的包中出現(xiàn)192.168.1.250,就是網(wǎng)關(guān)了;在此處來說,就是路由器;單位內(nèi)部的電腦通過此路由器上網(wǎng);
?
下面來找一下TCP建立連接的三握手過程;
輸入tcp.flags.syn==1或tcp.flags.syn==0x02 過濾一下;這兩個(gè)表達(dá)式結(jié)果是一樣的;結(jié)果如下圖;
?
單個(gè)的一個(gè)SYN,它表示的是建立連接;?SYN和ACK同時(shí)為1,它表示的就是建立連接之后的響應(yīng);
下圖中顯示有三個(gè)TCP連接在建立;
?
看一下第二個(gè)連接,其包號(hào)為195;列出包號(hào)為195、196、197的三個(gè)包看一下,其內(nèi)容為:
SYN
SYN+ACK
ACK
果然這是一個(gè)TCP連接的建立過程;前兩個(gè)上面說了,第三個(gè) ACK 是第三次握手的確認(rèn);到此一個(gè)TCP連接建立了;之后才可以進(jìn)行HTTP協(xié)議的收發(fā);HTTP是建立在TCP基礎(chǔ)之上的;
?
三 重新捕獲一次再分析
? ? 關(guān)閉所有打開的網(wǎng)頁;再打開瀏覽器;此次自動(dòng)打開的是搜狗首頁,然后在搜狗首頁輸入 軟件工程 四個(gè)字,點(diǎn)擊搜索;
再捕獲一次,然后停止再分析;
輸入如下圖的表達(dá)式,去除掉 ip中包含本機(jī)IP和192.168.1.250的包,看下有些什么;發(fā)現(xiàn)有很多廣播包;這個(gè)是底層的ARP協(xié)議;ARP在TCP之下一層;
?
? ? ?另外還有很多SSDP包;SSDP ,簡單服務(wù)發(fā)現(xiàn)協(xié)議 ;NOTIFY * HTTP/1.1/r/n,就說明這個(gè)SSDP消息是個(gè)通知消息;
?
百度一下百度的IP,果然能查到;
?
網(wǎng)頁上還顯示有一種叫IP數(shù)據(jù)庫的東西;看來里面包括了大量的IP信息;
?
下面顯示捕獲的包對106.120.151.162獲取圖片;
?
用下面網(wǎng)頁查一下106.120.151.162
? ? 原來這個(gè)正是搜狗的首頁;?
?
寫個(gè)復(fù)雜點(diǎn)的過濾表達(dá)式;
!arp and !udp and !(ip.src==192.168.1.134 and ip.dst==192.168.1.250) and !(ip.src==192.168.1.250 and ip.dst==192.168.1.134) ?and (http) and (http.request.method=="GET") 看下過濾的結(jié)果;
以上表達(dá)式的含義是:去除arp, 去除udp,去除?192.168.1.134 and 192.168.1.250 之間互發(fā)的包,再取http的請求方法為GET的包;
?由下圖可以看到,對搜狗進(jìn)行了很多的GET,js腳本,圖片等等,是在不同的http包中傳過來的;
?
下面來做個(gè)難一點(diǎn)的;由于前面輸入了 軟件工程 四個(gè)字進(jìn)行搜索,找找捕獲的包中,包含 軟件工程 四個(gè)字的包;
在上述的長過濾表達(dá)式尾部再補(bǔ)上?and (http contains "軟件工程");沒有定位到一個(gè)包;表達(dá)式包含中文,會(huì)不會(huì)有問題;
向搜狗發(fā)送的URL大致是下面形式,
http://www.sogou.com/sie?hdq=Af71016-4553&query=軟件工程&p=50040111&oq=&ri=-2
輸入 http contains "query=",即查找http請求字符串中包含 query= 的包;定位到3198號(hào)包;如下圖;
這個(gè)是服務(wù)器返回成功的http 200包;
?
細(xì)致一點(diǎn),再單獨(dú)輸入?http contains "軟件工程" 查詢,這次定位到一個(gè)包,如下圖;3615號(hào)包;
?
觀察窗格的下部,捕獲到的二進(jìn)制數(shù)據(jù)和對應(yīng)的字符串內(nèi)容;00e0 行顯示,query= 的后面,是......,并不是 軟件工程 四個(gè)字;當(dāng)然由字符串內(nèi)容可知,這肯定是一個(gè)發(fā)送帶查詢參數(shù)的URL的包;
因?yàn)榫W(wǎng)頁查詢參數(shù)是UTF-8編碼的;下面從網(wǎng)上找到 軟件工程 四個(gè)字的UTF-8編碼;再對比00e0行的16進(jìn)制數(shù);
?
? ?
? ? 如上圖;程 字的UTF-8編碼為e7 a8 8b,正是 該行的最后三個(gè)16進(jìn)制數(shù);再比對;由圖可見四個(gè)字都對上,該行的后12字節(jié) 正是 軟件工程四個(gè)字。那么,65 72 79 3d 就是 ery= 的編碼了。
? ? 分析到此結(jié)束;我捕獲的包可以下載分析;
http://pan.baidu.com/s/1i3ioQWH
也可以自己捕獲包分析。
?
總結(jié)
以上是生活随笔為你收集整理的图解用Wireshark进行Http协议分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spire.XLS试用手记
- 下一篇: 详细图解JDK+Tomcat Web开发