前言:瀏覽器
抓取電腦的數據包比較簡單,使用一些抓包軟件便可實現,譬如Wireshark、Fiddle、Sniffer、Appsniff、IRIS等等,這些的使用並很少說,反正要掌握各自的過濾方法,只查看有用的數據包。其中Wireshark、Sniffer、IRIS這類能夠抓取整個局域網內全部的數據包,主要工做在數據傳輸層,Fiddle這類專用抓包工具只抓取某一類協議,譬如HTTP協議,一般工做在應用層,Fiddle支持HTTP斷點調試,可修改發送和接受前的數據包。服務器
但若是要抓手機的數據包就比較麻煩,目前我使用的方法就是經過Connectify創建wifi熱點,而後再經過Wireshark抓包。網絡
使用Connectify:tcp
安裝Connectify須要一臺有無線網卡的筆記本,安裝成功後運行Connectify,而且開啓無線鏈接。「Hotspot Name、Password」設置熱點名稱和密碼,以供手機鏈接,密碼長度至少8位。「Internet」分享一個連接,能夠有線或者無線,如今個人電腦能使用「本地鏈接 2」和「無線網絡鏈接 3」上網,隨便選一個都可,而手機就是經過這個分享的鏈接發送數據包。「Advanced」裏的是電腦無線網卡的信息,不用做修改。Start Hotspot後,個人電腦會開啓一個無線鏈接4,手機是經過它接收數據包。ide
順利開啓後,就能夠用手機鏈接了,Connectify的Clients標籤頁裏會看見一些信息,譬如分配給手機的IP地址。工具
另:Bzeek也能夠實現相似效果,但聽說須要註冊賬號,而且不夠穩定。post
使用Wireshark:網站
運行Wireshark後,選擇要抓包的鏈接,而後開始捕獲,再過濾一些包就能夠了,譬如「(ip.src==192.168.1.102 or ip.dst==192.168.1.102) and http」。加密
還有一些過濾規則如端口過濾tcp.port ==80、tcp.srcport == 80,http模式過濾http.request.method=="GET"。spa
這裏有一個疑問,我電腦明明是使用無線鏈接的,托盤也顯示無線的圖標,但抓包的時候發現,個人請求包和響應包不知爲什麼都是經過「本地鏈接2」的。
而後就能在數據包的詳細窗口裏查看相關信息,越在上面的就越是底層。
Frame: 物理層的數據幀概況
Ethernet II: 數據鏈路層以太網幀頭部信息
Internet Protocol Version 4: 網絡層IP包頭部信息
Transmission Control Protocol: 傳輸層數據段頭部信息
Hypertext Transfer Protocol: 應用層的信息
簡單來講,IP是網絡層,TCP是傳輸層,HTTP是應用層。咱們如今主要關注應用層的信息。
捕獲「行訊通」的數據
開始嗅探「本地鏈接2」的包,同時手機運行「行訊通」並查詢信息,便可獲得一個關鍵的包。
能夠看到請求地址是「http://info.gzyyjt.net:9009/unicom/Bus 」,服務器地址是「http://info.gzyyjt.net:9009 」,看這域名應該是羊羊網下的一個網站,但他們IP不相同。但關鍵問題是最後那行Line-based text data,發現手機post過去的數據是已經加密了的,不能從中獲取有用的信息。瀏覽器上直接打開剛剛提到的兩個地址,都是一些加密的數據。看來只能作到這一步了,雖然有點惋惜,但捕獲手機應用的數據包仍是成功的。
後記:
這個方法實質就是把電腦看成路由器,而後再嗅探通過這個「路由器」的數據包而達到目的。若是是Win7系統的話,如下兩行命令也能夠建立人點。
netsh wlan set hostednetwork mode=allow ssid=APName key=password
netsh wlan start hostednetwork
另:路由器的MAC地址可經過「arp -a」命令得到。