我在Jython中创建了一个脚本,它从WAS 7中提取数据源的一些属性。其中一个属性是Authentification Alias。我知道密码是加密的,但是项目有一个半连续的目的,因此重点是重新获取用户名和密码,而不是破解。
如何提取Authentification Alias的属性,我的意思是用户名和密码?
提前致谢!
答案 0 :(得分:0)
我解决了这个问题。 :)让我们从头开始。
您必须找到 security.xml (WAS_HOME / AppServer / profiles / Profile_Name / config / cells / Cell_Name /security.xml)文件并在其中搜索身份验证别名。
将包含Auth Alias的行保留在名为 Line 的变量中,然后提取用户名,密码和说明。
之后,您必须使用 XOR 算法解密密码,并将变量作为列表写入文件中。 例如: AuthDataAlias = [\ ['AuthAlias','username','password','description']]
代码:
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 )
如果有人对此问题感到困惑,请随时发布您的问题,我会尽快回答。