在實際工作中,對應(yīng)用程序進行網(wǎng)絡(luò)抓包是分析網(wǎng)絡(luò)行為必不可少的一步,這里談一下抓包的具體過程。
Windows下一般會使用wireshark,wireshark只是一個可視化的應(yīng)用,底層還是借助了WinPcap,而WinPcap也是基于libpcap的封裝。Linux下使用tcpdump,這是基于libpcap的一個命令行工具。安卓底層是Linux,所以也是用tcpdump進行抓包。
安卓App抓包有下面幾步:
App安裝,可選擇真機或模擬器。選擇真機的好處在于App運行正常,因為是真實環(huán)境嘛,不像模擬器,有的App檢測環(huán)境時,可能會閃退。但選擇真機會因為沒有root權(quán)限或者Linux命令工具功能被限制了,不太好使。所以還是推薦使用模擬器,我一般使用雷電模擬器,其他的應(yīng)該也行。
模擬器裝好后,在控制臺下,使用adb工具進入Linux命令行界面??赏ㄟ^adb devices查看設(shè)備,再用adb -s emulator-5554 shell(這里的emulator-5554是模擬器設(shè)備的名稱,如果不是就需要替換為實際的)
在命令行敲ps命令,通過App的包名找到相應(yīng)進程,這些App進程的父進程都是一個叫做zygote或zygote64進程。記下它的PID,后面會用到。
下面要查找該PID對應(yīng)的進程占用的端口,使用命令:netstat -tunlp | grep PID,回車后打出類似下面的內(nèi)容:
tcp 0 0 172.16.1.15:44508 47.100.116.9:30300 ESTABLISHED 2039/cn.jj
tcp 0 0 172.16.1.15:54883 120.133.38.93:22001 ESTABLISHED 2039/cn.jj
udp 0 0 172.16.1.15:35936 47.100.116.9:30102 ESTABLISHED 2039/cn.jj
有了這些信息,接下來就可以抓包了。比如敲命令:tcpdump dst host 47.100.116.9 and tcp port 30300 -c 10,回車后打印出類似下面內(nèi)容:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:30:04.227803 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 1077751643:1077751659, ack 6419869, win 65320, length 16
01:30:04.235918 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [.], ack 19, win 65320, length 0
01:30:07.026371 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 16:35, ack 19, win 65320, length 19
01:30:07.026572 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 35:54, ack 19, win 65320, length 19
01:30:07.027146 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 54:73, ack 19, win 65320, length 19
01:30:07.027349 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 73:92, ack 19, win 65320, length 19
01:30:07.027442 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 92:111, ack 19, win 65320, length 19
01:30:07.027582 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 111:130, ack 19, win 65320, length 19
01:30:07.027968 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 130:165, ack 19, win 65320, length 35
01:30:07.028156 IP 172.16.1.15.44508 > 47.100.116.9.30300: Flags [P.], seq 165:184, ack 19, win 65320, length 19
10 packets captured
10 packets received by filter
0 packets dropped by kernel
這條抓包指令的意思是抓取發(fā)往主機47.100.116.9,端口30300的tcp包,抓取數(shù)量為10個。
通常要將抓包保存為pcap文件,在電腦上使用wireshark打開分析,可使用命令:tcpdump -i eth0 host 47.100.116.9 -s 0 -c 100 -nn -w /sdcard/1.pcap,這表示抓取經(jīng)過網(wǎng)卡eth0的,來自或發(fā)往主機47.100.116.9的100個網(wǎng)絡(luò)包,保存到文件/sdcard/1.pcap,這里-s 0表示抓取完整包,-nn表示不顯示抓包過程的打印信息。文章來源:http://www.zghlxwxcb.cn/news/detail-437566.html
講到這里就講完了,關(guān)于tcpdump的抓包指令可以參考網(wǎng)絡(luò)上的介紹。更多問題,歡迎再次留言評論!文章來源地址http://www.zghlxwxcb.cn/news/detail-437566.html
到了這里,關(guān)于安卓App抓包經(jīng)驗談的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!