¿Cómo encontrar una lista de redes inalámbricas (SSID) en Java, C# y/o C?

2 minutos de lectura

¿Como encontrar una lista de redes inalambricas SSID en Java
taylor leese

¿Existe algún paquete/kit de herramientas disponible que pueda usar para encontrar una lista de redes inalámbricas (SSID) disponibles en Java, C# o C para Windows XP+? Cualquier código de muestra sería apreciado.

Para C#, eche un vistazo a la API Wi-Fi administradaque es un envoltorio para el API wifi nativa proporcionado con Windows XP SP2 y posterior.

No probé este código, pero al mirar el código de muestra de la API de Wi-Fi administrado, debería enumerar los SSID disponibles.

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 );
}

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)  );
}

  • parece que no tenemos otra forma excepto esta

    – Reza Taghizadeh

    18 de mayo de 2015 a las 7:12

Bueno, no especificó el sistema operativo, así que para Linux sugeriré Herramientas inalámbricas para Linux de Jean Tourrilhes (http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html). El comando iwlist() muestra mucha información sobre las redes disponibles. El código fuente está en C. Otra forma es escribir su propio código en C usando libpcap para capturar los marcos de baliza y extraer el SSID de ellos (solo en modo monitor). Todavía no he probado mi código de rastreo, así que no lo pegaré aquí, pero es un trabajo bastante simple.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad