|

本帖最后由 小范q 于 2018-8-24 22:26 编辑
PS:APP 提供来源
app 下载 地址:
http://sj.qq.com/myapp/detail.htm?apkName=com.xtuone.android.syllabus
app 提供来源:
https://bbs.125.la/forum.php?mod=viewthread&tid=14221962&highlight=APP
第一步 抓登陆抓包:
- POST /V2/StudentSkip/loginCheckV4.action HTTP/1.1
- Content-Type: application/x-www-form-urlencoded; charset=UTF-8
- Content-Length: 231
- Host: 120.55.151.61
- Accept-Encoding: gzip
- User-Agent: okhttp/3.9.0
- Connection: keep-alive
- platform=1&password=A030B55C98B7B99C05A93817A0EC2DF1&phoneVersion=22&phoneBrand=oppo&account=77DA29A6AE3DA5102B2D3E83D7F34C1B&versionNumber=9.4.1&phoneModel=oppo+a59m&updateInfo=false&deviceCode=351613308550271&channel=AppTreasure&
复制代码
第二步 分析加密主要参数:
password=A030B55C98B7B99C05A93817A0EC2DF1
account=77DA29A6AE3DA5102B2D3E83D7F34C1B
第三步 反编译逆向找到其主要算法
- --------------------------------------------------------------------------------------------------------------------------
- public static RequestResultBO ok(String arg5, String arg6, String arg7) throws CPemissionException, CServerException, CHTTPTimeOut, CNoNetWorkException {
- RequestResultBO v0;
- String v1 = bbd.on(bbd.on(), bax.final);
- Map v2 = bbd.ok();
- try {
- v2.put("account", bui.no(arg5));
- }
- catch(UnsupportedEncodingException v3) {
- v2.put("account", arg5);
- }
- if(!TextUtils.isEmpty(((CharSequence)arg6))) {
- try {
- v2.put("password", bui.no(arg6));
- }
- catch(UnsupportedEncodingException v3) {
- v2.put("password", arg6);
- }
- }
- if(!TextUtils.isEmpty(((CharSequence)arg7))) {
- v2.put("vCode", arg7);
- }
- v2.put("deviceCode", bte.if());
- try {
- v0 = bbd.ok(v1, v2);
- }
- catch(CPemissionException v1_1) {
- }
- catch(CTreeholeException v1_2) {
- }
- return v0;
- }
- ------------------------------------------------------------------------------------------------------------------
- public static String no(String arg2) throws UnsupportedEncodingException {
- return cba.ok(URLEncoder.encode(arg2, "utf-8"), bui.no());
- }
- ------------------------------------------------------------------------------------------------------------------
- public static String ok(String arg4, String arg5) {
- String v0;
- SecretKeySpec v2 = new SecretKeySpec(DigestUtils.md5(arg5), "AES");
- try {
- Cipher v1_1 = Cipher.getInstance("AES");
- v1_1.init(1, ((Key)v2));
- v0 = cbb.ok(v1_1.doFinal(arg4.getBytes("utf-8")));
- }
- catch(Exception v1) {
- bzq.ok(((Throwable)v1));
- }
- return v0;
- }
复制代码
第四步 算法总结
password= AES/ECB/PACK7("Pwd",key)
ps : pwd = 输入的明文密码
key = Hex.parse("5EEAE43521AF57CC0F5380EDBA0CA25D");
----------------------------------------------------------------------------------------------
account 加密算法跟password相同
第五步 算法移植
附件下载(js移植) |
|
评分
-
查看全部评分
|