监控 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/local
。
cd /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手机来指定短信就发出震动和铃声?如何编程?