####
這個沒有圖形界面,可以在Linux服務器上運行,這是比wireshark優秀的地方,
###
首先手機root
####
然后adb要能連接手機
####
下載tcpdump
下載連接如下:
http://www.androidtcpdump.com/android-tcpdump/downloads
#####
copy到手機上(root過)
然后將下載到的tcpdump拷貝到手機某個目錄下
adb push /Users/liqian/Downloads/tcpdump /storage/sdcard0/tcpdump
####
安裝到系統目錄
進入adb shell,然后再獲取su權限.
cp /sdcard/liqian/tcpdump /system/bin/tcpdump
這一步copy如果報錯:adb向手機寫入文件,Read-only file system
執行這個命令:mount -o rw,remount /system
####
給tcpdump添加執行權限
命令:chmod 755 /system/bin/tcpdump
####
執行tcpdump
1|shell@ja3gduosctc:/system/bin $ su
root@ja3gduosctc:/system/bin # ./tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
####
使用tcpdump抓包
代碼如下:
tcpdump -i wlan0 -s 0 -w /sdcard/1.pcap
可以結束時使用Ctrl+c快捷鍵讓tcpdump結束抓包,抓到數據會存到/sdcard/1.pcap文件內
###
tcpdump命令學習
tcpdump支持相當多的不同參數,如:
使用-i參數指定tcpdump監聽的網絡界面,這在計算機具有多個網絡界面時非常有用,
使用-c參數指定要監聽的數據包數量,
使用-s:"-s 0": capture the entire packet(-s參數用以指定數據包捕獲長度,此處指定為0,意為抓取完整的數據包)
使用-w參數指定將監聽到的數據包寫入文件中保存
####
監視指定主機的數據包
打印所有進入或離開sundown的數據包.
tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發出的所有的數據包
tcpdump host 210.27.48.1
tcpdump -i wlan0 -s 0 -c 2 -X icmp
使用十六進制輸出
當我們想要檢查包的內容是否有問題的時候,十六進制的輸出很有幫助:
-X 是十六進制輸出
-c 是輸出多少個,2就是輸出兩個,不加就是輸出全部,
###
基於包大小進行篩選
如果你正在查看特定大小的包,你可以使用這個參數。使用 less、greater 或者對應的數學符號進行過濾:
tcpdump less 32 tcpdump greater 64 tcpdump <= 128
###

-A:以ASCII形式打印每個包,對抓取web page很方便(最小化鏈路層報頭)。
-r 讀取我們輸出的文件,
-X 就是16進制查看,
這個地方就可以加很多的參數進行過濾了
####
更復雜的tcpdump參數是用於過濾目的,這是因為網絡中流量很大,如果不加分辨將所有的數據包都截留下來,數據量太大,反而不容易發現需要的數據包。
使用man tcpdump查看這些過濾規則的具體用法。
從上面tcpdump的輸出可以看出,tcpdump對截獲的數據並沒有進行徹底解碼,數據包內的大部分內容是使用十六進制的形式直接打印輸出的。
顯然這不利於分析網絡故障,通常的解決辦法是先使用帶-w參數的tcpdump 截獲數據並保存到文件中,
然后再使用其他程序進行解碼分析。當然也應該定義過濾規則,以避免捕獲的數據包填滿整個硬盤。
FreeBSD提供的一個有效的解碼程序為tcpshow,它可以通過Packages Collection來安裝。
###
重新打開一個終端(Terminal),執行如下命令
復制代碼代碼如下:
adb pull /sdcard/1.pcap .
###
裝Wireshark並分析pcap文件
雙擊 1.pcap文件,1.pcap文件會自動被Wireshark打開。在Wireshark的Filter內輸入如下一些過濾條件,可以更加方便地分析數 據來源。
tcp.port == 80 //過濾來自80端口的TCP數據
udp.port == 12345 //過濾來自12345端口的UDP數據
ip.src == 192.168.0.1 //過濾源IP為192.168.0.1的數據
ip.dst == 192.168.0.1 //過目的IP為192.168.0.1的數據
###
但是你抓到了你都看不懂,怎么辦????
####
