【问题标题】:Packet Level networking in AndroidAndroid 中的数据包级网络
【发布时间】:2011-10-23 18:37:53
【问题描述】:

我知道如何在 Android 中开发并使用 Apache HTTP 库,但我想更深入一点,获得无线接口适配器并能够无线发送和接收数据包。我知道这是可能的,因为 android 市场上有嗅探器应用程序。我环顾四周并用谷歌搜索了很多,但似乎对如何开始也没有任何想法。令人惊讶的是,以前似乎也没有人在 SO 上问过这个问题。

我想没有 android API 可以为你做这件事。请提出一种在 android 中发送/接收数据包的方法或发布对任何此类资源的引用。

谢谢!

注意:我知道 java.net api 可以在 android 中使用(虽然我以前没有使用过)但这并没有给我我想要的那种访问权限。

【问题讨论】:

  • 这里的实际目的是什么?
  • 我想创建一个应用程序,它可以通过处于桥接模式的接入点连接到 BSNL (ISP) 服务器。除此之外,还可以做很多其他有趣的事情。
  • @Rushil,桥接模式有什么关系?通常,当人们谈论“桥接模式”时,它是在具有不充当接入点的设备的上下文中,其目的是通过以太网提供对无线 LAN 的访问。您是在谈论 ad-hoc 无线吗?如果是这样,请参阅this question
  • @Mike,对不起,如果我不清楚,但我的意思是桥接模式,我的路由器+调制解调器(也是接入点)显示 4 个选项,我可以通过这些选项连接到互联网。其中之一是桥接模式。当调制解调器处于桥接模式时,我无法使用我的 Android 设备连接到我的 ISP 服务器。
  • 这里和BSNL通讯基本上都是用PPPoE协议的,android没有实现。只要我掌握了 wifi 适配器,我就可以提供实现。

标签: android networking packet packet-sniffers


【解决方案1】:

标准 SDK/NDK 无法做到这一点。

在有根设备上,您可能会调用tcpdump,或另一个基于 libpcap 的应用程序。没有一种受支持的方式可以在生产 Android 设备上为 Java 应用程序提供所需的权限。

例如,this blog post 描述了如何使用tcpdump 在 Android 上进行基本的数据包捕获。

【讨论】:

  • 谢谢!这是一个好的开始!但是那篇博文说你必须把安卓设备连接到电脑上。是不是可以创建一个能够使用 libpcap 捕获和发送数据包的应用程序。?我的意思是,在有根电话上..博客文章似乎没有说太多。
  • @Rushil,您需要连接 PC 有几个原因。 (1) 根设备,如果它还没有根。 (2) 将 tcpdump 二进制文件推送到手机上。 (3) 运行adb shell 来运行tcpdump。在有根电话上,您可以编写 Java 代码来调用自定义构建的基于libpcap 的二进制文件,您必须设计该二进制文件才能以您可以显示的格式将数据返回到您的 GUI。关键是,如果您的唯一目标是查看收到的数据包,您所要做的就是 root 手机,启用调试,推送 tcpdump,以 root 身份运行 adb shell 并开始使用 tcpdump
  • @Rushil,同样,正如我所提到的,即使在 root 设备上为 Java 应用程序提供 root 权限也是不支持的。唯一支持的事情(社区,请参阅androidsu)是以 root 身份启动任意本机二进制文件。因此,您可以交叉编译带有内部静态链接的libpcap 的二进制文件(类似于tcpdump),您可以调用它来完成您想做的工作。例如,您可以设计程序在stdout 上输出XML 格式的结果,并在stdin 上给它命令。
  • @Mike - 也许这是一个愚蠢的问题,但我只想说清楚。为了“以 root 身份启动本机二进制文件”,您是否需要拥有 root 手机?
【解决方案2】:

您看过 NDK 吗?也许你可以在 C(++) 中做你想做的事。

【讨论】:

  • 是的,我听说过,但我不知道如何进行设置。看起来很复杂:-(
【解决方案3】:

Android OS 4.0 或更高版本提供了一个 VpnService,您可以通过它监控网络流量。 http://www.taosoftware.co.jp/en/android/packetcapture/ 提供的应用程序使用捕获数据的 VpnService。

【讨论】:

  • 谢谢!实际上我需要能够“制作”这样的工具,而不是使用第三方软件。我仍然会尝试一下:-)
  • @sandy - 我一直在查看 VpnService,但无法监控网络流量。它似乎用于连接到 VPN,而不是充当一个。你有运气吗?
  • @brianestey - 我正在尝试但仍然找不到任何解决方案。
猜你喜欢
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
相关资源
最近更新 更多