2011-10-23 19 views
5

Sé cómo desarrollar en Android y utilizar Apache HTTP lib, pero quiero ir más abajo, agarrar el adaptador de interfaz inalámbrica y poder enviar & recibir paquetes de forma inalámbrica. Sé que es posible ya que hay aplicaciones sniffer en el mercado Android. He buscado mucho y buscado en Google, pero parece que no puedo obtener ninguna idea sobre cómo empezar. Sorprendentemente, nadie parece haber hecho esta pregunta en SO antes.Redes de nivel de paquetes en Android

Supongo que no hay una API de Android que lo haga por usted. Sugiera una forma de enviar/recibir paquetes en Android o publicar referencias a dichos recursos.

Gracias!

Nota: Sé que java.net api se puede usar en Android (aunque no lo he usado antes) pero eso no me da el tipo de acceso que quiero.

+0

¿Cuál es el propósito real aquí? – EJP

+0

Quiero crear una aplicación que se pueda conectar al servidor BSNL (ISP) a través de un punto de acceso que está en modo Bridge. aparte de esto, se pueden hacer muchas otras cosas interesantes. – Rushil

+0

@Rushil, ¿qué tiene que ver el modo puente con algo? Por lo general, cuando las personas hablan sobre el "modo puente", es en el contexto de tener un dispositivo que NO actúa como un punto de acceso, cuyo propósito es proporcionar acceso a una LAN inalámbrica a través de Ethernet. ¿Estás hablando de una conexión inalámbrica ad-hoc? Si es así, vea [esta pregunta] (http://stackoverflow.com/questions/1932150/can-android-do-peer-to-peer-ad-hoc-networking). – mpontillo

Respuesta

2

No hay forma de hacerlo con SDK/NDK estándar.

En un dispositivo rooteado, puede llamar al tcpdump u otra aplicación basada en libpcap. No hay una forma admitida de otorgar a las aplicaciones Java los privilegios necesarios en un dispositivo Android de producción.

Por ejemplo, this blog post describe cómo usar tcpdump para realizar una captura básica de paquetes en Android.

+0

¡Gracias! ¡Es un buen comienzo! Pero esa publicación del blog decía que tendrías que tener el dispositivo Android conectado a una pc. ¿No es posible crear una aplicación que sea capaz de capturar y enviar paquetes usando libpcap.? Quiero decir, en un teléfono rooteado ... la publicación del blog no parecía decir mucho. – Rushil

+1

@Rushil, hay algunas razones por las que necesita una PC conectada. (1) para rootear el dispositivo, si no lo está ya rooteado. (2) para empujar el tcpdump binario en el teléfono. (3) para ejecutar 'adb shell' para ejecutar tcpdump desde. En un teléfono rooteado, puede escribir código Java para llamar a un compilador' libpcap' personalizado binario que tendría que diseñar para devolver los datos a su GUI en un formato que pudiera mostrar. El punto es que si su único objetivo es ver los paquetes que se encuentran, todo lo que tiene que hacer es rootear el teléfono, habilitar depuración, presione tcpdump, ejecute 'adb shell' como root y comience a usar' tcpdump'. – mpontillo

+0

@Rushil, también, como Mencioné, incluso en un dispositivo rooteado que da privilegios de raíz de una aplicación Java no es compatible. La única cosa a medio camino admitida (por la comunidad, vea [androidsu] (http://androidsu.com/superuser/)) es ejecutar un binario nativo arbitrario como raíz. De modo que podría compilar de forma cruzada un binario con un 'libpcap' enlazado estáticamente (similar a' tcpdump') al que podría llamar para hacer el trabajo que deseaba. Por ejemplo, podría diseñar el programa para generar resultados de formato XML en 'stdout' y darle comandos en' stdin'. – mpontillo

1

¿Echa un vistazo al NDK? Tal vez puedas hacer lo que quieras en C (++).

+0

Ya he oído hablar de eso, pero no sé exactamente cómo configurarlo.parece complicado :-( – Rushil

1

Android OS 4.0 o posterior proporciona un servicio Vpn a través del cual puede supervisar el tráfico de la red. La aplicación proporcionada en http://www.taosoftware.co.jp/en/android/packetcapture/ utiliza VpnService que captura los datos.

+0

¡Gracias! En realidad, necesito poder "hacer" tales herramientas, no usar software de terceros. Todavía lo intentaré :-) – Rushil

+0

@sandy - He estado mirando el VpnService pero no he podido monitorear el tráfico de la red. Parece ser usado para conectarse a una VPN, no para actuar como uno solo. ¿Has tenido suerte haciendo esto? – brianestey

+0

@brianestey -Estoy intentando pero todavía no puedo encontrar ninguna solución. – saini

Cuestiones relacionadas