开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5719|回复: 21
收起左侧

[技术专题] 亲亲小贷App sign 算法解密

[复制链接]
结帖率:100% (1/1)
发表于 2018-8-28 21:06:02 | 显示全部楼层 |阅读模式   上海市上海市
PS:APP 提供来源
app 下载 地址:
http://android.myapp.com/myapp/detail.htm?apkName=com.android.qqxd.loan

app 提供来源:
https://bbs.125.la/forum.php?mod=viewthread&tid=14222718&highlight=APP

第一步 抓登陆抓包:

  1. POST /apiv4.axd HTTP/1.1
  2. If-Modified-Since: Tue, 28 Aug 2018 11:58:50 GMT+00:00
  3. Content-Type: application/x-www-form-urlencoded; charset=UTF-8
  4. User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; oppo a59m Build/LMY48Z)
  5. Host: api.qinqinxiaodai.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip
  8. Content-Length: 229

  9. api=loginv2&imei=351613308550271&imsi=460004442079822&lat=31.898255&long=120.528946&mb=oppo+a59m&mv=5.1.1&pc=tencent&pwd=e10adc3949ba59abbe56e057f20f883e&sign=e38185583d8e8aca483ee3a8a85549ea&t=1535457563&uid=13812345678&v=3.0.5&
复制代码


第二步 分析加密主要参数:

apiloginv2
imei351613308550271
imsi460004442079822
lat31.898255
long120.528946
mboppo a59m
mv5.1.1
pctencent
pwde10adc3949ba59abbe56e057f20f883e
signe38185583d8e8aca483ee3a8a85549ea
t1535457563
uid13812345678
v3.0.5



第三步 反编译逆向找到其主要算法

   sign算法分析
  1.     public Map a(Map arg3, String arg4) {
  2.         this.b(arg3, arg4);
  3.         arg3.put("sign", this.a(arg3));
  4.         return arg3;
  5.     }
  6. ------------------------------------------------------------------------------------------------------------------
  7.     public String a(Map arg8) {
  8.         String v0_2;
  9.         if(arg8 != null && arg8.size() > 0) {
  10.             Set v3 = arg8.entrySet();
  11.             Iterator v4 = v3.iterator();
  12.             StringBuffer v5 = new StringBuffer();
  13.             v5.append("QiuGaoQiShuang!Q@Q#X$D%");
  14.             int v2 = 0;
  15.             while(v2 < v3.size()) {
  16.                 if(!v4.hasNext()) {
  17.                     break;
  18.                 }

  19.                 Object v0 = v4.next();
  20.                 if(v0 != null) {
  21.                     try {
  22.                         String v1 = this.b(((Map$Entry)v0).getValue());
  23.                         arg8.put(((Map$Entry)v0).getKey(), v1);
  24.                         v5.append(((Map$Entry)v0).getKey());
  25.                         v5.append("=");
  26.                         v5.append(v1);
  27.                     }
  28.                     catch(Exception v0_1) {
  29.                     }

  30.                     goto label_26;
  31.                 }
  32.                 else {
  33.                 label_26:
  34.                     ++v2;
  35.                     continue;
  36.                 }
  37.             }

  38.             z.c("签名拼接字符串:" + v5.toString());
  39.             if(d.b != null) {
  40.                 v0_2 = ab.b(v5.toString());
  41.                 z.c("签名:" + v0_2);
  42.                 return v0_2;
  43.             }

  44.             v0_2 = "";
  45.         }
  46.         else {
  47.             v0_2 = "";
  48.         }

  49.         return v0_2;
  50.     }
  51. ------------------------------------------------------------------------------------------------------------------
  52. public static String b(String arg8) {
  53.         UnsupportedEncodingException v1_3;
  54.         int v1_2;
  55.         String v0_2;
  56.         byte[] v2;
  57.         MessageDigest v0;
  58.         try {
  59.             v0 = MessageDigest.getInstance("MD5");
  60.         }
  61.         catch(NoSuchAlgorithmException v1) {
  62.             v1.printStackTrace();
  63.         }

  64.         String v1_1 = "";
  65.         try {
  66.             v0.update(arg8.getBytes("utf-8"));
  67.             v2 = v0.digest();
  68.             int v3 = v2.length;
  69.             v0_2 = v1_1;
  70.             v1_2 = 0;
  71.         }
  72.         catch(UnsupportedEncodingException v0_1) {
  73.             UnsupportedEncodingException v7 = v0_1;
  74.             v0_2 = ((String)v1_2);
  75.             v1_3 = v7;
  76.             goto label_42;
  77.         }

  78.         while(true) {
  79.             if(v1_2 >= v3) {
  80.                 return v0_2;
  81.             }

  82.             try {
  83.                 String v4 = Integer.toHexString(v2[v1_2] & 255);
  84.                 v0_2 = v4.length() == 1 ? v0_2 + "0" + v4 : v0_2 + v4;
  85.             }
  86.             catch(UnsupportedEncodingException v1_3) {
  87.                 break;
  88.             }

  89.             ++v1_2;
  90.         }

  91.     label_42:
  92.         v1_3.printStackTrace();
  93.         return v0_2;
  94.     }
  95. ------------------------------------------------------------------------------------------------------------------
复制代码


第四步 算法总结

sign = MD5(v1);


ps:
v1 = "QiuGaoQiShuang!Q@Q#X$D%api=loginv2imei=356809440878555imsi=460029523691329lat=31.404185long=121.392741mb=HM NOTE 1Smv=4.4.4pc=tencentpwd=e10adc3949ba59abbe56e057f20f883et=1535459764uid=13812345678v=3.0.5"

① 其中标红为常量;
② pwd = MD5(passwd);



评分

参与人数 1精币 +1 收起 理由
zy723 + 1 新技能已get√

查看全部评分


结帖率:32% (6/19)

签到天数: 1 天

发表于 2024-1-7 09:43:58 | 显示全部楼层   贵州省黔东南苗族侗族自治州
先拿下 研究研究  看着不错。
回复 支持 反对

使用道具 举报

发表于 2019-5-27 06:46:23 | 显示全部楼层   湖北省武汉市
感谢分享,很给力
回复 支持 反对

使用道具 举报

发表于 2018-11-14 14:27:25 | 显示全部楼层   北京市北京市
谢谢分享 学习了
回复 支持 反对

使用道具 举报

结帖率:63% (33/52)
发表于 2018-9-29 17:09:22 | 显示全部楼层   广东省广州市
不错,详细点就好了,例如,怎么捉包,还有怎么个反编译!不然就成水贴
回复 支持 反对

使用道具 举报

结帖率:93% (92/99)

签到天数: 18 天

发表于 2018-9-19 21:47:02 | 显示全部楼层   广东省东莞市
教程有没有            
回复 支持 反对

使用道具 举报

发表于 2018-9-11 17:05:52 | 显示全部楼层   黑龙江省牡丹江市
你这个太简单了, 分析方法呢!!!!!!!!!!!
回复 支持 反对

使用道具 举报

结帖率:82% (51/62)

签到天数: 4 天

发表于 2018-9-9 09:45:14 | 显示全部楼层   吉林省白城市
学习了 不错
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2018-9-9 03:18:41 | 显示全部楼层   江苏省连云港市
感谢分享 好东西
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2018-9-8 10:34:05 | 显示全部楼层   湖南省湘潭市
楼主棒棒哒
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表