手機數據抓包以及wireshark技巧

本文主要討論一種很是方便的抓取Android和iphone手機網絡數據包的辦法,以及介紹wireshark最經常使用的技巧web

抓包工具介紹

(1).網頁抓包工具chrome

   Chrome瀏覽器插件express

   FireBug 插件  windows

   HttpWatch瀏覽器

   Fiddler服務器

   在瀏覽器chrome和firefox中可使用插件抓取網絡包,httpwatch會以插件的形式安裝在IE和firefox瀏覽器中,對web請求進行抓包。而Fiddler則是一個獨立的程序,其原理是在啓動以後開啓對127.0.0.1:8888的端口進行監聽,並將計算機上的瀏覽器的代理設置爲指向其監聽的8888端口,這樣當瀏覽器請求網頁的時候,會經過fiddler監聽的8888端口,這樣fiddler會獲取到全部請求的數據和web服務器回覆的數據。Fiddler能夠自動對IE和非IE瀏覽器的代理進行設置,打開fiddler以後,點擊IE的「工具」— 「Internet選項」—「鏈接」選項卡 – 點開「局域網設置」  在彈出的對話框中你會發現 「代理服務器」設置中的「爲LAN使用代理服務器」這個複選框是勾選上的,點擊下面的「高級」按鈕,能夠看到代理服務器已經被設置爲127.0.0.1:8888了。網絡

以下圖:mvc

1

1

對非IE瀏覽器的設置也是自動的,在fiddler的選項中能夠看出來app

點擊fiddler的菜單「Tools」—「Fiddler Options…」 能夠看到以下圖:iphone

點擊圖中的「Copy BrowserProxy Confiuration URL」獲得一個路徑,也就是BrowserPAC.js的路徑,該文件是fiddler用來設置非IE瀏覽器的代理的,至因而什麼原理,不太清楚,可是根據該js的註釋,以及fiddler選項連接的Tools tips提示,能夠看出其做用就是設置非IE瀏覽器的代理的

這是fiddler軟件的智能之處,每當開啓fiddler軟件以後,他會自動對系統中安裝的瀏覽器進行代理設置,關閉fiddler以後,他也會還原這些瀏覽器的代理設置。

從這點上來說我以爲fiddler比httpwatch更加好用。而瀏覽器的插件也能夠知足大部分的web抓包需求。

(2).網絡抓包工具

   Wireshark

   Sniffer

   這類工具主要原理是經過底層驅動,監視網卡上流過的數據,而這個數據包含網絡上全部的數據,包括從鏈路層一直到最上層應用層的全部數據包。這種抓包工具獲取的網絡數據包是最全面的,能夠抓獲除了http協議以外的其餘數據包。針對網卡捕獲,不須要設置。

Wireshark手機抓包

從網絡上面搜索到的資料看,要抓取手機中app的網絡包有下面幾種方式:

(1).將tcpdump移植到Android平臺,而後在命令行下啓動tcpdump進行抓包。Tcpdump程序實際上能夠看做是wireshark的命令行版本,將該程序移植到Android平臺直接抓包,這是一種最直接的抓包方式,而後將抓獲的數據包文件,從手機傳到windows系統上用wireshark打開進行分析,這種方式貌似不能用於蘋果手機。

(2).使用fiddler,在windows系統上打開fiddler軟件,該軟件會將咱們的電腦變成一個代理,而後在手機上設置wifi網絡,將代理指定爲開啓fiddler的那臺電腦,而且端口設置爲fiddler偵聽的8888端口,這時候使用手機訪問的數據,就會經過該代理,在fiddler中就能夠看到http的數據包。這種方法我試了半天怎麼都看不到數據包,不知道哪裏出問題了,根據原理,這種方式支持能夠經過代理訪問網絡的手機。因此從原理上說是支持Android和蘋果手機的。

(3).經過各類方式在pc電腦上創建wifi熱點,而後使用wireshark在pc電腦上監視該wifi熱點,經過手機鏈接該熱點訪問網絡。這樣wireshark會獲取全部流經該熱點的數據包這種方式適用於全部可以無線訪問的手機,也就是說全部的Android和蘋果手機。

那麼如何在pc電腦上創建wifi熱點呢,有這麼幾種辦法:

(1).Win7電腦通過設置,能夠將無線網卡設置爲wifi熱點,這種方法我之前用過,能夠成功,可是步驟繁瑣,並且不必定可以成功,其餘的windows系統估計就沒戲了。

