|
首先不用说的就是抓包了,抓了两个不同手机号码,但密码一样的包看下面的数据
http://platformapi.hi-wifi.cn/v1/cli/auth/register_sms?timestamp=1459819585&sign_method=md5&sign=42a319ed9288bebdeadbbe6fa53e1d8a&client_soft_id=22cfab130932482a8d93a8716d4b60e2&client_hard_id=94%3A38%3Ade%3A34%3Ad5%3A0c&phone=15220816072&app_id=android
http://platformapi.hi-wifi.cn/v1/cli/auth/register_sms?timestamp=1459819674&sign_method=md5&sign=0dbe21d1cc26017a896d51c7bd99a09b&client_soft_id=22cfab130932482a8d93a8716d4b60e2&client_hard_id=94%3A38%3Ade%3A34%3Ad5%3A0c&phone=15220816085&app_id=android
对比了下有两个会变的参数,一个是时间 ,一个是sign 当然如果密码不一样就有三个会变的参数了。
接下来就是反编译了。打开源码查关键字 sign到了关键部分
点CommonUtils.MD5进另加密函数部分
百度了下是采用MD5加密的。
密码数据来源好像是根据这个来加密码的 localStringBuilder.append("02000016-0010-0080-8000-10CA006D2CA5");
我们来看下这个加密部分代码
public static String MD5(String paramString)
{
String str = null;
try
{
if (!isBlank(paramString))
{
MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
localMessageDigest.update(paramString.getBytes("UTF-8"));
byte[] arrayOfByte = localMessageDigest.digest();
StringBuilder localStringBuilder = new StringBuilder();
for (int i = 0; ; i++)
{
if (i >= 16)
{
str = localStringBuilder.toString();
break;
}
Object[] arrayOfObject = new Object[1];
arrayOfObject[0] = Byte.valueOf(arrayOfByte);
localStringBuilder.append(String.format("%02x", arrayOfObject));
}
}
}
catch (Exception localException)
{
}
return str;
}
能看懂部分代码,上面的代码是循环16次,每次以16进制取前面两位。代码看不懂了有没有一起分析下的?解密还是不会
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|