监控 Android 手机中的网络活动

Posted

技术标签:

【中文标题】监控 Android 手机中的网络活动【英文标题】:Monitor network activity in Android Phones 【发布时间】:2011-07-04 13:14:01 【问题描述】:

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

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

【问题讨论】:

Shark 不再维护,并且不适用于新版本的 Android。您现在使用哪种方法? @Arya,试试这个应用程序play.google.com/store/apps/details?id=app.greyshirts.sslcapture @MateusGondim 谢谢。你知道什么可以用于 TLS 加密吗? 【参考方案1】:

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

这些是我所说的应用程序:

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

Shark 应用适用于 root 设备,因此如果您想安装它,请确保您的设备已经 root。

祝你好运;)

【讨论】:

请提供下载建议工具的直接链接。 什么是“鲨鱼”?在网上搜索“Android Shark”只会返回一堆以海洋为主题的手机游戏。【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

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

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

有关Capturing mobile phone traffic on wireshark的更多想法,另请参阅此帖子

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

前提条件:你的电脑上安装了adb和wireshark,并且你有一个root的android设备。

    下载tcpdump到~/Downloads adb push ~/Downloads/tcpdump /sdcard/ adb shell su root mv /sdcard/tcpdump /data/local/ cd /data/local/ chmod +x tcpdump ./tcpdump -vv -i any -s 0 -w /sdcard/dump.pcap Ctrl+C 捕获足够的数据后。 exit exit adb pull /sdcard/dump.pcap ~/Downloads/

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

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

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

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

【讨论】:

请注意,在某些手机上,您需要使用adb root 而不是adb shell su root 注意如果你的手机上有adb root,你必须adb push ~/Downloads/tcpdump /data/local【参考方案7】:

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

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

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

【讨论】:

【参考方案8】:

没有 root,您可以使用调试代理,如 Charlesproxy&Co。

【讨论】:

没错,我使用Charlesproxy已经很久了,这个工具真的很酷。它还提供节流和 SSL 解密(通过使用自定义密钥)。但如果将这个工具作为 Android Studio 的一部分会更好。【参考方案9】:

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

【讨论】:

【参考方案10】:

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

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

【讨论】:

【参考方案11】:

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

Android network stats

【讨论】:

这将提供连接列表,但不允许监控数据本身。除非您在正确的时刻捕捉到它们,否则您也可能会错过没有状态连接的频道。在 cat 上使用 exec 也是完全没有必要的 - 只需阅读 java 中的 /proc/net/netstat “文件”。 我从未尝试过,所以不确定。第一个答案声称可以工作***.com/questions/3394511/…

以上是关于监控 Android 手机中的网络活动的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio手机来指定短信就发出震动和铃声?如何编程?

如何监控android网络请求

使用操作栏中的图标按钮导航到另一个活动

Android:绝对清除活动

如何在android中嵌入一个活动,每次用户长按手机上特定应用程序中的任何文本或url时都会激活该活动

Android:底部弹出活动