記錄一次使用tcpdump+wireshark抓包分析的過(guò)程

前言

最近公司有個(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)通過(guò)數(shù)據(jù)庫(kù)指令查看并統(tǒng)計(jì)這段時(shí)間內(nèi)系統(tǒng)應(yīng)用所消耗的流量數(shù)據(jù)

2.在系統(tǒng)日志log中查看系統(tǒng)應(yīng)用消耗的流量統(tǒng)計(jì)(以包名:bytes格式輸出打?。?/p>

3.通過(guò)Android自身的TCP收發(fā)長(zhǎng)度統(tǒng)計(jì)功能進(jìn)行分析

4.通過(guò)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è)通過(guò)包名來(lái)確認(rèn)某個(gè)包在讀取系統(tǒng)內(nèi)存IP(服務(wù)器端)地址,以此來(lái)通過(guò)wireshark工具進(jìn)行分析統(tǒng)計(jì)

本篇只講解第3和第4點(diǎn)數(shù)據(jù)分析過(guò)程

一、通過(guò)Android自身的TCP收發(fā)長(zhǎng)度統(tǒng)計(jì)功能進(jìn)行分析

首先,設(shè)備進(jìn)行root(具體root自行百度),開(kāi)啟USB調(diào)試模式,進(jìn)入系統(tǒng)(adb shell ps)查看存在包名

查看包名

其次,進(jìn)入系統(tǒng)的/proc/uid_stat/ 目錄,查看并獲取到應(yīng)用的uid號(hào);

最后,通過(guò)指定的UID號(hào)以及操作當(dāng)前應(yīng)用來(lái)查看當(dāng)前應(yīng)用的tcp_sed和tcp_rcv(兩者之和就是該應(yīng)用消耗總流量);

TCP統(tǒng)計(jì)

二、通過(guò)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)方法:安裝并打開(kāi)終端模擬器(可通過(guò)安卓市場(chǎng)等渠道獲得)。在終端模擬器界面輸入su并回車,若報(bào)錯(cuò)則說(shuō)明未root,若命令提示符從$變#則為rooted;因使用的是車鏡產(chǎn)品,通過(guò)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,可通過(guò)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連接),打開(kāi)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??

通過(guò)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è)目錄為本地地址),或通過(guò)拷貝的方式進(jìn)行粘貼復(fù)制到電腦端

C:\android-sdk-windows\platform-tools>adb pull /sdcard/capture.pcap c:/

8. 使用Wireshark工具查看抓包文件capture.pcap

合并多個(gè)文件

由于通過(guò)tcpdump抓取的數(shù)據(jù)量過(guò)多,文件有很多,需要合并文件后才好進(jìn)行用工具分析,所以這里要合并下抓取的文件,具體合并方式見(jiàn)(https://blog.csdn.net/qq_20480611/article/details/50774686)

獲取應(yīng)用的服務(wù)器IP地址

1.把busybox腳本放置設(shè)備的某個(gè)路徑下,通過(guò)buysbox腳本獲得nxosdata包名的IP地址為x.x.x.x

獲取應(yīng)用的服務(wù)器IP地址

使用Wireshark工具分析

1.經(jīng)tcpdump腳本抓取的數(shù)據(jù),通過(guò)wireshark工具分析,并通過(guò)過(guò)濾IP地址(指令為:ip.src==x.x.x.x[src為發(fā)送;dst為接收]),統(tǒng)計(jì)得出xx應(yīng)用所消耗的流量為xxxBytes

2.軟件下載安裝,見(jiàn)度娘

3.通過(guò)過(guò)濾條件進(jìn)行過(guò)濾

點(diǎn)擊wireshark工具的“Statistics”-->“EndPoint”,勾選“Limit to display filter”選項(xiàng),如下圖所示

統(tǒng)計(jì)的應(yīng)用消耗流量1

點(diǎn)擊“Statistics”-->“IO Graphs”,顯示I/O圖表

I/O圖表

點(diǎn)擊“Statistics”-->“TCP Scream Graph” -->“Throughput”,顯示TCP流吞吐量圖形

TCP流圖形圖吞吐量

點(diǎn)擊“統(tǒng)計(jì)”-->“已解析的地址”,查看已解析的地址和域名

IP地址和域名

點(diǎn)擊“統(tǒng)計(jì)”-->“conversatioss”,查看IP地址包的流量消耗大小bytes

IP地址包消耗流量大小

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ù),操作步驟見(jiàn)下圖

流量統(tǒng)計(jì)

參考資料:

1.http://blog.51cto.com/fangxin/735178

2.https://blog.csdn.net/zhuyunier/article/details/79043833

3.wireshark 用戶使用手冊(cè)

4.tcpdump入門教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評(píng)論 25 709
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,000評(píng)論 2 59
  • 簡(jiǎn)介 用簡(jiǎn)單的話來(lái)定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 6,082評(píng)論 1 13
  • 簡(jiǎn)介 用簡(jiǎn)單的話來(lái)定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    JasonShi6306421閱讀 1,351評(píng)論 0 1
  • 看山是山,看水是水; 看山不是山,看水不是水; 看山還是山,看水還是水; 堅(jiān)持是一種高貴的品質(zhì)。
    友文行閱讀 436評(píng)論 0 0

友情鏈接更多精彩內(nèi)容