# -*- 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();
wxPython写的简单md5破解程序
最新推荐文章于 2021-07-16 16:57:50 发布