В настоящее время я разрабатываю своего рода сниффер Wi-Fi. Для этого я использую бинарный файл tcpdump, скомпилированный для arm. Но предполагается, что я знаю имя интерфейса Wi-Fi.
Согласно документации SDK NetworkInterface предоставьте метод getName().< br> Я планирую использовать этот метод, поэтому первым шагом будет получение объекта NetworkInterface, соответствующего моему интерфейсу Wi-Fi.
Для этого я использую WifiInfo для получения IP-адреса, затем получаю InetAddress, соответствующий этому IP-адресу, и наконец, получите экземпляр NetworkInterface, используя статический метод getByInetAddress (адрес InetAddress).
Вот мой код:
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
byte[] bytes = BigInteger.valueOf(ipAddress).toByteArray();
InetAddress addr = InetAddress.getByAddress(bytes);
NetworkInterface netInterface = NetworkInterface.getByInetAddress(addr);
Log.e("MyTemp",netInterface.getName());
Выход :
SSID: Nancy-Universite, BSSID: 00:19:30:6a:a9:40, MAC: B4:07:F9:D5:7C:8C, Supplicant state: COMPLETED, RSSI: -80, Link speed: 11, Net ID: 6
Но я исключаю что-то вроде:
eth0
Я также пробую метод isVirtual(), но он не компилируется, и я получаю сообщение об ошибке, в котором говорится, что метод isVirtual() не определен для типа NetworkInterface. Я не понимаю, что происходит...
Будем признательны за любую помощь.