Déçu par le manque de bonnes API réseau dans Android/Java, j'ai développé une collection d'outils réseau pratiques pour le développement Android quotidien.
Le javadoc devrait fournir toutes les informations nécessaires pour comprendre les méthodes, mais sinon, n'hésitez pas à ajouter un problème dans github et je répondrai à toutes vos questions ! :)
Si vous aimez ce que je fais avec Android Network Tools et mes autres projets, vous pouvez désormais soutenir directement mon travail ! En m'achetant un café ☕, vous ne faites pas que combler mes besoins en caféine : vous m'aidez à consacrer plus de temps au développement et à l'amélioration de ces projets open source. Chaque café compte et apporte plus d'innovation au monde de la cybersécurité. Merci pour votre soutien – cela signifie tout pour moi et pour la communauté open source !
L'exemple d'application est publié sur Google Play et F-Droid pour vous permettre de tester la bibliothèque rapidement et plus facilement. Apprécier! Et n'hésitez pas à nous faire part de vos commentaires si vos tests produisent des résultats différents.
Cette bibliothèque n'est pas encore publiée dans Maven Central, d'ici là vous pouvez l'ajouter en tant que module de bibliothèque ou utiliser JitPack.io
ajouter une URL Maven distante
repositories {
maven {
url " https://jitpack.io "
}
}
puis ajoutez une dépendance de bibliothèque. N'oubliez pas de vérifier la dernière version ici
dependencies {
compile ' com.github.stealthcopter:AndroidNetworkTools:0.4.5.3 '
}
Nécessite une autorisation Internet (évidemment...)
< uses-permission android : name = " android.permission.INTERNET " />
Un simple scanner de port TCP/UDP basé sur Java, rapide et facile à utiliser. Par défaut, il essaiera de deviner le meilleur délai d'attente et les meilleurs threads à utiliser lors de l'analyse selon que l'adresse ressemble à localhost, réseau local ou distant. Vous pouvez les remplacer vous-même en appelant setNoThreads() et 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
}
});
Recherche les appareils qui répondent au ping et qui se trouvent sur le même sous-réseau que l'appareil actuel. Vous pouvez définir le délai d'attente du ping avec setTimeOutMillis() [par défaut 2500] et le nombre de threads avec setNoThreads() [par défaut 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
}
});
Utilise le binaire ping natif s'il est disponible sur l'appareil (certains appareils en sont dépourvus) et revient à une requête TCP sur le port 7 (demande d'écho) sinon.
// 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 ) {
...
}
});
Remarque : Si nous devons recourir au port TCP 7 (à la manière de Java) pour détecter les périphériques, nous en trouverons beaucoup moins qu'avec le binaire ping natif. Si cela pose un problème, vous pouvez envisager d'ajouter un binaire ping à votre application ou appareil afin qu'il soit toujours disponible.
Remarque : Si vous souhaitez un scanner de ports plus avancé, vous devriez envisager de compiler nmap dans votre projet et de l'utiliser à la place.
Envoie un paquet Wake-on-Lan à l'adresse IP/MAC
String ipAddress = "192.168.0.1" ;
String macAddress = "01:23:45:67:89:ab" ;
WakeOnLan . sendWakeOnLan ( ipAddress , macAddress );
Autres méthodes utiles :
// Get a MAC Address from an IP address in the ARP Cache
String ipAddress = "192.168.0.1" ;
String macAddress = ARPInfo . getMacFromArpCache ( ipAddress );
C'est un projet de niveau standard.
J'accepte les demandes de tirage, les problèmes et les commentaires.
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)