記錄一次使用tcpdump+wireshark抓白分析的過程
- 2019 年 10 月 10 日
- 筆記
前言
最近公司有個項目需要驗證APP應用在一段時間內消耗的流量統計,與後台數據平台以及APP自身列印的log日誌進行核對對比分析。具體分以下幾步執行:
在Android系統中安裝系統數據埋點採集的APP–>運行設備一段時間–>設備關機重啟:
1.在後台數據平台通過資料庫指令查看並統計這段時間內系統應用所消耗的流量數據
2.在系統日誌log中查看系統應用消耗的流量統計(以包名:bytes格式輸出列印)
3.通過Android自身的TCP收髮長度統計功能進行分析
4.通過tcpdump+wireshark工具進行抓包統計分析系統應用消耗的流量(此步驟比較難實現,需要兩個腳本進行複製抓取和分析【tcpdump和busybox】)
—tcpdump需根據設備的CPU型號或平台型號(MTK、高通)進行下載,否則執行抓取指令的時候會報錯,數據是錯誤或者為空。
—busybox一個通過包名來確認某個包在讀取系統記憶體IP(伺服器端)地址,以此來通過wireshark工具進行分析統計
本篇只講解第3和第4點數據分析過程
一、通過Android自身的TCP收髮長度統計功能進行分析
首先,設備進行root(具體root自行百度),開啟USB調試模式,進入系統(adb shell ps)查看存在包名

查看包名
其次,進入系統的/proc/uid_stat/ 目錄,查看並獲取到應用的uid號;
最後,通過指定的UID號以及操作當前應用來查看當前應用的tcp_sed和tcp_rcv(兩者之和就是該應用消耗總流量);

TCP統計
二、通過tcpdump+wireshark工具進行抓包統計分析系統應用消耗的流量
>詳細操作步驟如下:
抓包準備
1. Android手機需要先獲得root許可權。一種是否獲得root許可權的檢驗方法:安裝並打開終端模擬器(可通過Android市場等渠道獲得)。在終端模擬器介面輸入su並回車,若報錯則說明未root,若命令提示符從$變#則為rooted;因使用的是車鏡產品,通過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手機尚未root,可通過superoneclick或其它方法進行root處理(需要先安裝Microsoft .NET Framework)。Superoneclick刷root許可權教程:(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手機與電腦USB相連(或WiFi連接),打開windows命令提示符窗口
2. 將tcpdump程式copy至android手機(該命令前面那個目錄文件為本地地址,後面那個目錄為目的手機端地址)
C:android-sdk-windowsplatform-tools>adb push c:/tcpdump /data/local/tcpdump
3. 修改tcpdump的許可權
C:android-sdk-windowsplatform-tools>adb shell
#chmod 777 /data/local/tcpdump
4. 進入root許可權
C:android-sdk-windowsplatform-tools>adb shell
$ su
在運行su指令後,手機終端桌面會出現相應提示資訊以確認您對root操作的認可。
5. 運行tcpdump,輸入以下命令啟動抓包。
/data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
6. 在手機端執行相應需要進行抓包分析的操作,執行完成後在命令提示符窗口執行Ctrl+C中斷抓包進程
7. 將抓包結果複製至本地(前面那個目錄為手機端地址,後面那個目錄為本地地址),或通過拷貝的方式進行粘貼複製到電腦端
C:android-sdk-windowsplatform-tools>adb pull /sdcard/capture.pcap c:/
8. 使用Wireshark工具查看抓包文件capture.pcap
合併多個文件
由於通過tcpdump抓取的數據量過多,文件有很多,需要合併文件後才好進行用工具分析,所以這裡要合併下抓取的文件,具體合併方式見(https://blog.csdn.net/qq_20480611/article/details/50774686)
獲取應用的伺服器IP地址
1.把busybox腳本放置設備的某個路徑下,通過buysbox腳本獲得nxosdata包名的IP地址為x.x.x.x

獲取應用的伺服器IP地址
使用Wireshark工具分析
1.經tcpdump腳本抓取的數據,通過wireshark工具分析,並通過過濾IP地址(指令為:ip.src==x.x.x.x[src為發送;dst為接收]),統計得出xx應用所消耗的流量為xxxBytes
2.軟體下載安裝,見度娘
3.通過過濾條件進行過濾
點擊wireshark工具的「Statistics」–>「EndPoint」,勾選「Limit to display filter」選項,如下圖所示

統計的應用消耗流量1
點擊「Statistics」–>「IO Graphs」,顯示I/O圖表

I/O圖表
點擊「Statistics」–>「TCP Scream Graph」 –>「Throughput」,顯示TCP流吞吐量圖形

TCP流圖形圖吞吐量
參考資料:
1.http://blog.51cto.com/fangxin/735178
2.https://blog.csdn.net/zhuyunier/article/details/79043833