先附上代码
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'F:\Python\PyAccess.ui'
#
# Created: Thu Feb 23 15:07:51 2012
# by: PyQt4 UI code generator 4.9.1
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class PYAccess(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(397, 91)
MainWindow.setMaximumSize(QtCore.QSize(397, 91))
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(_fromUtf8("Access.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
self.centralWidget = QtGui.QWidget(MainWindow)
self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
self.btnSelectFile = QtGui.QPushButton(self.centralWidget)
self.btnSelectFile.setGeometry(QtCore.QRect(290, 20, 91, 23))
self.btnSelectFile.setObjectName(_fromUtf8("btnSelectFile"))
self.tbFilePath = QtGui.QLineEdit(self.centralWidget)
self.tbFilePath.setGeometry(QtCore.QRect(20, 20, 261, 20))
self.tbFilePath.setObjectName(_fromUtf8("tbFilePath"))
self.tbVersion = QtGui.QLineEdit(self.centralWidget)
self.tbVersion.setGeometry(QtCore.QRect(20, 50, 111, 20))
self.tbVersion.setObjectName(_fromUtf8("tbVersion"))
self.tbPassword = QtGui.QLineEdit(self.centralWidget)
self.tbPassword.setGeometry(QtCore.QRect(160, 50, 221, 20))
self.tbPassword.setObjectName(_fromUtf8("tbPassword"))
MainWindow.setCentralWidget(self.centralWidget)
self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.btnSelectFile, QtCore.SIGNAL(_fromUtf8("clicked()")), self.slotselectfile)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def slotselectfile(self):
fname = QtGui.QFileDialog.getOpenFileName(MainWindow, 'Open Access File','/*.mdb')
if fname=='':
return
else:
self.tbFilePath.setText(fname)
# 未加密的文件0x42开始至0x61之前的每间隔一字节的数值
baseByte=[0xbe, 0xec, 0x65, 0x9c, 0xfe,0x28, 0x2b, 0x8a, 0x6c, 0x7b,0xcd, 0xdf, 0x4f, 0x13, 0xf7,0xb1]
# 标志 0x62 处的数值
flagByte = 0x0c
# 定义密码字符串
password = '';
# 读取方式打开文件并复制给fs
fs=open(fname,'r')
fs.seek(0x14)
version='unknow'
ver = ord(fs.read(1))
if ver==1:
version='Access2000'
elif ver==0:
version='Access97'
fs.seek(0x42)
bs=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
integer = 0
while integer < 33:
tmpInt=ord(fs.read(1))
bs[integer]=tmpInt
integer=integer+1
#标记
flag = bs[32] ^ flagByte
# 开始循环
i = 0
while i < 16:
b = (baseByte[i] ^ bs[i * 2])
if i % 2 == 0 and ver == 1:
b = b^flag;
if b > 0 :
password = password + chr(b)
i = i + 1
fs.close()
self.tbVersion.setText(version)
self.tbPassword.setText(password)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Access 数据库密码破解工具", None, QtGui.QApplication.UnicodeUTF8))
self.btnSelectFile.setText(QtGui.QApplication.translate("MainWindow", " 选择文件 ...", None, QtGui.QApplication.UnicodeUTF8))
self.tbFilePath.setText(QtGui.QApplication.translate("MainWindow", "Access文件路径,请点击右侧“选择文件” ", None, QtGui.QApplication.UnicodeUTF8))
self.tbVersion.setText(QtGui.QApplication.translate("MainWindow", " 版本信息 ", None, QtGui.QApplication.UnicodeUTF8))
self.tbPassword.setText(QtGui.QApplication.translate("MainWindow", " Access 文件密码 ", None, QtGui.QApplication.UnicodeUTF8))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = PYAccess()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
如何引入pyQt4?
第一步:确认自己电脑上的Python版本。然后下载对应的.whl文件下载
第二步:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4上下载对应版本版本的.whl文件。例如cp-27-cp27m就代表是python2.7的版本。如果要下载python3.6且电脑是64位的则需要下载PyQt4-4.11.4-cp36-cp36m-win_amd64.whl。安装的时候程序会去找对应的python版本,如果没选择正确的程序版本,则会提示
第三步:将whl文件拷贝到安装python软件的scripts目录下,然后再命令行进行入到此目录下执行pip3 install PyQt4-4.11.4-cp36-cp36m-win_amd64.whl就安装成功了