воскресенье, 27 ноября 2011 г.

Восстановление пароля weblogic


Для безопасного хранения паролей в Weblogic server  предусмотрено их шифрование с помощью алгоритмов 3DES  или AES. Шифрованные пароли и логины хранятся в конфигурационных файлах домена (config.xml), конфигурационных файлах источников данных ($DOMAIN_HOME/config/jdbc/Datasource_name.xml ), в файле для запуска серверов без ввода пароля (boot.properties) и т.д. Ключ хранится в файле SerializedSystemIni.dat

Зашифрованные этими ключом данные при наличии доступа к ключу шифрования могут быть расшифрованы.

под катом - маленький класс, позволяющий это сделать.
На вход утилите требуются путь к домену и зашифрованный пароль. На выходе - дешифрованный пароль.
перед запуском необходимо добавить в переменную CLASSPATH директорию, где находится скомпилированный класс и путь к файлу  weblogic.jar

например, вот так:







import weblogic.security.internal.SerializedSystemIni;

import weblogic.security.internal.encryption.ClearOrEncryptedService;
import weblogic.security.internal.encryption.EncryptionService;
import java.io.File;

public class DecryptPass
{
    static EncryptionService es = null;
    static ClearOrEncryptedService ces = null;
    public static void main(String args[]) throws Exception
    {
    String passwd,pth = null;
        
    if (args.length == 2) {
    passwd = args[1];
       pth = args[0];
       System.out.println(
        decryptPass(passwd,pth)
        );
    }
    else
        System.err.println("Usage: java DecryptPass  path_to_domain_dir encripyed_password");

    }    
    
    private static String decryptPass(String passwd, String pth) {
    passwd = passwd.replace("\\", "");
    es = SerializedSystemIni.getEncryptionService(
        new File(pth).getAbsolutePath()
        );
        if(es == null)
        {
        return "Error creation encryption service";
        }
        ces = new ClearOrEncryptedService(es);
        return "Password: " + ces.decrypt(passwd);
    }
}

Комментариев нет:

Отправить комментарий