Python如何实现查看WiFi密码?

由于最近公司加强对无线安全的管理,wifi密码从以前的12345678,变成复杂难记的一串,导致我时常忘记WIFI密码,而遭受同事的“毒打”。由于我不是那种喜欢打扰同事认真工作的人,于是,我决定用python来试试,看看能不能读取到已连接过WIFI的密码,这样就不用老是叨扰别人了!

hahah

1. windows查看WIFI密码的方法

经过我的一番思考和查阅资料(搜索引擎),原理大致是这样。
通过windows的wifi属性查看密码。这种方式,操作起来相当麻烦,一般人根本找不到。即使第一次找到了,找第二次也要折磨死人。

windows查看wifi密码

另外,我们可以使用命令行来实现上述操作:

netsh wlan show profiles

列出已连接wifi的列表
然后再使用命令 ``netsh wlan show profiles WiFi名称 key=clear:

netsh wlan show profiles ZXQ key=clear

查看安全设置获得密码:

安全设置

上面的方式,仍然比较麻烦,对于我这种懒人来说,实在是有点聒噪!我就想快速的查看密码,不要输入!

想到python也可以执行cmd命令,那么第二种命令行的方式,不就可以用python来实现了吗?!

2. 使用subprocess模块

subprocessPython标准库中的一个模块,用于在Python程序中执行外部命令或子进程。它可以通过创建子进程并与其进行通信,来调用系统命令或其他可执行文件。

subprocess模块提供了多个函数来调用子进程,如subprocess.run()subprocess.Popen()等。这些函数可以执行命令并返回执行结果,也可以通过传递参数和读取标准输入输出进行进程间的通信。

import subprocess

def get_wifi_password():
    # 调用系统命令,获取WiFi密码
    result = subprocess.check_output(['netsh', 'wlan', 'show', 'profile'])
    result = result.decode('gbk')  # 将命令输出转换为字符串

    # 提取WiFi名称
    profiles = [i.split(':')[1][1:-1] for i in result.split('\n') if '所有用户配置文件' in i]

    # 获取各个WiFi网络的密码
    passwords = []
    for profile in profiles:
        password = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', 'name=' + profile, 'key=clear'])
        password = password.decode('gbk')  # 转换为字符串
        password = [i.split(':')[1][1:-1] for i in password.split('\n') if '关键内容' in i]
        passwords.append((profile, password[0]))

    return passwords

# 调用函数获取WiFi密码
wifi_passwords = get_wifi_password()

# 打印WiFi名称和密码
for wifi in wifi_passwords:
    print(f'WiFi名称:{wifi[0]},密码:{wifi[1]}')

python查看wifi密码

Got it!, 有了这个脚本,这不就是点一下的事么。在这个示例代码中,我们使用subprocess.check_output 函数调用了 netsh 命令来获取已连接WiFi网络的信息。获取到的信息中包含WiFi网络的名称和密码。

送给公司行政的小姐姐用,下次她见到我,不得叫一声大哥?

3. pywifi模块暴力破解

PyWifi 是一个用于操作WiFi的第三方库,提供了方便的API以获取WiFi信息。其本身并不支持获取已连接过的wifi的密码。该库主要用于连接、断开以及扫描wifi网络。

首先,我们需要使用pip命令来安装pywifi库:

pip install pywifi

由于此模块基于 comtypes 模块,因此同时需要下载此模块:

pip install comtypes

使用 PyWifi,首先我们需要创建一个PyWifi 对象:

#-*-coding:utf-8-*-
import pywifi,time
from pywifi import const

def scan_wifi():
    wifi = pywifi.PyWiFi()
    iface = wifi.interfaces()[0] #acquire the first Wlan card,maybe not
    iface.scan() # 扫描wifi
    time.sleep(1) # 休息一下
    basewifi = iface.scan_results()
 
    for i in basewifi:
        print("wifi scan result:{}".format(i.ssid))
        print("wifi device MAC address:{}".format(i.bssid))
        
        # 尝试连接wifi
        profile = pywifi.Profile()                          #配置文件
        profile.ssid = i.ssid                        #wifi名称
        profile.auth = const.AUTH_ALG_OPEN                  #需要密码
        profile.akm.append(const.AKM_TYPE_WPA2PSK)          #加密类型
        profile.cipher = const.CIPHER_TYPE_CCMP             #加密单元
        profile.key = gen_key()                            #wifi密码
        
        iface.remove_all_network_profiles()                #删除其它配置文件
        tmp_profile = iface.add_network_profile(profile)   #加载配置文件
        iface.connect(tmp_profile)
        time.sleep(5)
        if iface.status() == const.IFACE_CONNECTED:
            print("connect successfully!")
        else:
            print("connect failed!")
        time.sleep(1)
    return basewifi

def gen_key():
    # 生成wifi破解密码,通用做法是读取密码字典库
    pass

if __name__ == '__main__':
    scan_wifi()

因此,小伙伴们要当心哦,wifi密码设置要复杂!否则被人偷用网络都不知道哦!
当然咯,这个暴力破解的方法耗时也不稳定,而且也不一定正确,本文只是从技术角度来阐述如何使用Python来玩WIFI, 并不建议大家做任何破坏性的操作和任何不当的行为。

上一篇:Python中的交互式数据可视化工具Streamlit

4.总结

为了能够快速查看 Wi-Fi 密码,我们介绍了两种方法:一种是通过 Windows 的 Wi-Fi 属性查看密码,另一种是使用Python 中的 subprocess 模块来执行命令行获取密码;

另外呢,有个名为 PyWifi 的第三方库,它可以用于操作 Wi-Fi,并提供了简单的 API 来获取 Wi-Fi 信息。比较适合我们获取到该网络的信息,以及使用 pywifi 模块实现一些更高级的功能,例如检测 Wi-Fi 网络的质量、分析数据流量等等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容