(2).使用軟件自動創建wifi熱點,不須要本身手工配置,這樣的軟件有Connectify Hotspot,獵豹免費wifi,360免費wifi軟件,這幾個軟件我都使用過,比較好用,這種方式一樣也只能針對有無線網卡的筆記本電腦,原理也是將筆記本電腦上的無線網卡創建熱點了,只不過是軟件自動的,不須要人工設置,比方法1要方便。

注意:通過實驗發現,手機鏈接這種方式創建的熱點,所發送的數據,用wireshark去抓包,須要捕獲電腦上自己聯網的那個「網絡鏈接」,例如個人筆記本上面有一個「本地鏈接」,該鏈接是使用有線網絡的。我用獵豹免費wifi軟件創建一個熱點以後,個人電腦上多出一個「無線網絡鏈接3」,能夠看到該「無線網絡鏈接3」是獵豹生成的,可是我抓包的時候,wireshark須要捕獲「本地鏈接」上的包,也就是個人手機訪問的數據實際上仍是使用的「本地鏈接」,通訊IP也是「本地鏈接」上的IP地址,而在手機的wifi鏈接設置中看到的ip地址,在我抓的包中也搜不到,也就是說手機經過該熱點訪問網絡,實際上仍是使用的「本地鏈接」的IP地址,至因而什麼原理,我目前也不太清楚。可是下面要說的隨身wifi硬件則與此不一樣,隨身wifi是創建了網卡。

(3).使用隨身wifi硬件。這種也是很方便的方法,並且比較穩定,對筆記本電腦和臺式機均可以使用。我以前買了一個360的隨身wifi(不是打廣告,本人對360公司不感冒,可是他的隨身wifi作的確實還能夠,同事中有買小米wifi的,不太穩定)。只要在360的官網上下載驅動,直接插上隨身wifi就可使用,我推薦使用這種方法。

若是你用的是筆記本電腦可使用方法2,若是是臺式機器可使用方法3。

下面重點說明,經過隨身wifi創建熱點,而後使用wireshark抓包的辦法,其餘方式創建熱點抓包的原理同樣,只不過是創建熱點的方式不一樣而已,抓包過程沒有區別:

首先插入隨身wifi:

使用手機鏈接上面的wifi,而後打開「網絡和共享中心」,在裏面點擊咱們使用隨身wifi創建的網絡鏈接:

1

1

裏面能夠看到該連接的網卡物理地址,以及ipv6的地址信息,這應該是隨身wifi創建的一個網卡,之因此要查看這些信息,是由於咱們要肯定wireshark抓包的時候抓取那個網卡的信息,通常電腦上有多網卡或者是有虛擬機可能也會生成虛擬網卡。

打開wireshark,選擇菜單「Capture」—「Interface」在彈出的對話框中有一列是IP欄,能夠看到除了本機的網絡鏈接之外,好像其餘的網絡連接這一欄顯示的都是IPv6的地址,其中咱們能夠找到與上面網絡鏈接信息中匹配的IP地址:

1

還能夠點擊該條目右邊的「Details」按鈕,打開詳細信息對話框,在「802.3(Ethernet)」選項卡中,能夠看到網卡的物理地址,該物理地址與上面的網絡鏈接對話框中顯示的物理地址是對應的:

1

這樣能夠肯定咱們須要抓取哪一個網卡的數據,肯定以後,直接點擊該條目的「Start」按鈕,使用連上該wifi的手機隨便訪問網絡,就能夠抓取全部包了,若是嫌查看網卡信息麻煩,你能夠把這幾個顯示有數據包的網卡都抓包試一下,就應該能夠看出來隨身wifi對應的是那個網絡鏈接了。

在手機上查看鏈接該wifi被分配的IP地址信息:

1

在wireshark的抓包結果中,經過地址與http協議過濾出該地址172.24.160.3相關的數據包獲得以下的結果:

1

這些數據是我在小米手機上,經過UC瀏覽器瀏覽博格園電腦版網頁抓獲的全部數據包。

對於iphone手機的抓包過程沒有任何區別。該方法能夠抓獲全部發送自手機的數據包,包括http與非http的全部數據包。

