Java, C#및/또는 C에서 무선 네트워크 (SSID) 목록을 찾는 방법은 무엇입니까?
문제
Windows XP+용 Java, C#또는 C에서 사용할 수있는 무선 네트워크 (SSID) 목록을 찾는 데 사용할 수있는 툴킷/패키지가 있습니까? 모든 샘플 코드에 감사드립니다.
해결책
C#의 경우 Wi -Fi API 관리, 이것은 래퍼입니다 기본 Wi -Fi API Windows XP SP2 이상 제공됩니다.
이 코드를 테스트하지는 않았지만 관리되는 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 );
}
다른 팁
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) );
}
글쎄, 당신은 OS를 지정하지 않았으므로 Linux의 경우 Jean Tourrilhes의 Linux 용 무선 도구를 제안합니다.http://www.hpl.hp.com/personal/jean_tourrilhes/linux/tools.html). iwlist () 명령에는 사용 가능한 네트워크에 대한 많은 정보가 표시됩니다. 소스 코드는 C입니다. 또 다른 방법은 Beacon 프레임을 캡처하고 SSID를 추출하기 위해 LibpCap을 사용하여 C로 자신의 코드를 작성하는 것입니다 (모니터 모드에서만). 스니핑 코드를 아직 테스트하지 않았으므로 여기에 붙여 넣지 않지만 매우 간단한 작업입니다.
제휴하지 않습니다 StackOverflow