Java, C#및/또는 C에서 무선 네트워크 (SSID) 목록을 찾는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/917910

  •  06-09-2019
  •  | 
  •  

문제

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로 자신의 코드를 작성하는 것입니다 (모니터 모드에서만). 스니핑 코드를 아직 테스트하지 않았으므로 여기에 붙여 넣지 않지만 매우 간단한 작업입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top