是否有可用的工具包/程序包可用于查找在 Java、C# 或 C for Windows XP+ 中可用的无线网络 (SSID) 列表?任何示例代码将不胜感激。
问问题
22422 次
3 回答
12
对于 C#,请查看Managed Wifi API ,它是Windows XP SP2 及更高版本提供的Native Wifi API的包装器。
我尚未测试此代码,但查看托管 Wifi API 示例代码,这应该列出可用的 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 );
}
于 2009-05-27T20:51:20.540 回答
1
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) );
}
于 2015-05-18T07:11:39.577 回答
0
好吧,你没有指定操作系统,所以对于 Linux,我会建议 Jean Tourrilhes 的 Wireless Tools for Linux ( http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html )。iwlist() 命令显示大量有关可用网络的信息。源代码在 C 中。另一种方法是使用 libpcap 在 C 中编写您自己的代码,以捕获信标帧并从中提取 SSID(仅在监控模式下)。我还没有测试我的嗅探代码,所以我不会把它贴在这里,但这是一个非常简单的工作。
于 2009-06-11T07:35:52.453 回答