jboss下是可以对数据源密码进行加密的,相关的文章很多,我这里要讲的是如何破解
以安装目录为D:\jboss-4.0.4.GA为例,解密的原理很简单,先找到加密所使用的方法:
java -cp "xxx.jar ……" org.jboss.resource.security.SecureIdentityLoginModule 123456
好了,找到SecureIdentityLoginModule所在的包jboss-jca.jar,找到SecureIdentityLoginModule.class,稍稍反编译一下就全明白了,加密使用的是: private static String encode(String secret),自然解密的到是:private static char[] decode(String secret)
让我们稍作一点工作,建立文件:D:\jboss-4.0.4.GA\server\default\lib\A.java,内容:
package org.jboss.resource.security;
class A{
public static void main(String args[])
throws Exception
{
SecureIdentityLoginModule seq = new SecureIdentityLoginModule();
char[] decode = seq.decode(args[0]);
System.out.println("Haha, DEcoded password: " + new String(decode));
}
}
这个类是无法直接编译的,因为SecureIdentityLoginModule,哈哈,简单,再建一个文件SecureIdentityLoginModule.java:
package org.jboss.resource.security;
class SecureIdentityLoginModule{
static String encode(String s){
return s;
}
static char[] decode(String s){
return new char[100];
}
}
这个SecureIdentityLoginModule是可以单独编译的,然后把编译后的SecureIdentityLoginModule.class放到D:\jboss-4.0.4.GA\server\default\lib\org\jboss\resource\security目录下,回到D:\jboss-4.0.4.GA\server\default\lib下就可以直接使用javac编译A.java了!
最后一步,把编译好的A.class添加到jboss-jca.jar包中(作坏事前先备份)。
调用方法:
java -cp "D:\jboss-4.0.4.GA\lib\jboss-jmx.jar;D:\jboss-4.0.4.GA\lib\jboss-common.jar;D:\jboss-4.0.4.GA\server\default\lib\jboss-jca.jar;D:\jboss-4.0.4.GA\server\default\lib\jbosssx.jar;D:\jboss-4.0.4.GA\server\default\lib\jboss-jca.jar" org.jboss.resource.security.A 64c5fd2979a86168
其中64c5fd2979a86168是加密后的字符串,得到的就是原始密码。
以安装目录为D:\jboss-4.0.4.GA为例,解密的原理很简单,先找到加密所使用的方法:
java -cp "xxx.jar ……" org.jboss.resource.security.SecureIdentityLoginModule 123456
好了,找到SecureIdentityLoginModule所在的包jboss-jca.jar,找到SecureIdentityLoginModule.class,稍稍反编译一下就全明白了,加密使用的是: private static String encode(String secret),自然解密的到是:private static char[] decode(String secret)
让我们稍作一点工作,建立文件:D:\jboss-4.0.4.GA\server\default\lib\A.java,内容:
package org.jboss.resource.security;
class A{
public static void main(String args[])
throws Exception
{
SecureIdentityLoginModule seq = new SecureIdentityLoginModule();
char[] decode = seq.decode(args[0]);
System.out.println("Haha, DEcoded password: " + new String(decode));
}
}
这个类是无法直接编译的,因为SecureIdentityLoginModule,哈哈,简单,再建一个文件SecureIdentityLoginModule.java:
package org.jboss.resource.security;
class SecureIdentityLoginModule{
static String encode(String s){
return s;
}
static char[] decode(String s){
return new char[100];
}
}
这个SecureIdentityLoginModule是可以单独编译的,然后把编译后的SecureIdentityLoginModule.class放到D:\jboss-4.0.4.GA\server\default\lib\org\jboss\resource\security目录下,回到D:\jboss-4.0.4.GA\server\default\lib下就可以直接使用javac编译A.java了!
最后一步,把编译好的A.class添加到jboss-jca.jar包中(作坏事前先备份)。
调用方法:
java -cp "D:\jboss-4.0.4.GA\lib\jboss-jmx.jar;D:\jboss-4.0.4.GA\lib\jboss-common.jar;D:\jboss-4.0.4.GA\server\default\lib\jboss-jca.jar;D:\jboss-4.0.4.GA\server\default\lib\jbosssx.jar;D:\jboss-4.0.4.GA\server\default\lib\jboss-jca.jar" org.jboss.resource.security.A 64c5fd2979a86168
其中64c5fd2979a86168是加密后的字符串,得到的就是原始密码。