|
一位朋友给的APP。是要搞注册算法。刚好有点时间。琢磨了以下~好久没水帖了,发一个吧。
需要的工具别找我~论坛有~度娘也有~
APP名称:微指
目标算法:signature
拿人手短~请给点精B和好评以及回复~这是发帖的动力。没人看下次还发个锤子?感谢各位捧场~
发送短信.....开始抓包~
原包数据:
POST http://userapi.weizhi.me/registersms?signature=CE0F10358832C127C02AD9027660D2B3&mobile=15223297153 HTTP/1.1
User-Agent: Android
Connection: Keep-Alive
Content-Type: application/json;charset=utf-8
Host: userapi.weizhi.me
Accept-Encoding: gzip
Content-Length: 0
原包返回:
{"code":1,"msg":"获取注册短信验证码成功","validitytime":"-1992"}
+*****************************************************
目测是MD5算法
开始反编译提取JAR。。查找关键字“signature” 找到了一堆。于是乎根据APK包名+POST的action方法名称最终定位到这儿
原算法: localHttpSignature.putSig(Nativecore.MD5Encrypt(localStringBuilder.toString()));
确实是MD5算法。进入:Nativecore.MD5Encrypt
发现算法是在SO里面。。。然后怎么办呢?
这个时候你得打算三件事。
1.尝试使用传递的数据进行MD5,猜测是否这个SO里面的MD5算法本身就是一个单纯的MD5算法?
2.SO文件内的MD5不但加密了传递的数据还附加了其他的内容进行总的MD5?
3.SO文件内的MD5是混合MD5算法或者是其他算法的结果再次MD5返回?
首先我会尝试第一种。。。
1.动态调试获取传递进入Nativecore.MD5Encrypt的传递数据
发送短信传入的数据为:mobile15223297153
再次捕获的包数据:
POST http://userapi.weizhi.me/registersms?signature=A83446F5AC8701C8CAD8AEB1A24AA4FF&mobile=15223297152 HTTP/1.1
User-Agent: Android
Connection: Keep-Alive
Content-Type: application/json;charset=utf-8
Host: userapi.weizhi.me
Accept-Encoding: gzip
Content-Length: 0
然后使用E的MD5试试看看是否一致~
使用E的MD5
到大写 (取数据摘要 (到字节集 (“mobile15223297153”))) =“363E9C3D3D9AD0F2F19CCDE5DB054F93” 与网页的算法不一致看来是SO里改过的~
这时候用到IDA。加载SO。这个SO的名字是 wz-jni.so 从SO里寻找算法。。
搜索 字符串的方法名称 MD5Encrypt
IDA出现结果。。
定位~找到了算法。。
可以看出。是在字符串的首部加入了另外一段字符串“ 5w1d8abf75al954t608e48r3 ” 然后MD5
现在再来尝试一下~ md5(“5w1d8abf75al954t608e48r3”+“mobile15223297153”)
结果是“A83446F5AC8701C8CAD8AEB1A24AA4FF” 与 网页一致。那么这个MD5的算法就到位了。。
剩下的就是找注册的包啦~
注册数据:
POST http://userapi.weizhi.me/registe ... sword=bbs125la&signature=BB37856E996666DC8094BEA832843391&key=35b4a6ff9b07d387b2913bfea3a40f38&interfaceid=100000001&deviceid=864394103844744&mobile=15223297152 HTTP/1.1
User-Agent: Android
Connection: Keep-Alive
Content-Type: application/json;charset=utf-8
Host: userapi.weizhi.me
Accept-Encoding: gzip
Content-Length: 0
断点数据:
但是我发现这个注册还有一个KEY的值?看着也像MD5算法,但是设置在MD5的断点并未断下,这个时候说明这个KEY可能是常量或者另外的MD5算法。
我尝试搜索KEY的值“35b4a6ff9b07d387b2913bfea3a40f38”发现是常量~那就不管了~
开始用E写代码。。。
换个号码发短信:
手机收到:215636
注册账号:
至此已成功啦~
sms_send (“17749930306”)sms_register (“17749930306”, “bbs125la”, “491974”, “864394113844745”)返回 (0 ) |
sms_send_signature | 文本型 | | |
mobile | 文本型 | | | | 返回 (到大写 (取数据摘要 (到字节集 (“5w1d8abf75al954t608e48r3mobile” + mobile )) )) 变量名 | 类 型 | 静态 | 数组 | 备 注 | url | 文本型 | | | restext | 文本型 | | |
url = “http://userapi.weizhi.me/registersms?signature=” + sms_send_signature (mobile ) + “&mobile=” + mobile restext = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (url, 1 )) )调试输出 (restext )|
sms_register_signature | 文本型 | | |
mobile | 文本型 | | | | deviceid | 文本型 | | | | timestamp | 文本型 | | | | password | 文本型 | | | | verifycode | 文本型 | | | | 返回 (到大写 (取数据摘要 (到字节集 (“5w1d8abf75al954t608e48r3device2deviceid” + deviceid + “interfaceid100000001key35b4a6ff9b07d387b2913bfea3a40f38marketnameyingyongbaomobile” + mobile + “mtime” + timestamp + “password” + password + “timestamp” + timestamp + “tokenver2.6.3verifycode” + verifycode )) )) |
sms_register | | | |
mobile | 文本型 | | | | password | 文本型 | | | | verifycode | 文本型 | | | | deviceid | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | url | 文本型 | | | timestamp | 文本型 | | | signature | 文本型 | | |
timestamp = 时间_取现行时间戳 (真)signature = sms_register_signature (mobile, deviceid, timestamp, password, verifycode )url = “http://userapi.weizhi.me/register?timestamp=” + timestamp + “&marketname=yingyongbao&token=&device=2&mtime=” + timestamp + “&verifycode=” + verifycode + “&ver=2.6.3&password=” + password + “&signature=” + signature + “&key=35b4a6ff9b07d387b2913bfea3a40f38&interfaceid=100000001&deviceid=” + deviceid + “&mobile=” + mobile 调试输出 (取现行时间 (), 编码_utf8到gb2312 (到文本 (网页_访问_对象 (url, 1 )) ))
补充:
在APP里面看到了RSA算法。虽然不知道有什么卵用。可能某些关键操作需要,纯属猜测。。。也附上SO里的RSA。怎么用?别问我~论坛到处都有开源调用的方法~
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|