1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 小案例:利用Python获取Windows电脑WiFi密码

小案例:利用Python获取Windows电脑WiFi密码

时间:2019-01-23 09:11:03

相关推荐

小案例:利用Python获取Windows电脑WiFi密码

一、需求:

电脑上忘记wifi密码,直接用命令行便可查看所有的wifi密码

二、逻辑:

1、提取windows上所有的wifi名称

2、每一个wifi的信息存储在一个字典里

3、判断wifi密码是否存储在windows计算机里,不存在则忽略

4、密码存在时,加上命令参数“key=clear”显示wifi密码

5、显示所有的wifi密码

三、代码:

# subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值import subprocessimport re# 用于判断OS的语言import localeloc_lang = locale.getdefaultlocale()# print(loc_lang[0])# 代码中用到的正则匹配模式字符串,提取出来以便不同语言系统使用,默认支持中文英文,其他语言需要更改匹配语句if loc_lang[0] == "zh_CN":re_pattern = ["所有用户配置文件 : (.*)\r", "安全密钥: 不存在", "关键内容 : (.*)\r"]else:re_pattern = ["All User Profile: (.*)\r", "Security key : Absent", "Key Content : (.*)\r"]# 如果 capture_output 设为 true,stdout 和 stderr 将会被捕获cmd_output = subprocess.run(["netsh", "wlan", "show", "profiles"], capture_output=True).stdout.decode('gbk')# print(cmd_output)wifi_names = (re.findall(re_pattern[0], cmd_output))# print(wifi_names)wifi_list = []if len(wifi_names) != 0:for name in wifi_names:# 每一个wifi的信息存储在一个字典里wifi_profile = {}profile_info = subprocess.run(["netsh", "wlan", "show", "profiles", name],capture_output=True).stdout.decode('gbk')# print(profile_info)# 判断wifi密码是否存储在windows计算机里,不存在则忽略if re.search(re_pattern[1], profile_info):continueelse:wifi_profile["ssid"] = name# 密码存在时,加上命令参数“key=clear”显示wifi密码profile_info_pass = subprocess.run(["netsh", "wlan", "show", "profiles", name, "key=clear"],capture_output=True).stdout.decode('gbk')password = re.search(re_pattern[2], profile_info_pass)# print(password)if not password:wifi_profile["password"] = Noneelse:wifi_profile["password"] = password[1]wifi_list.append(wifi_profile)for i in range(len(wifi_list)):print(wifi_list[i])

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。