原理#
cmd でローカルの Wi-Fi 設定を検索する#
cmd でnetsh wlan show profiles
コマンドを実行します:
これにより、このコンピュータ上のすべての Wlan 設定ファイルが表示されます。パスワードを表示するためには、name=wlan 名(つまり SSID)key=clear を指定します。
netsh wlan show profiles name=連了是SB key=clear
Python の os.popen () 関数を使用して、cmd でパラメータを実行する#
Python には os ファイル / ディレクトリライブラリがあり、その中に os.popen という関数があります。これは、コマンドからパイプを開くために使用できます。
os.popen の紹介:python os.popen メソッド | 菜鳥教程
つまり、このコマンドは、渡された文字列を cmd で実行することができます。例えば、os.popen('dir').read()
これが使用されるすべての基本的な知識です。
コードの説明#
-
最初にライブラリをインポートする必要があります
import os
-
次に、os.popen () 関数を使用して、すべての Wi-Fi 設定をクエリします:
cmd_get_allpfs = ('netsh wlan show profiles')
with os.popen(cmd_get_allpfs) as f:
SSID_list = []
for line in f:
if'所有用户配置文件 :' in line:
line = line.strip().split(":")[1]
SSID_list.append(line)
- 返されたコンテンツの行に ' 所有用户配置文件 :' というフレーズが含まれている場合、その行を:で分割し、後半部分である Wi-Fi 名を SSID_list に保存します。その後、パスワードクエリのステートメントを 1 つずつ実行して出力します:
for SSID in SSID_list:
cmd_get_evepf = ('netsh wlan show profiles name={} key=clear'.format(SSID))
with os.popen(cmd_get_evepf) as r:
evepf = r.read()
print(evepf)
- リスト内の SSID を 1 つずつフォーマットしてクエリステートメントに渡し、クエリの内容を出力します。結果は以下のようになります:
もちろん、SSID とパスワードのみを簡単に取得したい場合は、次のように変更するだけです:
SSID_name1:passwod1
SSID_name2:passwod2
以下はSSID:password
を取得するためのコードの全体です:
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
@author: soapffz
@fucntion: コンピュータ上のすべてのWi-Fiアカウントとパスワードを表示する
@time:2018-12-15
'''
import os
cmd_get_allpfs = ('netsh wlan show profiles')
with os.popen(cmd_get_allpfs) as f:
SSID_list = []
for line in f:
if'所有用户配置文件 :' in line:
line = line.strip().split(":")[1]
SSID_list.append(line)
PASS_list = []
for SSID in SSID_list:
cmd_get_evepf = ('netsh wlan show profiles name={} key=clear'.format(SSID))
with os.popen(cmd_get_evepf) as r:
for line in r:
if'关键内容'in line:
line = line.strip().split(":")[1]
PASS_list.append(line)
for i in range(len(SSID_list)):
print("{}:{}".format(SSID_list[i], PASS_list[i]))
- 結果は以下のようになります: