Decepcionado por la falta de buenas API de red en Android/Java, desarrollé una colección de útiles herramientas de red para el desarrollo diario de Android.
El javadoc debe proporcionar toda la información necesaria para comprender los métodos, pero si no, no dudes en agregar un problema en github y responderé cualquier pregunta. :)
Si te encanta lo que estoy haciendo con Android Network Tools y mis otros proyectos, ¡ahora puedes apoyar mi trabajo directamente! Al invitarme a un café ☕, no solo satisfaces mis necesidades de cafeína, sino que me ayudas a dedicar más tiempo a desarrollar y mejorar estos proyectos de código abierto. Cada café cuenta y aporta más innovación al mundo de la ciberseguridad. Gracias por su apoyo: ¡significa mucho para mí y para la comunidad de código abierto!
La aplicación de muestra está publicada en Google Play y F-Droid para permitirle probar la biblioteca de forma rápida y sencilla. ¡Disfrutar! Y envíenos sus comentarios si sus pruebas producen resultados diferentes.
Esta biblioteca aún no está publicada en Maven Central, hasta entonces puede agregarla como módulo de biblioteca o usar JitPack.io
agregar URL remota de Maven
repositories {
maven {
url " https://jitpack.io "
}
}
luego agregue una dependencia de la biblioteca. Recuerde consultar la última versión aquí
dependencies {
compile ' com.github.stealthcopter:AndroidNetworkTools:0.4.5.3 '
}
Requiere permiso de Internet (obviamente...)
< uses-permission android : name = " android.permission.INTERNET " />
Un sencillo escáner de puertos TCP/UDP basado en Java, rápido y fácil de usar. De forma predeterminada, intentará adivinar el mejor tiempo de espera y los mejores subprocesos para usar durante el escaneo dependiendo de si la dirección parece localhost, red local o remota. Puede anularlos usted mismo llamando a setNoThreads() y setTimeoutMillis()
// Synchronously
ArrayList < Integer > openPorts = PortScan . onAddress ( "192.168.0.1" ). setMethodUDP (). setPort ( 21 ). doScan ();
// Asynchronously
PortScan . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). setPortsAll (). setMethodTCP (). doScan ( new PortScan . PortListener () {
@ Override
public void onResult ( int portNo , boolean open ) {
if ( open ) // Stub: found open port
}
@ Override
public void onFinished ( ArrayList < Integer > openPorts ) {
// Stub: Finished scanning
}
});
Encuentra dispositivos que responden al ping que están en la misma subred que el dispositivo actual. Puede configurar el tiempo de espera para el ping con setTimeOutMillis() [predeterminado 2500] y el número de subprocesos con setNoThreads() [predeterminado 255]
// Asynchronously
SubnetDevices.fromLocalAddress().findDevices(new SubnetDevices.OnSubnetDeviceFound() {
@Override
public void onDeviceFound(Device device) {
// Stub: Found subnet device
}
@Override
public void onFinished(ArrayList<Device> devicesFound) {
// Stub: Finished scanning
}
});
Utiliza el binario de ping nativo si está disponible en el dispositivo (algunos dispositivos vienen sin él) y recurre a una solicitud TCP en el puerto 7 (solicitud de eco) si no.
// Synchronously
PingResult pingResult = Ping . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). doPing ();
// Asynchronously
Ping . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). setTimes ( 5 ). doPing ( new Ping . PingListener () {
@ Override
public void onResult ( PingResult pingResult ) {
...
}
});
Nota: Si tenemos que recurrir al puerto TCP 7 (a la manera de Java) para detectar dispositivos, encontraremos significativamente menos que con el binario de ping nativo. Si esto es un problema, podría considerar agregar un binario de ping a su aplicación o dispositivo para que esté siempre disponible.
Nota: Si desea un escáner de puertos más avanzado, debería considerar compilar nmap en su proyecto y usarlo en su lugar.
Envía un paquete Wake-on-Lan a la dirección IP/MAC
String ipAddress = "192.168.0.1" ;
String macAddress = "01:23:45:67:89:ab" ;
WakeOnLan . sendWakeOnLan ( ipAddress , macAddress );
Otros métodos útiles:
// Get a MAC Address from an IP address in the ARP Cache
String ipAddress = "192.168.0.1" ;
String macAddress = ARPInfo . getMacFromArpCache ( ipAddress );
Es un proyecto estándar de Gradle.
Acepto solicitudes de extracción, problemas y comentarios.
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)