Search code examples
webspheredatasourcejythonwsadmin

How to get properties of Authentification Alias on WAS 7 using wsadmin


I created a script in Jython which extracts some properties of a Data Source from WAS 7. One of theese properties is the Authentification Alias. I know that the password is crypted, but project has a semididactical purpose so the focus is on retriving the username and password, not to hack something.

How can I extract the properties of the Authentification Alias, i mean the username and the password?

Thanks in advance!


Solution

  • I solved the problem. :) Let's start with the beginning.

    You have to find security.xml (WAS_HOME/AppServer/profiles/Profile_Name/config/cells/Cell_Name/security.xml) file and search in it the Authentication Alias.

    Keep the line that contains the Auth Alias in a variable called Line and then extract the username, password and description.

    After that you have to decrypt your password with a XOR algorithm, and write the variables in a file as a list. Ex: AuthDataAlias = [\ ['AuthAlias', 'username', 'password', 'description'] ]

    Code:

    import sys, java, java.io, java.lang, base64, binascii
    
    resFile="resources.res"
    
    def search ( alias, file ):
        f=open(file)
        lines=f.readlines()
        for line in lines:
            poz = line.find('/'+alias)
            if poz > 0:
                Line = line
                break
    
        user = Line[Line.find('userId=')+8:Line.find('\" password')]
        password = Line[Line.find('password=')+15:Line.find('\" description')]
    
        password = decrypt(password)
        description = Line[Line.find('description=')+13:Line.find('\"/>')]
    
        write ( AuthAlias, user, password, description, resFile)
    
    def write ( alias, user, password, desc, file ):
        objItemFileOutputStream = java.io.FileOutputStream(file, 1)     #apend la sfirsit fisier
        objItemFileOutputStream.write('\n')
        AuthList = "AuthDataAlias = [\\\n[\'"+alias+"\', \'"+user+"\', \'"+password+"\', \'"+desc+"\'] ]" 
        objItemFileOutputStream.write(AuthList)
    
    
    def decrypt ( word ):
        if not len(word) > 1: exit()
        word = word.replace(':', '')
        value1 = binascii.a2b_base64(word)
        value2 = '_' * len(value1)
        out = ''
        for a, b in zip(value1, value2):
            out = ''.join([out, chr(ord(a) ^ ord(b))])
        return out
    
    
    #MAIN
    search ( AuthAlias, securityFile )
    

    If anyone gets stuck with this issue feel free to post your questions and I will try to answer ASAP.