我的認爲這種方式很是簡單方便,抓取的數據包全面,並且經過隨身wifi設置熱點不須要任何繁瑣的配置,僅僅是安裝一個驅動而已,實際上隨身wifi好像是新建了一個網卡。咱們只要用wireshark抓獲該隨身wifi創建的網卡的數據就能夠了。對於從事app開發的園友來講19塊錢買一個wifi是很是值得的,這會爲你的調試,以及研究別人的協議提供很是大的幫助。

Wireshark經常使用技巧

本節主要講解wireshark使用的一些經常使用的技巧,其實主要是使用過程當中,用的最爲頻繁的一些包的篩選規則。

Wireshark中有兩種過濾器:

(1).捕獲過濾器:告訴wireshark咱們只須要捕獲知足什麼條件的包,而不知足條件的包則不須要捕獲。因爲捕獲過濾器是在wireshark在捕獲過程當中採用的,因此捕獲過濾器的過濾條件最多侷限在傳輸層的協議,也就是能夠經過ip和端口指定規則,而更加上層的應用層協議則不能用在捕獲過濾器中。

語法: Protocol  Direction  Host(s)   Value  LogicalOperations  Other  expression

例子: tcp       dst              10.1.1.1  80     or             tcp   dst  10.2.2.2 3128

解釋:Protocol表示協議,Direction表示方向,Host指定IP地址,Value通常指定端口,可使用邏輯操做鏈接其餘的表達式來生成複合表達式。例如:

tcp dst port 8888

捕獲目的tcp端口爲8888的包

ip src host 10.1.1.1

捕獲來源地址爲10.1.1.1的包

host 10.1.1.1

捕獲目的或者來源地址爲10.1.1.1的包

not icmp

捕獲除了icmp包的全部包

有關更多的捕獲過濾器請參考wireshark的文檔

(2).顯示過濾器:該過濾器是在已經抓到的包中篩選出本身想分析的數據包,也就是說該過濾器是在捕獲工做已經完成以後作的,其數據基礎就是已經捕獲到的那些數據包,該過濾器支持的協議就是wireshark可以識別的全部協議,因爲是在已經捕獲下來的包中進行篩選,因此該過濾器中的條件表達式能夠支持全部的上層協議,其篩選條件也能夠根據每一個協議的不一樣部分進行篩選。下面以HTTP協議爲例子:

3

查看全部http請求的數據包(包括GET,POST等等的請求,只要是web請求都算)

4

全部POST請求的數據包

5

全部請求的URL中包含字符串」.jpg」的包

6

全部http響應狀態碼爲200的包

7

能夠看到HTTP協議有不少字段提供篩選,wireshark還支持matches操做符,進行正則篩選

1

查找全部http請求URL中包含 /mvc/字符串而且請求的是帶參數的aspx頁面的包

關於各類協議的字段文檔能夠查閱wireshark的文檔,都有詳細說明,包括協議的每一個字段部分的含義。其實對於作app或者是web開發的來講常見的http篩選字段已經足夠用了

此外wireshark除了能夠根據協議的每一個字段的內容值進行篩選以外,還能夠指定數據包中的第幾個字節的二進制數據值進行篩選,這種經過包中二進制數據進行篩選的方法通常在socket的私有二進制協議中比較有用,這些協議通常是私有定義的,而且是基於二進制的協議,例如第幾個字節表示什麼意思,wireshark確定是不能識別這些包的,那麼咱們能夠本身根據二進制數據進行篩選

1

篩選出ip源或目標地址爲172.16.1.126 而且udp端口爲50798 而且rtp包的第2個字節的值是0xE0的包,這樣的包是rtp數據包一幀結束的包。

固然上面的例子咱們是能夠經過rtp協議的字段rtp.marker==1爲條件來進行篩選的,舉上面的例子是爲了說明如何根據包中的二進制數據值進行篩選。

Wireshark有很是強大的抓包與過濾功能,本節也僅僅列舉了其中最經常使用的篩選規則,在顯示過濾器的規則中wireshark能夠根據每一層的協議進行篩選,例如網絡層(IP,ARP,ICMP等協議),傳輸層(TCP,UDP)等協議,應用層(HTTP,RTMP,RTSP等協議),各層協議的字段能夠經過邏輯與(&&,and),或(||,or),非(|,not)等運算符鏈接成複合表達式進行過濾。

更加詳細的wireshark的過濾規則能夠參考wireshark的官方文檔。

對博客園提點建議:上傳相冊的圖片要是能批量上傳就行了,每次寫篇文章,上傳十幾二十張圖片很是痛苦

相關文章
相關標籤/搜索