获取错误而不是获取存储的 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')
现在可以正常工作了
我创建了一个 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')
现在可以正常工作了