揰掵佲 发表于 2017-7-16 11:40:50

合富APP加密算法分析

合富app登录的数据包是加密的,通过fiddler抓包如下:
纯文本查看 复制代码
?

1
GET https://www.hfmoney.com/app/services?OPT=1&_t=2017-03-15+21%3A55%3A24&body=&channelId=&deviceType=1&name=15228092368&pwd=5351A9FF600213484726DD26015C2CA0&userId=&_s=dada859999a0aa578db4b7e504889319 HTTP/1.1







5351A9FF600213484726DD26015C2CA0的原始参数是s11223344

发现pwd和_s是加密的,我们先来分析_s的加密


把合富APP拖入Androidkiller反编译,打开java源码然后搜索_s
搜索的结果有两处,类FileProvider和类GeneralRestGateway
打开类FileProvider看了下,发现不是
打开类GeneralRestGateway粗略的浏览边代码,里面有_s的赋值处,很快就定位到加密处,代码如下:
https://attach.52pojie.cn/forum/201703/15/223450ogbonxoxjourzznn.png
在这处for循环里,通过一些条件判断,最后调用Encrypt.MD5()来对_s进行加密,
根据以前的经验来看,_s是对参数校验,继续跟进Encrypt.MD5()
https://attach.52pojie.cn/forum/201703/15/224049lsxjwfawxjmja66s.png
发现就是一个MD5加密,_s的静态分析到这就完了,我们利用ddms调试输出下,
在smali的com.shove.security.Encrypt的MD5方法下添加如下代码:
https://attach.52pojie.cn/forum/201703/15/224627xip323wza2bnqspb.png
保存编译,拖入模拟器,登录账号,在ddms输出MD5加密前的参数
https://attach.52pojie.cn/forum/201703/15/224940jdtkktn8btung8vp.png
对输出的值进行MD5加密,发现跟抓包的完全符合,至此,_s的参数MD5校验加密分析完毕。

接下来分析pwd密码的加密
打开java源码然后搜索pwd,发现有一个LoginActivity类
我们直接跟进去
https://attach.52pojie.cn/forum/201703/15/225432zr06oiiq67t7joxw.png
localMap.put("pwd", DataHandler.encrypt3DES(str));这句代码的意思是把DataHandler.encrypt3DES(str)的值赋值给pwd


粗略估计DataHandler.encrypt3DES类方法就是对pwd的原始参数进行DES加密,继续跟进DataHandler.encrypt3DES类方法
https://attach.52pojie.cn/forum/201703/15/225832oeh941ekozgz19vv.png
发现又调用了Encrypt.encrypt3DES()方法,且传递了两个参数,粗略估计是传递密码跟key进行DES加密
搜索KEY_DATA发现在这个类中有赋值,但java源码查看失败,我们直接看smali代码
https://attach.52pojie.cn/forum/201703/15/230216opdk8qmk8qdahhrd.png
发现KEY_DATA的值为GDgLwwdK270Qj1w4
继续跟进Encrypt.encrypt3DES()方法
https://attach.52pojie.cn/forum/201703/15/230507vknykjnjgfkfg7kn.png
到这发现加密是通过调用Des.encrypt()方法,然后通过Byte.byte2hex()字节集到16进制的转换返回
分析到这静态分析基本完了,我们利用ddms调试输出下
在smali的com.shove.security.Encrypt的encrypt3DES方法下添加如下代码:
https://attach.52pojie.cn/forum/201703/15/231618v1nbbfcnvgmmc1ff.png
保存编译,拖入模拟器,登录账号,在ddms输出值如下:
https://attach.52pojie.cn/forum/201703/15/231759tbp66cimiecpmb7p.png

然后我们直接把它带入des算法中计算,计算如下:
https://attach.52pojie.cn/forum/201703/15/232146ezjeb7yjfbwzr08d.png
发现跟抓包的结果一样,所以分析的没问题。

帖子中用到的des算法:
链接:http://pan.baidu.com/s/1dEEzhmD 密码:1m5h
页: [1]
查看完整版本: 合富APP加密算法分析