Java实现本机WIFI密码查看

188 阅读1分钟
 
public class GetWiFiPassWord {
    public static void main(String[] args) throws IOException {
        testRunntime();
    }
 
    public static void testRunntime(){
        try {
            FileWriter fileWriter=new FileWriter("WIFI.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("netsh wlan show profiles").getInputStream(),"GBK"));
            String name;//储存WIFI名称的一行数据
            //遍历WIFI
            while ((name=br.readLine())!=null){
                if (name.indexOf("    所有用户配置文件 : ")>=0){
                    //打印wifi名称
                    System.out.println("WIFI名称:"+name.substring(15,name.length()));//提取WiFi名称的字符串然后输出
                    fileWriter.write("WIFI名称:"+name.substring(15,name.length())+"\n");
                    //如果不写GBK会出现乱码
                    BufferedReader br2 = new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec("netsh wlan show profiles name=\""+name.substring(15,name.length())+"\" key=clear").getInputStream(),"GBK"));
                    String password;//储存WIFi密码的一行数据
                    //遍历字符串->"关键内容"
                    while ((password=br2.readLine())!=null){
                        if (password.indexOf("关键内容")>=0){
                            //打印WIFI密码
                            System.out.println("WIFI密码:"+password.substring(22,password.length()));//提取WIFI密码的字符串然后输出
                            fileWriter.write("WIFI密码:"+password.substring(22,password.length())+"\n"+"***************************"+"\n");
                            System.out.println("***************************");
                            break;
                        }
                    }
                }
            }
            br.close();//关闭字符缓冲read流
            fileWriter.close();//关闭文件write流
            System.out.println("WIFI信息已经自动保存在WIFI.txt");
            //用文本文档(notepad)打开WIFI.txt
            Runtime.getRuntime().exec("cmd.exe /c notepad "+System.getProperty("user.dir")+"\\WIFI.txt");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行之后会自动在控制台打印出来,信息也在当前目录下生成一个WIFI.txt的文本中

image.png

建议打成jar包,建一个bat文件来启动 原理也是很简单,利用exec()方法执行cmd命令,然后通过字符流来读取信息,将wifi名称和密码提取出来\

netsh wlan show profiles获取本机连接过的WIFI网络
netsh wlan show profiles name=“wifi名称” key=clear查看某个WIFI网络的详细信息(包括WIFI密码)

\