使用python解码navicat导出的数据库连接信息

解码脚本如下:

from Crypto.Cipher import AES
from binascii import a2b_hex


class PrpCrypt(object):
    def __init__(self):
        self.key = 'libcckeylibcckey'.encode('utf-8')
        self.mode = AES.MODE_CBC
        self.iv = 'libcciv libcciv '.encode('utf-8')

    def decrypt(self, text):
        text = text.encode('utf-8') if type(text) == str else text
        cryptor = AES.new(self.key, self.mode, self.iv)
        plain_text = cryptor.decrypt(a2b_hex(text))
        return bytes.decode(plain_text).rstrip()


if __name__ == '__main__':
    pc = PrpCrypt()
    print('密码:', pc.decrypt('727F197D38E9AD02E797165FFA83AE8E7B523BEA9E073FD73BD9AA0F1B896BFB'))

将navicat导出的connections.ncx文件打开,找到密码,粘贴到上述脚本中。

 执行后报错

pycham安装crypto后还是报错,默认安装后文件夹名称是小写,需要将首字母改为大写。

此时进入该文件夹发现仍不存在Cipher,执行脚本还是报错

需要再安装pycryptodome,安装后查看文件夹Cipher已经存在了

再执行脚本就能解码出密码了。但是解码后存在一部分乱码,实际密码是乱码前的那部分信息,试了几个发现是偶现情况,这个目前还没搞清楚原因,有知道的可以在评论区告诉我