Для DBeaver 6.1.3+ пароли теперь хранятся в файле “json” с новым шифрованием.
Где найти файл хранящий сохраненные пароли, Вы можете узнать на страницах официальной документации.
А потом Вы можете использовать скрипт на питоне 2/3 для расшифровки и вывода результатов.
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 | import sys import base64 import os import json from Crypto.Cipher import AES if len(sys.argv) < 2: filepath = os.path.expanduser("~/.local/share/DBeaverData/workspace6/General/.dbeaver/credentials-config.json") else: filepath = sys.argv[1] # Python 3 #PASSWORD_DECRYPTION_KEY = bytes([-70, -69, 74, -97, 119, 74, -72, 83, -55, 108, 45, 101, 61, -2, 84, 74]) #PASSWORD_DECRYPTION_KEY = bytes([186, 187, 74, 159, 119, 74, 184, 83, 201, 108, 45, 101, 61, 254, 84, 74]) # Python 2 PASSWORD_DECRYPTION_KEY = bytearray([186,187,74,159,119,74,184,83,201,108,45,101,61,254,84,74]) data = open(filepath, 'rb').read() # Python 3 # decryptor = AES.new(PASSWORD_DECRYPTION_KEY, AES.MODE_CBC, data[:16]) # Python 2 decryptor = AES.new(str(PASSWORD_DECRYPTION_KEY), AES.MODE_CBC, data[:16]) # The '-8' was observed in my case, I'm not sure it will be the same in every case # Basically this was the string '\x08\x08\x08\x08\x08\x08\x08\x08' in the decrypted output output = decryptor.decrypt(data[16:])[:-11] print(output) print(json.dumps(json.loads(output), indent=4, sort_keys=True)) |
Вывод будет похож на что-то подобное:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | {"mariaDB-16e4609c25e-2737c22fbf07523e":{"#connection":{"user":"root","password":"XXXXXXXXXXX"},"network/ssh_tunnel":{"user":"woreg"}},"profile:255.255.255.255":{"network/ssh_tunnel":{"user":"remo"}}} { "mariaDB-16e4609c25e-2737c22fbf07523e": { "#connection": { "password": "XXXXXXXXXXXXXXX", "user": "root" }, "network/ssh_tunnel": { "user": "remo" } }, "profile:255.255.255.255": { "network/ssh_tunnel": { "user": "remo" } } } |