Java获取本机连接过的所有WiFI密码并且以TXT文本输出文件

您所在的位置:网站首页 cmd怎么获取WiFi密码 Java获取本机连接过的所有WiFI密码并且以TXT文本输出文件

Java获取本机连接过的所有WiFI密码并且以TXT文本输出文件

2023-09-24 09:58| 来源: 网络整理| 查看: 265

前言

本文将介绍如何使用Java来获取Windows下所有连接过的WIFI密码,并且将WIFI信息以TXT文本的形式来输出文件。

运行效果:在这里插入图片描述 WIFI信息会在控制台打印出来自动打开生成WIFI信息的TXT文本 原理:

本教程原理就是用Java调用cmd命令获取WIFI信息,然后使用BufferedReader来读取内容。 使用readLine()进行读取字符串(注意:readLine()是一次读取一行的数据),所以需要使用循环实现读取多行数据。

主要用到2条命令:

netsh wlan show profiles显示所有WIFI名称 在这里插入图片描述netsh wlan show profiles name"wifi名称" key=clear显示指定WiFi的信息 在这里插入图片描述

在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。

substring(int beginIndex) 形式 String str = "我爱 Java 编程"; String result = str.substring(3); System.out.println(result); // 输出:Java 编程 substring(int beginIndex,int endIndex) 形式 public static void main(String[] args) { String day = "Today is Monday"; //原始字符串 System.out.println("substring(0)结果:"+day.substring(0));//结果:Today is Monday System.out.println("substring(2)结果:"+day.substring(2));//结果:day is Monday System.out.println("substring(10)结果:"+day.substring(10));//结果:onday System.out.println("substring(2,10)结果:"+day.substring(2,10));//day is M System.out.println("substring(0,5)结果:"+day.substring(0,5));//Today }

1.首先将cmd命令执行的结果使用Java提取字符串(substring)比如WIFI名称 在这里插入图片描述 提取字符串(WIFI名称)

name.substring(15,name.length())

判断是否含有WIFI名称,如果>=0则代表有(true),否则就没有(false)

name.indexOf(" 所有用户配置文件 : ")>=0

比如我只想获取WIFI名称花伤情犹在,就要从含有所有用户配置文件这一行的字符串第15位开始提取到最后一位,这样就截取到WIFI名称

2.下一步拿到WiFi名称之后就可以获取WIFI信息,通过netsh wlan show profiles name"wifi名称" key=clear可以获取到密码,还是通过使用Java提取字符串(substring)比如WIFI密码 在这里插入图片描述 提取字符串(WIFI密码)

password.substring(22,password.length())

判断是否含有WIFI密码 ,如果>=0则代表有(true),否则就没有(false)

password.indexOf("关键内容")>=0

比如我只想获取WIFI名称为花伤情犹在的WIFi密码,就要从含有关键内容的这一行的字符串第22位开始提取到最后一位,这样就截取到WIFI名称

3.然后利用Java的输出流把这些信息输出到当前路径下的WIFI.txt文件里面

写入WIFI名称

fileWriter.write("WIFI名称:"+name.substring(15,name.length())+"\n");

写入WIFI密码

fileWriter.write("WIFI密码:"+password.substring(22,password.length())+"\n"+"***************************"+"\n"); 最后用Java调用cmd打开当前路径下的WIFI.txt文件

4.最后用Java调用cmd命令调用notepad也就是文本文档打开当前路径的WIFI.txt文件

Runtime.getRuntime().exec("cmd.exe /c notepad "+System.getProperty("user.dir")+"\\WIFI.txt"); 代码: package 显示密码; 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(); } } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3