抓包工具[2]:tcpdump 抓包使用方法

Windows 下,針對手機端的抓包,導出格式為 pcap,使用 WireShark 和 Charles 都可識別。

使用此工具的準備工作:

  1. 確保手機已經拿到 root 權限
  2. 鏈接手機時,勾選上 USB 調試(定位問題很久找不到原因,有時候被坑在這里)
  3. 手機上已經安裝了需要測試的包
  4. 本機已經下載好 adb 和 tcpdump,我存在放在 C:\adb 下

以下我們將 tcpdump 文件從 PC 傳到手機端,并執行抓包,導出包

1. 將 tcpdump 從 PC 傳到手機上:
C:\adb>adb push C:\adb\tcpdump /sdcard/tcpdump
2. 進入手機系統

利用 adb 建立與手機的鏈接,進入 shell 交互模式,并切換為 root 身份

C:\adb>adb shell
shell@android:/ $ su
3. 將 tcpdump 從 sdcard 移動到 系統中

必須得將 tcpdump 輸出到 /data/local 下面才能使用

shell@android:/ # cat /sdcard/tcpdump > /data/local/tcpdump

這一步可以用 cp 實現,但是一般設備中不包含此命令。
而,這里為什么不用 mv 命令的原因是,會出錯:failed on '/sdcard/tcpdump' - Cross-device link


作為 root ,/data 目錄我們沒有權限直接訪問,因為 data 的權限是給 system的,但是 /data/local 是有給到 root 的,所以要進入到 local 下面操作,tcpdump 放到 local 中。

4. 查看權限

進入 /data/local 目錄,依然可以參考上圖
-rw-r----- root root 645840 2014-05-29 19:57 tcpdump

5. 更改權限
shell@android:/data/local # chmod 775 tcpdump
6. 抓包
shell@android:/data/local # ./tcpdump -p -vv -s 0 -w /sdcard/captrue.pcap
7. 過程顯示

tcpdump:listening on eth0


8. 停止

Ctrl+ C

9. 導出抓包結果文件

切換到本地,使用命令,pull 到本地 C:\adb 目錄下

C:\adb>adb pull /sdcard/captrue.pcap

此時到 C:\adb 下查找此文件即可,也可 pull 到指定目錄下,如桌面:
命令格式為:
adb pull <remote> [<local>]


如果上述步驟執行過程中,會遇到一些問題。

  1. 插上設備以后,必須先執行 adb devices,識別出設備以后,才能執行 abd shell 進入手機系統。

  2. 關于 push 文件到手機中遇到的可能存在的問題

2.1. 如果使用以下命令,會提示 Permission denied,原因是我們沒有權限訪問 /data/local。
C:\adb>adb push C:\adb\tcpdump /data/local
而,C:\adb>adb push C:\adb\tcpdump /data/local/tcpdump 是否可行,有待驗證

2.2. 不能直接放到 sdcard 下:
C:\adb>adb push C:\adb\tcpdump /sdcard
如果不創建一個新的目錄,上面的命令會出錯,提示 sdcard 是一個目錄,不能直接放文件。

  1. 使用 adb shell 時提示 abd server is out of date. killing...

此時是 adb server 端口被占用了,可用如下方法進行解決
3.1. 查看端口號

C:\adb>adb nodaemon server

cannot bind 'tcp:5037'
3.2. 找到端口對應的 pid

C:\adb>netstat -ano | findstr "5037"

3.3. 關閉占用端口的進程

C:\adb>tskill 10220

整個過程如下所示


如此再重新執行 adb shell 即可重新進入

END.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容