Python基于pyQt4破解access密码

先附上代码

# -*- 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就安装成功了