क्या कोई टूलकिट/पैकेज उपलब्ध है जो मैं वायरलेस नेटवर्क (एसएसआईडी) की एक सूची खोजने के लिए उपयोग कर सकता हूं जो कि जावा एक्सपी + के लिए जावा, सी # या सी में उपलब्ध है? किसी भी नमूना कोड की सराहना की जाएगी।जावा, सी #, और/या सी में वायरलेस नेटवर्क (एसएसआईडी) की सूची कैसे खोजें?
उत्तर
सी # के लिए, Managed Wifi API पर एक नज़र डालें, जो Native Wifi API के लिए एक रैपर है जो Windows XP SP2 और बाद में प्रदान किया गया है।
मैंने इस कोड का परीक्षण नहीं किया है, लेकिन प्रबंधित वाईफ़ाई एपीआई नमूना कोड को देखते हुए, यह उपलब्ध एसएसआईडी सूचीबद्ध करना चाहिए।
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);
}
ठीक है, आप ओएस तो निर्दिष्ट नहीं किया है, लिनक्स के लिए मैं जीन Tourrilhes द्वारा लिनक्स (http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html) के लिए वायरलेस उपकरण का सुझाव देगा। Iwlist() कमांड उपलब्ध नेटवर्क के बारे में बहुत सारी जानकारी प्रदर्शित करता है। स्रोत कोड सी में है। एक और तरीका है बीकन फ्रेम को कैप्चर करने और एसएसआईडी निकालने के लिए libpcap का उपयोग करके सी में अपना कोड लिखना (केवल मॉनिटर मोड में)। मैंने अभी तक अपने स्नीफिंग कोड का परीक्षण नहीं किया है, इसलिए मैं इसे यहां पेस्ट नहीं करूंगा लेकिन यह बहुत आसान काम है।
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) );
}
लगता है कि इस तरह को छोड़कर हमारे पास कोई रास्ता नहीं है –
मैंने Windows XP + निर्दिष्ट करने के लिए प्रश्न अपडेट किया। –