Как найти список беспроводных сетей (SSID) в Java, C # и / или C? - PullRequest
12 голосов
/ 28 мая 2009

Есть ли набор инструментов / пакет, который я мог бы использовать, чтобы найти список беспроводных сетей (SSID), доступных в Java, C # или C для Windows XP +? Любой пример кода будет оценен.

Ответы [ 3 ]

12 голосов
/ 28 мая 2009

Для C # взгляните на Управляемый Wifi API , который является оболочкой для Native Wifi API , поставляемого с Windows XP SP2 и более поздними версиями.

Я не тестировал этот код, но, глядя на пример кода API Managed Wifi, в нем должен быть указан список доступных SSID.

WlanClient client = new WlanClient();
foreach ( WlanClient.WlanInterface wlanIface in client.Interfaces )
{
    // Lists all available networks
    Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList( 0 );
    foreach ( Wlan.WlanAvailableNetwork network in networks )
    {                     
        Console.WriteLine( "Found network with SSID {0}.", GetStringForSSID(network.dot11Ssid));
    }
}

static string GetStringForSSID(Wlan.Dot11Ssid ssid)
{
    return Encoding.ASCII.GetString( ssid.SSID, 0, (int) ssid.SSIDLength );
}
1 голос
/ 18 мая 2015
ArrayList<String>ssids=new ArrayList<String>();
ArrayList<String>signals=new ArrayList<String>();
ProcessBuilder builder = new ProcessBuilder(
        "cmd.exe", "/c", "netsh wlan show all");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
    line = r.readLine();
    if (line.contains("SSID")||line.contains("Signal")){
        if(!line.contains("BSSID"))
            if(line.contains("SSID")&&!line.contains("name")&&!line.contains("SSIDs"))
            {
                line=line.substring(8);
                ssids.add(line);

            }
            if(line.contains("Signal"))
            {
                line=line.substring(30);
                signals.add(line);

            }

            if(signals.size()==7)
            {
                break;
            }

    }

}
for (int i=1;i<ssids.size();i++)
{
    System.out.println("SSID name == "+ssids.get(i)+"   and its signal == "+signals.get(i)  );
}
0 голосов
/ 11 июня 2009

Ну, вы не указали ОС, поэтому для Linux я предложу Wireless Tools for Linux от Jean Tourrilhes (http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html).). Команда iwlist () отображает много информации о доступных сетях. Источник код находится на C. Другой способ - написать свой собственный код на C, используя libpcap для захвата фреймов маяка и извлечения из них SSID (только в режиме мониторинга). здесь, но это довольно простая работа.

...