snifferview-封包嗅探分析工具
碼云git地址:https://gitee.com/lougd/snifferview.git
編譯完成的可執行檔案: https://pan.baidu.com/s/1CPKh5cWyIog2Fbn7XHFxmQ
作者聯系方式: qq:412776488 mail:[email protected]
如果覺的這個工具對你有幫助請點個star,感謝!
開發記錄:
這個工具的第一個版本是2015年做的,因為作業中經常要在不同的終端PC上抓包分析網路協議, 一直用的wireshark進行抓包分析,wireshark的安裝包比較大,每次裝起來太繁瑣,也不支持回環網路封包的捕獲,于是就起意自己做一個自己的封包協議分析工具。于是就有了這個工具的第一個版本。然后一邊使用一邊豐富工具的功能,就有了現在的這個版本。
主要功能及特點:
該工具不是一個demo,是一個穩定,切實可用,功能比較完善的網路封包修改,分析工具,如果需要經常進行網路封包的捕獲,分析,記錄可以使用這個工具。
支持本地所有網卡的網路封包嗅探捕獲,包括127地址的回環包。
支持類似wireshark的封包過濾陳述句,方便靈活的對網路封包進行過濾。
支持tcp流追蹤功能,方便的跟蹤單個的tcp資料流。
支持行程網路狀態探測,可以方便的查看指定行程的網路狀態。
支持已捕獲網路資料的匯入匯出,可以方便的隨時dump已捕獲的網路資料。
工具小巧,綠色(1mb多,只有一個可執行檔案),無任何依賴,啟動運行速度快。
C++語言開發,vs2008集成工具開發工具編譯,用vs2008打開工程根目錄下的SnifferView.sln工程檔案編譯即可。
工具功能截圖:



軟體架構
ComLib子工程:
基礎功能靜態庫,給各個子功能提供通用的基礎功能組件。
SnifferView子工程:
主功能模塊,實作主要的功能,包括網路封包的嗅探,過濾陳述句編譯決議器實作,網路協議的分析,資料流查看等等。
Dumper子工程:
例外捕獲處理模塊,捕獲未處理例外并生成例外dump和例外日志,用于分析例外原因。
SyntaxView子工程:
語法高亮控制元件,基于Scintilla改造而成,目前用于展示tcp資料流資料。
使用說明
本程式只有一個可執行程式,程式啟動后即開始封包嗅探,但這時由于沒有過濾陳述句,捕獲到的封包會有很多,可以在主界面的過濾規則框中輸入合適的過濾規則來捕獲感興趣的網路封包。具體的過濾規則和wireshark的型別,又做了一些優化,主要的規則如下。
SnifferView過濾規則:
SnifferView的過濾語法舉例:
ip.addr==192.168.168.231 過濾ip源地址或者目標地址為192.168.168.231的網路封包
icmp 過濾icmp協議的封包
tcp.src=https://bbs.csdn.net/topics/=8345 過濾tcp源埠為8345的網路封包
tcp.length>128 過濾長度大于128位元組的tcp封包,這個長度刨除ip頭和tcp頭
tcp contains "GET" 過濾內容中包含GET字串的tcp封包
tcp==0x12ff 過濾tcp用戶資料偏移4位元組取一個32位資料大小為0x12ff的封包
tcp.flag.syn 過濾有syn標記的tcp封包
tcp=="GET" 過濾tcp用戶資料偏移O位元組為GET的封包
http 過濾http協議
http.get 過濾http的get協議
http.post 過濾http post協議
http.resp 過濾http的回傳包
http.url contains "img" 過濾http的url中包含img字串的封包
過濾規則的關鍵字:
ip層:ip, ip.addr, ip.src, ip.dst, ip.length
icmp層:icmp
tcp層:tcp.port, tcp.src, tcp.dst, tcp.length,tcp.flag.syn|ack|fin|rst|psh|urg, tcp(a為偏移,b是具體的資料型別,沒有a的意思是偏移為0), tcp contains “aaa”(包含字串aaa的tcp封包)
udp層:和tcp類似,不再贅述
應用層協議:
http協議:http, http.get, http.post, http.head, http.options, http.put, http.delete, http.tarce, http.url contains "aaa"(http的url包含aaa的封包)
過濾規則的資料型別(用于tcp或者udp):
n8(8位無符號整型),n16(16位無符號整型),n32(32位無符號整型),byte(同n8),bytes(byte串列),char(字符型),chars(字串)
過濾規則的邏輯連接符:
>(大于), <(小于), >=(大于等于), <=(小于等于), ==(等于), !=(不等于), &(按位與)
各個過濾運算式可以用and(&&)或者or(||)進行連接,可以使用小括號 比如獲取長度大于128的GET包或者POST包:
tcp.length>128 and (tcp==”GET” or tcp== “POST”)
SnifferView語法相對wireshark的主要改進:
wireshark過濾封包內容的時候語法是這樣的tcp,a為偏移,b為匹配的長度,偏移是從tcp頭開始的,并且tcp頭還是變長的,并且只能按位元組逐個匹配,用起來很不方便,我們通常關注的并不是tcp頭中的內容,而是用戶資料的內容,因此SnifferView過濾內容的時候偏移是從用戶資料開始的,程式自動計算tcp頭的長度,支持各種的資料型別的匹配,自動計算匹配的長度,如果匹配的字串里有\n\r將自動換為回車和換行。
比如:
tcp==0x33ee 從用戶資料偏移4位元組匹配一個16位整型資料,大小為0x33ee
tcp=="aaaa" 從用戶資料偏移5個位元組匹配一個字串aaaa
關于配置界面里的主機位元組序和網路位元組序:
選主機位元組序的意思是封包里的資料是以主機位元組序的方式存盤的,選網路位元組序的意思是封包里的資料是以網路位元組序存盤的。
比如:
tcp==0x12345678
如果選的是主機位元組序會從用戶資料偏移4位元組的地方開始依次匹配0x78,0x56,0x34,0x12
如果選的是網路位元組序會從用戶資料偏移4位元組的地方開始依次匹配0x12,0x34,0x56,0x78
關于作者
qq:412776488 mail:[email protected]
有問題或者好的建議可以聯系作者,感謝!
uj5u.com熱心網友回復:
多謝樓主分享uj5u.com熱心網友回復:

支持開源
uj5u.com熱心網友回復:

點贊
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
大贊,樓主還是選擇一個開源協議比較好!轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/26986.html
標籤:進程/線程/DLL
上一篇:求助:3d模型輪廓線提取演算法
