花伤情犹在 发表于 2021-10-21 09:26

Java实现本机WIFI密码查看

import java.io.*;

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的文本中

建议打成jar包,建一个bat文件来启动

原理也是很简单,利用exec()方法执行cmd命令,然后通过字符流来读取信息,将wifi名称和密码提取出来

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


killerman201503 发表于 2021-10-23 22:00

可以不错,for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear

zlw8574 发表于 2021-10-29 08:38

这个就是读取系统保存的wifi,将WiFi名称和密码显示出来,exec执行的是cmd命令,将字符流输出保存到文件中,只适用于windows系统,linux和mac不能执行cmd命令。

吾爱爱破解 发表于 2021-10-21 13:05

mac不好使啊

Prison11 发表于 2021-10-24 11:03

值得学习,谢谢楼主

Robots 发表于 2021-10-28 16:03

这个只能获取到已经连接的wifi密码吗?

BenChuOriginal 发表于 2021-10-28 17:58

谢谢提供思路!

lscxw 发表于 2021-10-28 18:06

学习一下

l398906114 发表于 2021-11-12 16:18

这个只能看自己电脑连接过的

Newriver 发表于 2021-11-15 10:30

不错,帮助很大
页: [1] 2 3
查看完整版本: Java实现本机WIFI密码查看