- arpConflictScan (Plugin): pingt das Subnetz über mehrere Runden und liest je Runde die ARP-Tabelle; mehrere MACs pro IP = Konflikt. Kein Root nötig - Erkennt den Fall, dass /proc/net/arp nicht lesbar ist (Android-Limit) und meldet das ehrlich, statt fälschlich Entwarnung zu geben - ipconflict.ts: neues Protokoll-Tool, in der Tool-Registry eingetragen — listet betroffene IPs samt der konkurrierenden MAC-Adressen Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| NetDiagScannerPlugin.kt | ||
| README.md | ||
| Snmp.kt | ||
Natives Scan-Plugin NetDiagScanner
Der WebView kann keine Raw-Sockets/ICMP/ARP — die eigentliche Netzwerk-Messung läuft in diesem nativen Android-Plugin (Kotlin).
Dateien
NetDiagScannerPlugin.kt— Capacitor-Plugin mit allen Scan-MethodenSnmp.kt— minimaler SNMP-v2c-GET-Client
Integration (einmalig, nach npx cap add android)
-
Android-Projekt erzeugen (falls noch nicht vorhanden):
npm install npm run build npx cap add android -
Plugin-Dateien kopieren nach:
android/app/src/main/java/de/data_it_solution/netdiag/ ├── NetDiagScannerPlugin.kt └── Snmp.kt -
Plugin registrieren in
android/app/src/main/java/de/data_it_solution/netdiag/MainActivity.kt:package de.data_it_solution.netdiag import android.os.Bundle import com.getcapacitor.BridgeActivity class MainActivity : BridgeActivity() { override fun onCreate(savedInstanceState: Bundle?) { registerPlugin(NetDiagScannerPlugin::class.java) super.onCreate(savedInstanceState) } } -
Berechtigungen in
android/app/src/main/AndroidManifest.xml(innerhalb<manifest>):<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />ACCESS_FINE_LOCATIONist Pflicht, damit Android WLAN-Scan-Ergebnisse liefert. -
Kotlin-Coroutines sicherstellen — in
android/app/build.gradle:dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0" }
Bekannte Einschränkungen
- ARP/MAC:
/proc/net/arpist ab Android 10 teils nicht mehr lesbar — dann bleiben MAC/Hersteller leer; Geräte werden trotzdem über Ping/Hostname erkannt. - Hersteller-Lookup: nur kleiner OUI-Auszug eingebaut. Für volle Abdeckung
die IEEE-OUI-Datei als Asset einbinden und in
ouiVendor()nutzen. - DHCP-Discover: Best-effort — Port 68 kann vom System-DHCP-Client belegt sein.
- Durchsatz-Test: benötigt eine TCP-Sink/Source-Gegenstelle (2. Gerät bzw. iperf3-kompatibler Server). Misst sonst nur Fehlversuche.
- Stresstest: für lange Läufe sollte ein Foreground-Service ergänzt werden, sonst kann Android den Prozess im Hintergrund beenden.
- PoE-/Strommessung: bewusst nicht enthalten (Hardware-Grenze) — späteres Modul.