如何通过java获取网络的无线AP的SSID?

Posted

技术标签:

【中文标题】如何通过java获取网络的无线AP的SSID?【英文标题】:how to obtain the Wireless AP's SSIDs of the network through java? 【发布时间】:2018-05-02 13:28:02 【问题描述】:

我是 java 编程新手,我的最后一年项目基于 Rogue 接入点检测工具,我需要如何从现有 wifi 网络的 java 代码中获取 SSID?

例如:说 iam 在我的笔记本电脑中,我需要该程序来显示有多少 SSID 广播 SSIDS 和名称! (通过笔记本电脑内置的 wifi 适配器)。

谢谢。

【问题讨论】:

什么操作系统?什么无线芯片组?什么司机?这个问题非常不完整,你必须在这里做很多功课。 似乎您自己在这方面投入了绝对零努力,甚至没有努力搜索。如果你有,你会看到***.com/q/5378103/62576我们不是你的私人研究助理。这是你的最后一年的项目。努力争取自己的成绩。 感谢您的帮助!我做到了,我找到了您清楚描述的链接,但后来在分析时我发现无法访问较低的网络详细信息,这就是我想重新提出问题的原因!谢谢你的帮助。 【参考方案1】:

Java 是一种高级的、独立于平台的编程语言。网络设置,以及您如何控制它们将取决于您的操作系统,据我所知,没有简单的方法或 API 可以公开这一点,但我尝试编写代码可能对您有所帮助。

代码:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package network;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Electron-Eddine
 */
public class Network 

    ArrayList<String> localNetworks = new ArrayList<>();

    public static void main(String[] args) throws IOException 

        new network.Network().display(new Network().getNetwokrs());
        new Network().searchSystemNetwork(new Network().getNetwokrs());
    

    public ArrayList<String> getNetwokrs() throws IOException 

        ProcessBuilder builder = new ProcessBuilder(
                "cmd.exe", "/c", "netsh wlan show networks mode=Bssid");
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String lineCommand;
        String network ;
        while (true) 
            lineCommand = r.readLine();
            if (lineCommand == null) 
                break;
             else if (lineCommand.contains("SSID")&&!lineCommand.contains("BSSID")) 
                String[] networks = lineCommand.split(":", 2);
                network = networks[1];
                if (!network.equals(" ")) 
                    String pureNetworkName = network.trim();
                    localNetworks.add(pureNetworkName);
                 else 
                    return null;
                
            

        
        return localNetworks;
    

    private void display(ArrayList<String> networks) 
        networks.forEach(network -> 
            System.out.println(network);
        );
    

    private void searchSystemNetwork(ArrayList<String> networks) 
        String REQUIRED_NETWORK = "PEER2PEER";
        networks.forEach(network -> 
            if (network.equals(REQUIRED_NETWORK)) 
                System.out.println("Network is availabale");

             else 

            
        );
    
    void create()
    

     //  Netsh WLAN export profile key=clear folder="Folder_Path" 
    


输出:

运行:

PEER2PEER

神鹰PGN522

Ammar_A

网络可用

构建成功(总时间:1 秒)

【讨论】:

以上是关于如何通过java获取网络的无线AP的SSID?的主要内容,如果未能解决你的问题,请参考以下文章

无线AP如何区分来宾(流动)用户和正常用户?

添加wifi网络ssid是啥

如何使用 node.js 获取周围无线接入点的列表?

AP2800无法放出SSID?

推荐一个可以根据bssid连接无线网络软件

推荐一个可以根据bssid连接无线网络软件