您的位置:首页 > 其它

求助: 一个软件注册片段?

2013-07-18 22:18 218 查看
 

public static boolean checkSerial(String paramString1, String paramString2)
{
int i = 0;
try
{
i = Integer.valueOf(paramString2).intValue();
}
catch (NumberFormatException localNumberFormatException)
{
return false;
}
if (paramString2.length() != 12)
return false;
paramString1 = paramString1 + "abcdefghijklmnopqrstuvwxyz";
int j = 0;
for (int k = 0; k < 24; ++k)
{
j += paramString1.charAt(k);
j <<= 2;
}
j = Math.abs(j);
return (j == i);

}

 

paramString1 :用户名   paramString2: 注册码

以上是一个小程序注册 检测有效性的片段,由上可以破解出 反推出一组 用户名 注册码吗?   万分感谢!

 

 

 

答案如下:

 

public class crack {

/**
* @param args
*/
public static void main(String[] args) {
String username ="yourname";
String password = getPassword(username);

if(checkSerial(username,password)) System.out .println("ok");
System.out .println("username:"+username+"\n"+"password:"+password);

}
public static String getPassword(String userName)
{
userName = userName + "abcdefghijklmnopqrstuvwxyz";
int j = 0;
for (int k = 0; k < 24; ++k)
{
j += userName.charAt(k);
j <<= 2;
}
j = Math.abs(j);
String passWord="";
String jStr = ""+j;
for(int i=0;i<12-jStr.length();i++){
passWord+="0";
}

return passWord+jStr;

}

public static boolean checkSerial(String paramString1, String paramString2)
{
int i = 0;
try
{
i = Integer.valueOf(paramString2).intValue();
}
catch (NumberFormatException localNumberFormatException)
{
return false;
}
if (paramString2.length() != 12)
return false;
paramString1 = paramString1 + "abcdefghijklmnopqrstuvwxyz";
int j = 0;
for (int k = 0; k < 24; ++k)
{
j += paramString1.charAt(k);
j <<= 2;
}
j = Math.abs(j);
return (j == i);
}
}


 

 在此特别感谢 “剑走偏锋2.1” !


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: