wxPython写的简单md5破解程序

# -*- coding: cp936 -*-

import wx
import os
import hashlib

class TextFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'md5Cracker By blrk', size=(500, 300));
        panel = wx.Panel(self, -1);

        # md5值的输入框
        md5Label = wx.StaticText(panel, -1, 'md5:', pos=(30,32));
        self.md5Text = wx.TextCtrl(panel, -1, '输入要破解的md5值', pos=(100,30), size=(300, -1));
        self.md5Text.SetInsertionPoint(0);

        # 显示选择的字典路径
        dictLabel = wx.StaticText(panel, -1, '字典文件:', pos=(20,72));
        self.dictText = wx.TextCtrl(panel, -1, '选择字典文件路径', pos=(100,70), size=(300, -1));
        self.dictText.SetInsertionPoint(0);

        # 选择字典文件按钮
        self.dictButton = wx.Button(panel, -1, '浏览', pos=(420, 70), size=(40,-1));
        self.Bind(wx.EVT_BUTTON, self.OnChooseDict, self.dictButton);
        self.dictButton.SetDefault();

        # 选择字典文件按钮
        self.beginButton = wx.Button(panel, -1, '开始破解', pos=(200, 200), size=(80,-1));
        self.Bind(wx.EVT_BUTTON, self.OnBeginCrack, self.beginButton);
        self.beginButton.SetDefault();

        # 初始化状态栏
        self.initStatusBar();

    def initStatusBar(self):
        self.statusbar = self.CreateStatusBar();
        self.statusbar.SetStatusText('就绪');

    def ReadFile(self):     #2 读字典文件
        fileHandle = open(self.filename);
        self.dictList = fileHandle.readlines();
        for word in self.dictList:
            word=word.strip('\n');
        fileHandle.close();

    wildcard = 'dict files (*.txt)|*.txt|All files (*.*)|*.*';

    def OnChooseDict(self, event):
        dlg = wx.FileDialog(self, 'Open dictionary file...', os.getcwd(),
                            style=wx.OPEN, wildcard=self.wildcard);
        if dlg.ShowModal() == wx.ID_OK:
            self.filename = dlg.GetPath();
            self.dictText.SetValue(self.filename);
            self.statusbar.SetStatusText('已选定字典文件');
        dlg.Destroy();

    def OnBeginCrack(self, event):
        self.ReadFile();
        inputMd5 = self.md5Text.GetValue();
        inputMd5 = inputMd5.lower();
        print('inputMd5: %s' %(inputMd5));

        for word in self.dictList:
            self.statusbar.SetStatusText('正在处理:%s' %(word));
            wordHash = hashlib.md5(word);
            wordHash = wordHash.hexdigest();
            if inputMd5 == wordHash:
                print('破解成功,明文:%s' %(word));
                self.statusbar.SetStatusText('破解成功,明文:%s' %(word));
        
if __name__ == '__main__':
    app = wx.PySimpleApp();
    frame = TextFrame();
    frame.Show();
    app.MainLoop();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值