做過網(wǎng)絡(luò)方面開發(fā)的同學都知道,一個適用的抓包工具對工作問題的分析是很有用的。前段時間我也在折騰網(wǎng)絡(luò)方面的相關(guān)開發(fā),所以又重新使用了一下網(wǎng)絡(luò)抓包工具。接下來就介紹一下現(xiàn)在用的比較多的幾個網(wǎng)絡(luò)抓包工具。
基本介紹:
1、wireshark:
wireshark的前身是Ethereal,2006年因為其創(chuàng)始人Gerald Combs的跳槽而改名為wireshark。它是一個跨平臺的軟件,可以在unix系列、linux、mac os、windows等多個平臺上面進行網(wǎng)絡(luò)協(xié)議抓包工作。同時他也是一個開源軟件,有興趣的話可以下載
源碼深入了解。我們可以通過wireshark
官網(wǎng)進一步了解相關(guān)知識及下載該軟件。
2、fiddler
fiddler的定位是網(wǎng)頁調(diào)試工具,能記錄所有客戶端和服務器的http和https請求,允許你監(jiān)視,設(shè)置斷點,甚至修改輸入輸出數(shù)據(jù)。我們還可以為fiddler安裝自己所需的插件,從而更好的利用fiddler的強大功能。詳細介紹信息可以通過fiddler
官網(wǎng)進一步了解,
3、IEInspector HTTP Analyzer
IEInspector HTTP Analyzer同樣能夠提供監(jiān)控、跟蹤、調(diào)試和分析http/https的功能。HTTP Analyzer的很多特色功能在
這里有比較詳細的介紹,如果你有這方面的需求,可以從進一步了解。不過,這是一個付費軟件,你可以先使用一段時間,試用版
下載地址。
4、sniffer
還是大學的時候用過這個這個抓包工具,那個時候還是覺得這個工具挺神奇的,后來用的就用的少了。前段時間想重新裝一次試試,發(fā)現(xiàn)其安裝過程太繁瑣了,并且安裝后沒法偵聽到網(wǎng)卡,估計是因為自己下載的版本太低的緣故。反正現(xiàn)在也只是抱著再玩玩這個工具的心態(tài)去裝的,用不了所以就放棄卸載了。
深入了解:
對于上述的四種抓包工具,個人是比較推薦wireshark和fiddler的,這兩個工具在功能上基本可以互補,能完成你的抓包常用需求,是網(wǎng)絡(luò)開發(fā)的利器。下面我也會重點介紹這兩個工具,并會簡要分析這兩個工具的異同點,同時也會嘗試著去了解這兩個工具的部分實現(xiàn)方式。
至于這兩個工具的使用方式就不做過多介紹了,網(wǎng)上這方面的教程比較全,下面的提到的幾篇文章應該已經(jīng)能夠基本滿足需求,講的也足夠詳細,我也是通過看這些文章來開始熟悉使用的。
wireshark使用教程:
上面的簡單介紹里面已經(jīng)講到了wireshark開源和跨平臺的特點,接下來介紹一下wireshark的其他幾個重要的特點。
wireshark的界面開發(fā)用的是GTK+ widget toolkit,當然如果你不喜歡界面, TShark也還是能滿足你的需求。
wireshark使用pcap network library來進行封包捕捉。Lipcap(Linux)或者Winpcap(Windows)。windows平臺下,在安裝wireshark的時候你就會發(fā)現(xiàn)會提示你安裝winpcap,當然,如果你已經(jīng)安裝過了就沒有這個提示了。
WinPcap(Windows Packet Capture)是Windows平臺下的鏈路層網(wǎng)絡(luò)訪問工具,其目的在于為Windows應用程序提供訪問網(wǎng)絡(luò)底層的能力。
WinPcap功能:
獲得網(wǎng)卡設(shè)備列表及其高級信息
打開一個網(wǎng)卡適配器并將其設(shè)置成混雜模式
捕獲數(shù)據(jù)包
設(shè)置過濾器
將數(shù)據(jù)包存儲為文件并處理離線文件
發(fā)送數(shù)據(jù)包
收集網(wǎng)絡(luò)通信流量的統(tǒng)計信息
但是,WinPcap不能修改數(shù)據(jù)包或者攔截數(shù)據(jù)包
WinPcap架構(gòu):
網(wǎng)絡(luò)數(shù)據(jù)包過濾器(Netgroup Packet Filter,NPF)是一個協(xié)議驅(qū)動,是WinPcap的核心部件,它處理網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包,并向應用層提供捕捉、發(fā)送和分析數(shù)據(jù)包的服務。
packet.dll是一個提供了一系列底層函數(shù)的動態(tài)鏈接庫,功能包括:
安裝、啟動和停止NPF驅(qū)動設(shè)備
對網(wǎng)絡(luò)數(shù)據(jù)包進行嗅探
發(fā)送原始的數(shù)據(jù)報
獲取網(wǎng)卡列表和每一個網(wǎng)絡(luò)的相關(guān)信息
對網(wǎng)卡查詢和設(shè)置底層參數(shù)
能Wpcap.dll是一個含有WinPcap公共API的動態(tài)鏈接庫,它導出一系列函數(shù)供捕獲網(wǎng)絡(luò)數(shù)據(jù)包和分析網(wǎng)絡(luò),功能包括:
對網(wǎng)絡(luò)數(shù)據(jù)包進行嗅探
發(fā)送原始的數(shù)據(jù)報
獲取網(wǎng)卡列表和每一個網(wǎng)絡(luò)的相關(guān)信息
將數(shù)據(jù)包信息保存到磁盤
在更高層上創(chuàng)建包過濾規(guī)則并應用到底層
因為使用winpcap是直接進行網(wǎng)卡抓包的,所以Wireshark能夠捕獲到經(jīng)過網(wǎng)卡的所有包,但是這樣也造成在用wireshark對HTTPS包抓取的時候它只能抓到解析前的包數(shù)據(jù),一般情況下不能直接解析,當然如果你一定要解析內(nèi)容頁是可以做到的,網(wǎng)上搜索一下也能找到相關(guān)的教程。
wireshark另外一個非常強大的功能呢就是它的過濾器,包括DisplayFilters和CaptureFilters,熟練配合使用這個這兩個Filter能夠讓你只看到你所需要的包。
捕捉過濾器(CaptureFilters):用于決定將什么樣的信息記錄在捕捉結(jié)果中。需要在開始捕捉前設(shè)置。
顯示過濾器(DisplayFilters):在捕捉結(jié)果中進行詳細查找。他們可以在得到捕捉結(jié)果后隨意修改。
另外wireshark也支持一部分功能的擴展,wireshark對常見協(xié)議的支持已經(jīng)比較完善,當然,如果你需要它對某些新協(xié)議進行支持的話你也可以安裝相應的插件。
fiddler:
fiddler的實現(xiàn)方式和wireshark不同,它并不對網(wǎng)卡進行監(jiān)聽,而只是以代理web服務器的形式工作。它使用代理地址:127.0.0.1,端口:8888。當Fiddler退出的時候它會自動注銷,這樣就不會影響別的程序。他的實現(xiàn)方式也解釋了為什么使用fiddler進行網(wǎng)絡(luò)抓包的時候,當某些應用進行沒有真實證書的https訪問的時候,fiddler會有一個彈出框警示。
fiddler的實現(xiàn)方式如下圖,從它的實現(xiàn)方式中我們可以很簡單的看出,fiddler只支持http/https協(xié)議的抓取,這也從實現(xiàn)角度上解釋了它定位成網(wǎng)頁調(diào)試工具的原因。
監(jiān)聽網(wǎng)卡和代理web服務器這兩種實現(xiàn)方式還是有挺大區(qū)別的。Fiddler能嗅探到HTTP代理的任意程序的數(shù)據(jù)包,但實際情況是,很多應用程序在一些賬號登陸的流程上是沒有走http代理的,之前在嘗試抓有些應用的登陸過程時就看到了這個問題。
當然,fiddler的這種代理服務器的實現(xiàn)方式也讓它能夠設(shè)置斷點,并可以再此基礎(chǔ)上修改request和response報文內(nèi)容。
fiddler能支持https協(xié)議的分析,當然,前提是你先允許它抓取https數(shù)據(jù),這個可以自己設(shè)置。像chrome這種登陸密碼不加密的工具,完全可以用fiddler來偵聽到用戶名密碼。(之前這個理解有誤,更正一下。fiddler能夠抓到https協(xié)議中的內(nèi)容(如Chrome這種自己不加密密碼而是用https加密的工具的用戶名密碼),原因是fiddler以一個本地服務器的形式工作,當chrome向自己服務器請求一個https的證書時,fiddler會在中間截下來,然后返回一個它自己能夠解析的https證書,并同時向真正的服務器再請求一次,并保存真正服務器返回的證書。chrome收到fiddler返回的證書后開始用這個證書加密數(shù)據(jù),再將數(shù)據(jù)上傳。fiddler在截到這份數(shù)據(jù)后,因為是自己給的證書,所以它能正確的解析出數(shù)據(jù),同時將原始數(shù)據(jù)再用真正的證書加密一次,并上傳至真正的服務器。這樣就實現(xiàn)了https內(nèi)容的抓取。)
因本人知識水平有限,如有錯誤的地方歡迎指正。
來源:http://blog.csdn.net/lisztlee/article/details/8221135