• 警告。如何防止别人“盗窃” 你的 WiFI 密码,6 个方案提供给你~


    上周写了一篇博客,《用 Python 脚本能获取 Wifi 密码么?能。》,大家反馈这仅仅是解决了本地电脑已链接 wifi 密码,那如果有人尝试暴力“破解” 我们的 WiFI 密码,有没有手段组织他们呢?

    有啊,这不就来了么。

    ⛳️ 【敌方】用到的核心第三方库

    知己知彼,百战百胜,想要防止别人“盗取”你的 WIFI 密码,那首先要知道对方是如何暴力获取你的密码的。

    初级选手一般用到 Python 的第三方库是 pywifi,手段被属于暴力破解范畴,技巧是弱密码+循环尝试,模块安装使用如下命令。

    pip install pywifi
    
    • 1

    该库开源地址为:https://github.com/awkman/pywifi,可以随时关注其更新情况。

    接下来先尝试一下最基础代码。

    import pywifi  # 模块导入
    from pywifi import const  # 常量导入
    
    # 创建 wifi 对象
    wifi = pywifi.PyWiFi()
    # 获取第一个 wifi 网卡
    ifaces = wifi.interfaces()[0]  # 获取到第一个无线网卡
    
    print(ifaces)
    print('无线网卡名为:', ifaces.name())
    
    # 连接到wifi 时状态码是4,未连接是0
    print("状态码:", ifaces.status())
    # 使用内置常量 const.IFACE_CONNECTED为4
    if ifaces.status() == const.IFACE_CONNECTED:
        print('已连接')
    else:
        print('未连接')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    获取的是 WLAN 连接状态。
    在这里插入图片描述

    这个准备工作完成之后,他们就会使用密码本或者自定义关键词,尝试获取你的密码,具体实施步骤如下所示。

    ⛳️ 实战场景

    先调用内置方法,获取附近 WiFi,下述代码运行之前一定要增加停顿时间,否则会出现无法找到 WiFi 名称情况。

    import pywifi  # 模块导入
    from pywifi import const  # 常量导入
    import time
    
    # 创建 wifi 对象
    wifi = pywifi.PyWiFi()
    # 获取第一个 wifi 网卡
    ifaces = wifi.interfaces()[0]  # 获取到第一个无线网卡
    
    # 执行扫描
    ifaces.scan()
    
    # 停顿一段时间,等待扫描结果
    time.sleep(3)
    wifi_list = ifaces.scan_results()
    
    print(wifi_list)
    for w in wifi_list:
        print(w.ssid)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    运行代码,输出如下结果。

    360WiFi-Cxxxx
    CMCC-6pqa
    CMCC-CUfQ
    @PHIxxxx_E5
    yuelxxxxx_EXT2.4G
    1303
    360WiFi-C8xxxx-5G
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    有这些 WiFi 名称,下面就会对指定 WiFi 进行连接测试,下面的代码拿一个我们也按照这个步骤,拿一个已知道密码的 WiFi 热点进行测试。

    import pywifi  # 模块导入
    from pywifi import const  # 常量导入
    import time
    
    
    def connect_wifi():
        wifi = pywifi.PyWiFi()
        # 获取第一个无线网卡
        ifaces = wifi.interfaces()[0]
    
        print(ifaces)
    
        # 如果连接 wifi 首先断开
        ifaces.disconnect()
        time.sleep(2)
        wifi_status = ifaces.status()
        # 未连接,调用如下代码
        if wifi_status == const.IFACE_DISCONNECTED:
            # 创建WiFi连接文件
            profile = pywifi.Profile()
            # 设置要连接WiFi的名称
            profile.ssid = "我们自己的 Wifi "
            # 检测网卡状态
            profile.auth = const.AUTH_ALG_OPEN
            # 设置 wifi 加密算法
            profile.akm.append(const.AKM_TYPE_WPA2PSK)
            # 设置加密单元
            profile.cipher = const.CIPHER_TYPE_CCMP
            # 调用密码
            profile.key = '我自己的 Wifi 密码'
            # 删除连接过的wifi文件
            ifaces.remove_all_network_profiles()
            # 设定新连接文件
            new_profile = ifaces.add_network_profile(profile)
    
            # 连接 wifi
            ifaces.connect(new_profile)
            # 等待wifi连接的时间,可长可短,具体自行设置
            time.sleep(2)
    
            if ifaces.status() == const.IFACE_CONNECTED:
                print("连接成功")
            else:
                print("连接失败")
            # 断开连接
            ifaces.disconnect()
        else:
            pass
    
    
    if __name__ == '__main__':
        connect_wifi()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    再总结一下核心逻辑,实现了 WiFi 列表获取之后,他们就会通过暴力循环来实现密码解析。

    实战中也可能会用到 WIFI 密码本,不过一般不好用,好用的橡皮擦倒是有一份,在梳理一下对方逻辑,然后我们从中寻找避免被 “盗取” 密码的办法,“偷” 密码逻辑如下。

    1. 通过 pywifi 模块扫描所有 WiFi 热点;
    2. 迭代各个热点;
    3. 读取密码本文件,然后逐一使用密码连接当前正在迭代的 WiFi ,获取连接状态;
    4. 连接成功记录到文件中,连接失败舍弃掉
    5. 密码本遍历完毕,更换下一个热点,继续执行相同操作。

    该技术的一些疑问

    这种方式“获取” 密码速度怎么样?快么?
    很慢,除非我们使用的是 12345678,11111111,66666666 这样简单的密码。

    这代码到底有没有用?
    对于获取 WIFI 密码来说,这代码没啥毛病,但是效率不高,实战中效果并不理想。

    可以使用多线程破解吗
    不可以,电脑网卡同时只能连接一个 WIFI ,无法使用多线程或者多进程操作。但如果对方在电脑上安装了多个网卡,那就另说了。

    他们有没有好一些的 WIFI 破解思路呢?
    有,但是学习成本会变高。

    例如 单片机 WIFI 攻击。
    也可以研究一下 Aircrack-ng ,也能获取到 wifi 密码。

    密码本哪里有
    一般 “盗窃者” 找不到好用的密码本,除非他们在 评论区留言邮箱或者 联系方式,或者点击下面卡片,找橡皮擦索取。

    回到本文标题《如何防止别人“盗窃”你的 WiFI 密码》,到底有什么办法呢。

    如何防止别人 “盗取” 你的 WiFi 密码,6 个建议!

    1. 密码长度不低于 11 位;
    2. 使用复杂密码组合,用姓名首字母缩写+手机号+2~4 个标点符号。
    3. 在路由器或家用防火墙关闭 WiFI 热点发现,然后给 WiFi 设置固定名称,只能输入特定名称才能连接
    4. 开启路由器或家用防火墙的【防蹭网】功能,最新的路由基本都能设置。
    5. 在路由器/家庭防火墙配置 IP/MAC 绑定,只能指定设备登录。
    6. 开启 WiFi 连接确认功能,当有新设备连接 WiFi 时,需要我们手动点击一下同意。

    掌握这些配置方法之后,我想没有人能 蹭到你的 WiFI 了。

    📢📢📢📢📢📢
    💗 你正在阅读 【梦想橡皮擦】 的博客
    👍 阅读完毕,可以点点小手赞一下
    🌻 发现错误,直接评论区中指正吧
    📆 橡皮擦的第 768 篇原创博客

    从订购之日起,案例 5 年内保证更新

  • 相关阅读:
    客快物流大数据项目(八十五):实时OLAP分析需求
    VUE3+mqtt封装,解决多页面使用需重复连接等问题
    6-1 pytorch中构建模型的3种方法
    应广单片机PMS150/PMC150/PMS150C消费类单片机
    怎么给字符串加索引?
    css让元素透明的方式
    以赛促练-力扣第311场周赛反思与总结
    未归一化导致Dead ReLU的悲剧
    首次失败后,爱美客第二次冲刺港交所上市,财务负责人变动频繁
    3万字操作系统常用知识总结
  • 原文地址:https://blog.csdn.net/hihell/article/details/128112532