65

我想监控我的 Android 手机的网络流量。我正在考虑为 Android 使用 tcpdump,但我不确定是否必须为手机进行交叉编译。

另一个问题是,如果我想监控某个应用程序的流量数据,有什么命令可以做到吗?

4

11 回答 11

26

TCPDUMP 是我最喜欢的网络分析工具之一,但如果您发现难以为 android 交叉编译 tcpdump,我建议您使用市场上的一些应用程序。

这些是我正在谈论的应用程序:

  • Shark:是用于安卓手机的小版本wireshark)。该程序将创建一个 *.pcap,您可以在 PC 上使用 wireshark 读取该文件。
  • Shark Reader:这个程序允许你直接在你的安卓手机上阅读 *.pcap。

Shark 应用程序适用于 root 设备,所以如果你想安装它,请确保你的设备已经 root。

祝你好运 ;)

于 2011-02-28T14:21:33.210 回答
17

如果你是从模拟器做的,你可以这样做:

运行emulator -tcpdump emulator.cap -avd my_avd将模拟器的所有流量写入PC上的本地文件,然后在wireshark中打开它

有一个类似的帖子可能对这里有帮助

于 2011-02-25T19:36:59.320 回答
7

注意:tcpdump 需要 root 权限,所以如果你还没有做的话,你必须 root 手机。这是 tcpdump 的 ARM二进制文件(适用于我的 Samsung Captivate)。如果您更喜欢构建自己的二进制文件,请参阅此处的说明(是的,您可能需要交叉编译)。

另外,请查看Shark For Root(基于 tcpdump 的 Android 数据包捕获工具)。

我不相信 tcpdump 可以通过特定进程 ID 监控流量。Chris Stratton 提到的 strace方法似乎比它的价值更多。监视目标进程使用的特定 IP 和端口会更简单。如果该信息未知,请在进程活动期间捕获所有流量,然后使用 Wireshark 筛选生成的 pcap。

于 2011-02-28T06:42:14.250 回答
4

对于 Android 手机(无 Root):- 您可以使用此应用程序tPacketCapture,这将在您启用捕获时捕获您设备的网络流量。请参阅此 url以获取有关无需 root 设备进行网络嗅探的更多详细信息。

获得.pcap格式文件后,您可以使用此文件并使用任何流量分析器(如 Wireshark)分析流量。

另请参阅此帖子以获取有关在 wireshark 上捕获手机流量的更多想法

于 2015-04-23T21:28:16.870 回答
3

Android SDK 中包含的 DDMS 工具包括一个用于监控网络流量的工具。它没有提供您从 tcpdump 和类似的低级工具获得的那种详细信息,但它仍然非常有用。

官方文档:http: //developer.android.com/tools/debugging/ddms.html#network

于 2013-07-04T08:26:47.500 回答
3

前提条件: adb 和 wireshark 已安装在您的计算机上,并且您有一个 root 的 android 设备。

  1. 下载tcpdump到 ~/Downloads
  2. adb push ~/Downloads/tcpdump /sdcard/
  3. adb shell
  4. su root
  5. mv /sdcard/tcpdump /data/local/
  6. cd /data/local/
  7. chmod +x tcpdump
  8. ./tcpdump -vv -i any -s 0 -w /sdcard/dump.pcap
  9. Ctrl+C一旦您捕获了足够的数据。
  10. exit
  11. exit
  12. adb pull /sdcard/dump.pcap ~/Downloads/

现在您可以使用 Wireshark 打开 pcap 文件。

至于你关于监控特定进程的问题,找到你的应用的bundle id,我们称之为com.android.myapp

  1. ps | grep com.android.myapp
  2. 复制您从输出中看到的第一个数字。我们称它为 1234。如果没有看到输出,则需要启动应用程序。如果您仍然看不到应用程序,请ps尝试使用top.
  3. 将strace下载到 ~/Downloads 并使用与上面/data/local相同的方式投入使用tcpdump
  4. cd /data/local
  5. ./strace -p 1234 -f -e trace=network -o /sdcard/strace.txt

现在您可以查看 strace.txt 的 IP 地址,并为这些 IP 过滤您的 wireshark 日志。

于 2019-01-18T17:57:38.767 回答
2

您需要 root 手机并交叉编译 tcpdump 或使用其他人已经编译的版本。

您可能会发现使用模拟器进行这些实验更容易,在这种情况下,您可以从主机 PC 进行监控。如果您必须使用真实设备,另一种选择是将其放在 wifi 网络上,该网络挂在运行 tcpdump 的 linux 机器上的辅助接口上。

我不知道您将如何按特定流程进行过滤。我在一些快速谷歌搜索中发现的一个建议是在主题进程上使用 strace 而不是系统上的 tcpdump。

于 2011-02-25T19:40:23.593 回答
2

数据包捕获是在 android 上跟踪网络数据的最佳工具。不需要任何 root 访问权限,并且易于阅读和保存基于应用程序的调用。看看这个_

于 2016-02-10T09:35:43.750 回答
2

Without root, you can use debug proxies like Charlesproxy&Co.

于 2015-11-10T13:37:16.207 回答
2

试试这个应用程序 https://play.google.com/store/apps/details?id=app.greyshirts.sslcapture

我们可以查看所有网络通信.. 甚至 SSL 加密通信。

于 2017-04-08T17:46:51.167 回答
0

常见的方法是调用“cat /proc/net/netstat”,如下所述:

安卓网络统计

于 2011-02-25T20:28:18.840 回答