获取错误而不是获取存储的 WIFI 密码

getting errors instead getting stored WIFI Passwords

我创建了一个 Python 脚本,它通过使用 subprocess 模块调用外部命令来显示存储在计算机上的所有密码。

我只想获取存储在我计算机上的所有密码,但是当我执行脚本时,我得到了一个错误,而不是得到结果:

TypeError: argument of type 'int' is not iterable

这是我的代码:

import subprocess

data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles'])
data.decode('utf-8').split('\n')
profiles = [x.split(':')[1][1:-1] for x in data if 'All User Profile' in x]
for i in profiles:
    results = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', i, 'key=clear'])
    results.decode('utf-8').split('\n')
    results = [y.split(':')[1][1:-1] for y in results if 'Key Content' in y]
    try:
        print('{:<30}| {:<}'.format(i, results[0]))
    except IndexError:
        print('{:<30}| {:<}'.format(i, ''))

data.decode('utf-8').split('\n') 正在生成一个很好的列表,但它没有将该列表放入变量 data,您需要将过程重新分配给 data 并对results

data = data.decode('utf-8').split('\n')

   results = results.decode('utf-8').split('\n')

可能还有其他问题,但这将解释为什么您认为的字符串列表实际上仍然是字节对象,因此您迭代的是字节 (int) 而不是字符串。

我没有像下面这样打破这个声明:

data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles'])
data.decode('utf-8').split('\n')

上面的语句是导致我的脚本出错的原因,但解决方案是像

data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles']).decode('utf-8').split('\n')

现在可以正常工作了