Pour DBeaver 6.1.3+ les informations d'identification sont désormais stockées dans un fichier "json" avec un cryptage différent.
Cela semblait faire l'affaire pour moi :
import javax.crypto.*;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.*;
public class DecryptDbeaver {
// depuis la source DBeaver 23/08/19 https://github.com/dbeaver/dbeaver/blob/57cec8ddfdbbf311261ebd0c7f957fdcd80a085f/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/app/DefaultSecureStorage.java#L31
private static final byte[] LOCAL_KEY_CACHE = new byte[] { -70, -69, 74, -97, 119, 74, -72, 83, -55, 108, 45, 101, 61, -2, 84, 74 };
static String decrypt(byte[] contents) throws InvalidAlgorithmParameterException, InvalidKeyException, IOException, NoSuchPaddingException, NoSuchAlgorithmException {
try (InputStream byteStream = new ByteArrayInputStream(contents)) {
byte[] fileIv = new byte[16];
byteStream.read(fileIv);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKey aes = new SecretKeySpec(LOCAL_KEY_CACHE, "AES");
cipher.init(Cipher.DECRYPT_MODE, aes, new IvParameterSpec(fileIv));
try (CipherInputStream cipherIn = new CipherInputStream(byteStream, cipher)) {
return inputStreamToString(cipherIn);
}
}
}
static String inputStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.err.println("syntaxe: param1: chemin complet de votre fichier credentials-config.json");
System.exit(1);
}
System.out.println(decrypt(Files.readAllBytes(Paths.get(args[0]))));
}
}
Transmettez-lui le chemin de votre fichier credentials-config.json sur le système de fichiers local, pour moi c'était
Compiler
$ javac DecryptDbeaver.java
Maintenant exécutez-le [ajustez les chemins pour cibler votre fichier credentials-config.json]
$ java DecryptDbeaver ~/Library/DBeaverData/workspace6/General/.dbeaver/credentials-config.json
Ou si java 11+ :
$ java DecryptDbeaver.java ~/Library/DBeaverData/workspace6/General/.dbeaver/credentials-config.json
Cela affichera dans la console l'utilisateur et le mot de passe pour les connexions.
{"postgres-jdbc-some-id":{"#connection":{"user":"your_user_name","password":"your_password"...
Si vous ne reconnaissez pas quel mot de passe correspond à quelle DB en fonction du nom d'utilisateur, vous devez également croiser les noms d'identification qu'il affiche initialement avec le fichier data-sources.json
associé (qui devrait déjà être présent et non crypté et contient les coordonnées de la base de données).
2 votes
Cela fonctionne pour moi : bugdays.com/dbeaver-password-decrypter
0 votes
Cette question est destinée à un outil utilisé souvent par les programmeurs, il se trouve également être utilisé par d'autres personnes LOL. SU pourrait fonctionner aussi, mais je pense que c'est bien ici puisque la réponse est pratiquement une réponse de programmation.
0 votes
@rogerdpack DBeaver est peut-être souvent utilisé par les programmeurs, mais cela ne signifie pas que c'est un outil principalement utilisé par les programmeurs. Il est également utilisé par les administrateurs de base de données ou d'autres personnes interrogeant des bases de données.