初窺wireshark fiddler等抓包工具及部分實現分析

轉自:http://blog.sina.com.cn/s/blog_62347f3c0101bvuf.html


http://blog.csdn.net/lisztlee/article/details/8221135

分類: tools network2012-11-24 23:56 1217人閱讀 評論(2) 收藏 舉報
     做過網絡方面開發的同學都知道,一個適用的抓包工具對工作問題的分析是很有用的。前段時間我也在折騰網絡方面的相關開發,所以又重新使用了一下網絡抓包工具。接下來就介紹一下現在用的比較多的幾個網絡抓包工具。
     基本介紹:
     1、wireshark:
    wireshark的前身是Ethereal,2006年因爲其創始人Gerald Combs的跳槽而改名爲wireshark。它是一個跨平臺的軟件,可以在unix系列、linux、mac os、windows等多個平臺上面進行網絡協議抓包工作。同時他也是一個開源軟件,有興趣的話可以下載源碼深入瞭解。我們可以通過wireshark官網進一步瞭解相關知識及下載該軟件。
     2、fiddler
     fiddler的定位是網頁調試工具,能記錄所有客戶端和服務器的http和https請求,允許你監視,設置斷點,甚至修改輸入輸出數據。我們還可以爲fiddler安裝自己所需的插件,從而更好的利用fiddler的強大功能。詳細介紹信息可以通過fiddler官網進一步瞭解,
     3、IEInspector HTTP Analyzer
     IEInspector HTTP Analyzer同樣能夠提供監控、跟蹤、調試和分析http/https的功能。HTTP Analyzer的很多特色功能在這裏有比較詳細的介紹,如果你有這方面的需求,可以從進一步瞭解。不過,這是一個付費軟件,你可以先使用一段時間,試用版下載地址
     4、sniffer
     還是大學的時候用過這個這個抓包工具,那個時候還是覺得這個工具挺神奇的,後來用的就用的少了。前段時間想重新裝一次試試,發現其安裝過程太繁瑣了,並且安裝後沒法偵聽到網卡,估計是因爲自己下載的版本太低的緣故。反正現在也只是抱着再玩玩這個工具的心態去裝的,用不了所以就放棄卸載了。

     深入瞭解:
     對於上述的四種抓包工具,個人是比較推薦wireshark和fiddler的,這兩個工具在功能上基本可以互補,能完成你的抓包常用需求,是網絡開發的利器。下面我也會重點介紹這兩個工具,並會簡要分析這兩個工具的異同點,同時也會嘗試着去了解這兩個工具的部分實現方式。
     至於這兩個工具的使用方式就不做過多介紹了,網上這方面的教程比較全,下面的提到的幾篇文章應該已經能夠基本滿足需求,講的也足夠詳細,我也是通過看這些文章來開始熟悉使用的。
     wireshark使用教程:
     上面的簡單介紹裏面已經講到了wireshark開源和跨平臺的特點,接下來介紹一下wireshark的其他幾個重要的特點。
     wireshark的界面開發用的是GTK+ widget toolkit,當然如果你不喜歡界面, TShark也還是能滿足你的需求。
     wireshark使用pcap network library來進行封包捕捉。Lipcap(Linux)或者Winpcap(Windows)。windows平臺下,在安裝wireshark的時候你就會發現會提示你安裝winpcap,當然,如果你已經安裝過了就沒有這個提示了。
     WinPcap(Windows Packet Capture)是Windows平臺下的鏈路層網絡訪問工具,其目的在於爲Windows應用程序提供訪問網絡底層的能力。
     WinPcap功能:
          獲得網卡設備列表及其高級信息
          打開一個網卡適配器並將其設置成混雜模式
          捕獲數據包
          設置過濾器
          將數據包存儲爲文件並處理離線文件
          發送數據包
          收集網絡通信流量的統計信息
          但是,WinPcap不能修改數據包或者攔截數據包
     WinPcap架構:
               
         網絡數據包過濾器(Netgroup Packet Filter,NPF)是一個協議驅動,是WinPcap的核心部件,它處理網絡傳輸的數據包,並嚮應用層提供捕捉、發送和分析數據包的服務。
         packet.dll是一個提供了一系列底層函數的動態鏈接庫,功能包括:
             安裝、啓動和停止NPF驅動設備
             對網絡數據包進行嗅探
             發送原始的數據報
             獲取網卡列表和每一個網絡的相關信息
             對網卡查詢和設置底層參數
        能Wpcap.dll是一個含有WinPcap公共API的動態鏈接庫,它導出一系列函數供捕獲網絡數據包和分析網絡,功能包括:
             對網絡數據包進行嗅探
             發送原始的數據報
             獲取網卡列表和每一個網絡的相關信息
             將數據包信息保存到磁盤
             在更高層上創建包過濾規則並應用到底層
     因爲使用winpcap是直接進行網卡抓包的,所以Wireshark能夠捕獲到經過網卡的所有包,但是這樣也造成在用wireshark對HTTPS包抓取的時候它只能抓到解析前的包數據,一般情況下不能直接解析,當然如果你一定要解析內容頁是可以做到的,網上搜索一下也能找到相關的教程。
     winpcap的進一步瞭解可參考 WinPcap技術手冊 V4.1.2
     wireshark另外一個非常強大的功能呢就是它的過濾器,包括DisplayFilters和CaptureFilters,熟練配合使用這個這兩個Filter能夠讓你只看到你所需要的包。
     捕捉過濾器(CaptureFilters):用於決定將什麼樣的信息記錄在捕捉結果中。需要在開始捕捉前設置。
     顯示過濾器(DisplayFilters):在捕捉結果中進行詳細查找。他們可以在得到捕捉結果後隨意修改。
     當然這個過濾器的種類也是非常之多,要想能過熟練使用也絕非易事。過濾器Display Filter Reference介紹。
     另外wireshark也支持一部分功能的擴展,wireshark對常見協議的支持已經比較完善,當然,如果你需要它對某些新協議進行支持的話你也可以安裝相應的插件。

     fiddler:
     1、Fiddler 教程
     fiddler的實現方式和wireshark不同,它並不對網卡進行監聽,而只是以代理web服務器的形式工作。它使用代理地址:127.0.0.1,端口:8888。當Fiddler退出的時候它會自動註銷,這樣就不會影響別的程序。他的實現方式也解釋了爲什麼使用fiddler進行網絡抓包的時候,當某些應用進行沒有真實證書的https訪問的時候,fiddler會有一個彈出框警示。
     fiddler的實現方式如下圖,從它的實現方式中我們可以很簡單的看出,fiddler只支持http/https協議的抓取,這也從實現角度上解釋了它定位成網頁調試工具的原因。
          
     監聽網卡和代理web服務器這兩種實現方式還是有挺大區別的。Fiddler能嗅探到HTTP代理的任意程序的數據包,但實際情況是,很多應用程序在一些賬號登陸的流程上是沒有走http代理的,之前在嘗試抓有些應用的登陸過程時就看到了這個問題。
     當然,fiddler的這種代理服務器的實現方式也讓它能夠設置斷點,並可以再此基礎上修改request和response報文內容。
     fiddler能支持https協議的分析,當然,前提是你先允許它抓取https數據,這個可以自己設置。像chrome這種登陸密碼不加密的工具,完全可以用fiddler來偵聽到用戶名密碼。(之前這個理解有誤,更正一下。fiddler能夠抓到https協議中的內容(如Chrome這種自己不加密密碼而是用https加密的工具的用戶名密碼),原因是fiddler以一個本地服務器的形式工作,當chrome向自己服務器請求一個https的證書時,fiddler會在中間截下來,然後返回一個它自己能夠解析的https證書,並同時向真正的服務器再請求一次,並保存真正服務器返回的證書。chrome收到fiddler返回的證書後開始用這個證書加密數據,再將數據上傳。fiddler在截到這份數據後,因爲是自己給的證書,所以它能正確的解析出數據,同時將原始數據再用真正的證書加密一次,並上傳至真正的服務器。這樣就實現了https內容的抓取。)
     另外,新版fiddler還能支持win8 metro的抓包,之前開發win8 app的時候一直沒有找到一款合適的抓包工具,現在看來fiddler幫我們解決這個問題了,詳細介紹可以參考Fiddler and Windows 8 Metro-style applications
     如果你想進一步研究fiddler,可以買fiddler創始人寫的《Debugging with Fiddler: The complete reference from the creator of the Fiddler Web Debugger》這個書來深入研究。不過老美挺看重版權的,所以無論電子書還是紙質書都挺貴。
     
     因本人知識水平有限,如有錯誤的地方歡迎指正。


發佈了9 篇原創文章 · 獲贊 18 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章