banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban

Python3でコンピュータ上のすべてのWi-Fiアカウントとパスワードを印刷する

原理#

cmd でローカルの Wi-Fi 設定を検索する#

cmd でnetsh wlan show profilesコマンドを実行します:

image

これにより、このコンピュータ上のすべての Wlan 設定ファイルが表示されます。パスワードを表示するためには、name=wlan 名(つまり SSID)key=clear を指定します。
netsh wlan show profiles name=連了是SB key=clear

image

Python の os.popen () 関数を使用して、cmd でパラメータを実行する#

Python には os ファイル / ディレクトリライブラリがあり、その中に os.popen という関数があります。これは、コマンドからパイプを開くために使用できます。

os.popen の紹介:python os.popen メソッド | 菜鳥教程

つまり、このコマンドは、渡された文字列を cmd で実行することができます。例えば、os.popen('dir').read()
image

これが使用されるすべての基本的な知識です。

コードの説明#

  • 最初にライブラリをインポートする必要があります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 つずつフォーマットしてクエリステートメントに渡し、クエリの内容を出力します。結果は以下のようになります:
    image

もちろん、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]))
  • 結果は以下のようになります:

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。