本文最后更新于:2024年3月9日 晚上
拿到装有宝塔面板的服务器后,在不登录面板的情况下不能直接查看数据库信息
为了解决这个问题,就制作了一个脚本去进行配置信息的解密
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| import os
divtext = "3UOiALw6JWPa2F02dtN3+ynzUs9oXWcT5llyhivOBaI="
encryptedpass = "BT-0x:tXeUcwJk+Lu5t+BTgGgLAIJbFXYxU84sZA8ak1yjvec="
def db_decrypt(data): try: key = __get_db_sgin() iv = __get_db_iv() str_arr = data.split('\n') res_str = '' for data in str_arr: if not data: continue res_str += __aes_decrypt(data, key, iv) except: res_str = data return res_str
def __get_db_sgin(): keystr = '3gP7+k_7lSNg3$+Fj!PKW+6$KYgHtw#R' key = '' for i in range(31): if i & 1 == 0: key += keystr[i] return key
def __get_db_iv(): div = __aes_decrypt_module(divtext) return div
def __aes_decrypt_module(data): key = 'Z2B87NEAS2BkxTrh' iv = 'WwadH66EGWpeeTT6' return __aes_decrypt(data, key, iv)
def __aes_decrypt(data, key, iv): from Crypto.Cipher import AES import base64 encodebytes = base64.decodebytes(data.encode('utf-8')) aes = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8')) de_text = aes.decrypt(encodebytes) unpad = lambda s: s[0:-s[-1]] de_text = unpad(de_text) return de_text.decode('utf-8')
temptext = db_decrypt(encryptedpass[6:]) print(temptext)
|