Question

Y at-il une boîte à outils / paquet qui est disponible que je pourrais utiliser pour trouver une liste des réseaux sans fil (SSID) qui sont disponibles dans les deux Java, C # ou C pour Windows XP +? Tout exemple de code serait apprécié.

Était-ce utile?

La solution

Pour C #, jetez un oeil à la Managed API Wifi , qui est une enveloppe pour le API Wifi natif fourni avec Windows XP SP2 et versions ultérieures.

Je ne l'ai pas testé ce code, mais en regardant l'exemple de code API Wifi géré, cela devrait énumérer les 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 );
}

Autres conseils

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

Eh bien, vous ne spécifiez pas le système d'exploitation si, pour Linux je suggérerai Outils sans fil pour Linux par Jean Tourrilhes ( http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html ). La commande iwlist () affiche beaucoup d'informations sur les réseaux disponibles. Le code source est en C. Une autre façon est d'écrire votre propre code en C en utilisant libpcap pour capturer les trames de balise et extraire le SSID d'eux (uniquement en mode moniteur). Je ne l'ai pas testé mon code reniflement encore je ne vais pas le coller ici, mais il est assez simple travail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top