¿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.
¿Cómo encontrar una lista de redes inalámbricas (SSID) en Java, C# y/o C?
taylor leese
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.