HeidiSQL备份文件恢复密码


将 Heidisql 备份文件导出后,可以用此脚本恢复密码

# -*- coding: utf-8 -*-

import re

hosts = []
users = []
passwords = []

def heidipass(code):
    ascii = code[:-1]
    d = int(code [-1])
    decode = lambda x:chr(int(x,16) - d)
    password = ''.join(map(decode,re.findall("\w{2}",ascii)))
    return password

def main():
    with open("heidisql.txt", encoding="utf8") as f:
        lines = [r.strip() for r in f.readlines() if "\\Host<" in r]
    hosts = [re.split("\<\|\|\|\>",r)[-1] for r in lines]
    with open("heidisql.txt", encoding="utf8") as f:
        lines = [r.strip() for r in f.readlines() if "\\User<" in r]
    users = [re.split("\<\|\|\|\>",r)[-1] for r in lines]
    with open("heidisql.txt", encoding="utf8") as f:
        lines = [r.strip() for r in f.readlines() if "\\Password<" in r]
    passwords = [re.split("\<\|\|\|\>",r)[-1] for r in lines]
    i = 0
    for r in passwords:
        print("Host: {} User: {} Password: {}".format(hosts[i], users[i], heidipass(r)))
        i = i + 1

if __name__ == '__main__':
    main()