Wireshark抓取本地Tcp包(任何數據包)


沒有任何一個程序員在做項目的時候不會遇到網絡編程的問題,要解決這些問題除了對各種網絡協議深入了解之外,還需要掌握各種網絡分析工具的用法,不用多說wireshark絕對是這方面的翹楚,可惜的是,wireshark不能對本地接口(loopback,或者127.0.0.1)進行直接抓包。

wireshark的工作原理

這里面的原理其實很簡單,wireshark可以通過操作系統來訪問所有的網絡adapter,通俗點,就是網卡,並把網卡上的traffic截獲,拷貝,用於數據包的分析。所以wireshark的使用前提是:你希望截獲的數據包是通過網卡收發的!而loopback接口上的數據因為其特殊性(本地還回),是在操作系統內部轉發的,不會通過網卡,類似於進程間通信。因此wireshark從工作原理上就不能夠獲得loopback上的traffice。

解決方案

百度上有不少解決方案,但很多關鍵字就是:RawCap或windows沒法截取loopback數據包。其實這些方案沒有從本質上解決問題。現在一個比較好的解決方案是用npcap,這個工具是北大的一個博士,叫做Luo yang,開發的。源碼放在https://github.com/nmap/npcap,還在持續維護中。這個工具的原理大概就是虛擬了一個網卡讓操作系統把loopback的數據鏡像一份到npcap adapter,然后wireshark可以通過截取這個npcap adatper上的數據包來獲得對本地數據包進行分析的一個途徑。大家不要小看了這個東西,在npcap adatper上,wireshark抓到的可是本地的所有數據包,這個不得了,用處大了,特別是對於需要深入了解各種庫的工作原理的。它可以抓取各種:

  • http包,用於web接口的分析(Java程序員各種用soap接口,rest接口的,如果不了解http協議,不知道抓包來看,就沒法理解各種mediaType對應的http entity,就沒法不受限的使用各種web接口來完成各種場景的開發)
  • tcp包,用於各種基於tcp的通信接口/協議的分析(知道嗎,這貨能夠抓各種ejb遠程調用,雖然每個應用服務器的廠商在實現J2EE規范的時候,都有自己的底層通信協議,但是通過這貨,你就可以看到具體是怎么通信的)

具體安裝配置方法

廢話不多說,后面還可能會在這個方面多寫幾篇文章,先把最基礎的安裝配置方法列個各位。(這里只介紹windows下面的用法) 
首先,當然是先要安裝npcap。上頭我已經給過一個github的地址了,那是源碼。你可以在上面找每個release的安裝包路徑。這里再直接給一個: 
https://github-cloud.s3.amazonaws.com/releases/35855357/bece22ea-9ab5-11e6-88ad-304fd50e2df0.exe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20161031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20161031T022347Z&X-Amz-Expires=300&X-Amz-Signature=10f67cbca359526bd638004a28e2a3d183a1d68ac755419083cc30676514e742&X-Amz-SignedHeaders=host&actor_id=8413239&response-content-disposition=attachment%3B%20filename%3Dnpcap-0.10-r12.exe&response-content-type=application%2Foctet-stream 
先npcap安裝: 
這里寫圖片描述 
這里寫圖片描述 
安裝完之后,你可以看到,在你的網絡管理中心多了一塊網卡(Npcap loopback Adapter): 
這里寫圖片描述
打開你的wireshark: 
你會發現,也多了一個可以監聽的接口: 
這里寫圖片描述
沒錯,通過這個東東你就可以直接截獲本地的Http包了 
來,跑一個試試: 
這里寫圖片描述
看到這個127.0.0.1了嗎?這可是貨真價實的本地http包。 
除了http包,之外,其他的tcp包也給你們瞅瞅: 
這里寫圖片描述
看到了沒,這是java的遠程調用

注意事項

1, 這個工具是很好用,但是也有缺陷,如果你裝了之后,突然有某一天發現: 
這里寫圖片描述 
你的wifi居然沒法通過dhcp獲得IP了,就是這個家伙搞的鬼。解決方案,目前是在device manger里面把它刪了,重啟電腦,我會在github上報一個Issue的。 
2,另外,請把你的wireshark升級到比較新的版本,不要是1.9.xx以下的版本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM