前言
最近公司有個(gè)項(xiàng)目需要驗(yàn)證APP應(yīng)用在一段時(shí)間內(nèi)消耗的流量統(tǒng)計(jì)肩豁,與后臺(tái)數(shù)據(jù)平臺(tái)以及APP自身打印的log日志進(jìn)行核對(duì)對(duì)比分析徒欣。具體分以下幾步執(zhí)行:
在Android系統(tǒng)中安裝系統(tǒng)數(shù)據(jù)埋點(diǎn)采集的APP-->運(yùn)行設(shè)備一段時(shí)間-->設(shè)備關(guān)機(jī)重啟:
1.在后臺(tái)數(shù)據(jù)平臺(tái)通過數(shù)據(jù)庫指令查看并統(tǒng)計(jì)這段時(shí)間內(nèi)系統(tǒng)應(yīng)用所消耗的流量數(shù)據(jù)
2.在系統(tǒng)日志log中查看系統(tǒng)應(yīng)用消耗的流量統(tǒng)計(jì)(以包名:bytes格式輸出打印)
3.通過Android自身的TCP收發(fā)長(zhǎng)度統(tǒng)計(jì)功能進(jìn)行分析
4.通過tcpdump+wireshark工具進(jìn)行抓包統(tǒng)計(jì)分析系統(tǒng)應(yīng)用消耗的流量(此步驟比較難實(shí)現(xiàn),需要兩個(gè)腳本進(jìn)行復(fù)制抓取和分析【tcpdump和busybox】)
---tcpdump需根據(jù)設(shè)備的CPU型號(hào)或平臺(tái)型號(hào)(MTK、高通)進(jìn)行下載,否則執(zhí)行抓取指令的時(shí)候會(huì)報(bào)錯(cuò)音比,數(shù)據(jù)是錯(cuò)誤或者為空。
---busybox一個(gè)通過包名來確認(rèn)某個(gè)包在讀取系統(tǒng)內(nèi)存IP(服務(wù)器端)地址氢惋,以此來通過wireshark工具進(jìn)行分析統(tǒng)計(jì)
本篇只講解第3和第4點(diǎn)數(shù)據(jù)分析過程
一洞翩、通過Android自身的TCP收發(fā)長(zhǎng)度統(tǒng)計(jì)功能進(jìn)行分析
首先,設(shè)備進(jìn)行root(具體root自行百度)焰望,開啟USB調(diào)試模式骚亿,進(jìn)入系統(tǒng)(adb shell ps)查看存在包名
其次,進(jìn)入系統(tǒng)的/proc/uid_stat/ 目錄熊赖,查看并獲取到應(yīng)用的uid號(hào)来屠;
最后,通過指定的UID號(hào)以及操作當(dāng)前應(yīng)用來查看當(dāng)前應(yīng)用的tcp_sed和tcp_rcv(兩者之和就是該應(yīng)用消耗總流量)秫舌;
二的妖、通過tcpdump+wireshark工具進(jìn)行抓包統(tǒng)計(jì)分析系統(tǒng)應(yīng)用消耗的流量
>詳細(xì)操作步驟如下:
抓包準(zhǔn)備
1. Android手機(jī)需要先獲得root權(quán)限。一種是否獲得root權(quán)限的檢驗(yàn)方法:安裝并打開終端模擬器(可通過安卓市場(chǎng)等渠道獲得)足陨。在終端模擬器界面輸入su并回車嫂粟,若報(bào)錯(cuò)則說明未root,若命令提示符從$變#則為rooted墨缘;因使用的是車鏡產(chǎn)品星虹,通過wifi方式連接,故直接輸入以下步驟即可,
adb connect x.x.x.x ---> adb root? --->??adb connect x.x.x.x --->adb remount --->adb connect x.x.x.x?
2. 如果Android手機(jī)尚未root镊讼,可通過superoneclick或其它方法進(jìn)行root處理(需要先安裝Microsoft .NET Framework)宽涌。Superoneclick刷root權(quán)限教程:(http://soft.shouji.com.cn/news/501.shtml)
3. 需要先獲得 Android SDK
4. 需要獲得tcpdump軟件,獲取地址(https://pan.baidu.com/s/1HNKlP81WB6Ir6sA1EMPfBw)
5.需要獲得buysbox蝶棋,獲取地址(https://pan.baidu.com/s/1hTYnZYGBe3T13fPIcMAZOw)
抓包步驟
1. 將Android手機(jī)與電腦USB相連(或WiFi連接)卸亮,打開windows命令提示符窗口
2. 將tcpdump程序copy至android手機(jī)(該命令前面那個(gè)目錄文件為本地地址,后面那個(gè)目錄為目的手機(jī)端地址)
C:\android-sdk-windows\platform-tools>adb push c:/tcpdump /data/local/tcpdump
3. 修改tcpdump的權(quán)限
C:\android-sdk-windows\platform-tools>adb shell
#chmod 777 /data/local/tcpdump
4. 進(jìn)入root權(quán)限
C:\android-sdk-windows\platform-tools>adb shell
$ su
在運(yùn)行su指令后玩裙,手機(jī)終端桌面會(huì)出現(xiàn)相應(yīng)提示信息以確認(rèn)您對(duì)root操作的認(rèn)可兼贸。
5. 運(yùn)行tcpdump段直,輸入以下命令啟動(dòng)抓包(指令相關(guān)參數(shù)請(qǐng)自行百度)。
cmd窗口實(shí)時(shí)打印指令:/data/local/tcpdump -p -vv -s 0 -C 100 -w /sdcard/capture.pcap??
通過cmd窗口運(yùn)行后臺(tái)指令:/data/local/tcpdump -p -vv -s 0 -C 100 -w /sdcard/capture.pcap? &
殺掉tcpdump后臺(tái)運(yùn)行指令:ps(查看tcpdump的PID號(hào))--->kill? PID
6. 在手機(jī)端執(zhí)行相應(yīng)需要進(jìn)行抓包分析的操作溶诞,執(zhí)行完成后在命令提示符窗口執(zhí)行Ctrl+C中斷抓包進(jìn)程
7. 將抓包結(jié)果復(fù)制至本地(前面那個(gè)目錄為手機(jī)端地址鸯檬,后面那個(gè)目錄為本地地址),或通過拷貝的方式進(jìn)行粘貼復(fù)制到電腦端
C:\android-sdk-windows\platform-tools>adb pull /sdcard/capture.pcap c:/
8. 使用Wireshark工具查看抓包文件capture.pcap
合并多個(gè)文件
由于通過tcpdump抓取的數(shù)據(jù)量過多螺垢,文件有很多喧务,需要合并文件后才好進(jìn)行用工具分析,所以這里要合并下抓取的文件枉圃,具體合并方式見(https://blog.csdn.net/qq_20480611/article/details/50774686)
獲取應(yīng)用的服務(wù)器IP地址
1.把busybox腳本放置設(shè)備的某個(gè)路徑下功茴,通過buysbox腳本獲得nxosdata包名的IP地址為x.x.x.x
使用Wireshark工具分析
1.經(jīng)tcpdump腳本抓取的數(shù)據(jù),通過wireshark工具分析孽亲,并通過過濾IP地址(指令為:ip.src==x.x.x.x[src為發(fā)送痊土;dst為接收]),統(tǒng)計(jì)得出xx應(yīng)用所消耗的流量為xxxBytes
2.軟件下載安裝墨林,見度娘
3.通過過濾條件進(jìn)行過濾
點(diǎn)擊wireshark工具的“Statistics”-->“EndPoint”,勾選“Limit to display filter”選項(xiàng),如下圖所示
點(diǎn)擊“Statistics”-->“IO Graphs”犯祠,顯示I/O圖表
點(diǎn)擊“Statistics”-->“TCP Scream Graph” -->“Throughput”旭等,顯示TCP流吞吐量圖形
點(diǎn)擊“統(tǒng)計(jì)”-->“已解析的地址”,查看已解析的地址和域名
點(diǎn)擊“統(tǒng)計(jì)”-->“conversatioss”衡载,查看IP地址包的流量消耗大小bytes
IP地址和域名對(duì)應(yīng)消耗流量大小對(duì)比
總結(jié):
1搔耕、此次在原計(jì)劃抓包采集流量數(shù)據(jù)是在物聯(lián)網(wǎng)卡(SIM卡)的基礎(chǔ)上執(zhí)行,但因抓取的數(shù)據(jù)在wireshark工具上分析是空白(局域網(wǎng)的數(shù)據(jù))痰娱,故放棄此方法
2弃榨、采用WiFi熱點(diǎn)的方式進(jìn)行抓包采集流量數(shù)據(jù),操作步驟見下圖
參考資料:
1.http://blog.51cto.com/fangxin/735178
2.https://blog.csdn.net/zhuyunier/article/details/79043833