推广 热搜: 行业  设备    系统  参数  经纪    教师  机械  中国 

2023年最新电商某东app端sign签名算法与cipher加解密逆向分析(2023-09-26)

   日期:2024-11-10     作者:n19v1    caijiyuan   评论:0    移动:http://changmeillh.xhstdz.com/mobile/news/1210.html
核心提示:前言:     本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,若有侵权请联系

前言     本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,若有侵权请联系我删除!技术交流合作请私信

2023年最新电商某东app端sign签名算法与cipher加解密逆向分析(2023-09-26)

用到工具如下

    之所以要选择android 6 手机,原理如下:      Android 系统将 CA 证书又分为两种:用户 CA 证书和系统 CA 证书。     系统 CA 证书存放在 /etc/security/cacerts/ 目录下,名称是 CA 证书 subjectDN 的 Md5 值前四位移位取或,后缀名是 .0,比如 00673b5b.0。考虑到安全原因,系统 CA 证书需要有 Root 权限才能进行添加和删除。     对于非 Root 的 Android 设备,用户只能安装用户 CA 证书。     无论是系统 CA 证书还是用户 CA 证书,都可以在设置 → 系统安全 → 加密与凭据 → 信任的凭据中查看

                                (图1CA证书的位置 用户凭据)     Android 从 7.0 开始,系统不再信任用户 CA 证书(应用 targetSdkVersion >= 24 时生效,如果 targetSdkVersion <24 即使系统是 7.0 + 依然会信任)。也就是说即使安装了用户 CA 证书,在 Android 7.0 + 的机器上,targetSdkVersion>= 24 的应用的 HTTPS 包就抓不到了。

    (1)下载地址

 

                             

(图2 charles下载位置)

    按照默认next即可,然后选择路径。

    (2)Charles破解

    破解地址
 

   

                             (图3 charles 在线破解)

(3)使用Charles

    在Charles的菜单栏上选择”Proxy”->“Proxy Settings”,填入代理端口8888并且勾上”Enable transparent HTTP proxying”,这样就完成了在Charles上的设置     在”Help”->”Local IP Address”中可以查看本机的ip地址,当然也可以在cmd中通过ipconfig查看。

                             

                                             (图3 charles 配置与使用)

                                           (图3 charles 配置与使用2)

    设置保存完成后,charles界面会弹出一个连接请求框,点击“Allow”。

                             (3.charles抓包配置1)

                                                              (3.charles抓包配置2)

                                         (3.charles抓包配置3手机设置代理)

 

   之所以不选用最新版APP,是因为最新版APP不走系统代理(Proxy.NO_PROXY)抓不到包

 

                                                       (图4 jadx下载)

 
 
 

    打开手机app,然后再点击某个商品,可以看到已经抓到明文数据了

                                          (图5.charles抓包成功

参数分析

 
quest参数分析 https://api.m.jd.comapi服务器functionId=wareBusiness表示请求商品信息clientVersion=10.1.4表示app版本号build=90060 固定值

client=android&d_brand=Xiaomi&d_model=MI4LTE&

osVersion=6.0.1&screen=1920*1080

手机基本信息partner=ks006固定值oaid=&eid=  并未参与服务器校验,不用管sdkVersion=23android 版本号eu=&fv=  并未参与服务器校验,不用管uuid=  设备标识,参与签名校验aid=&area=    固定值networkType=wifi   网络类型wifiBssid=  固定值uemps=0-2&harmonyOs=0&scval=7929459固定值

st=1695609462872&

sign=e684ce9273978b1b9fc14382508e25ca&

sv=121

经过多次抓包查看,发现这三个值是变化的。 st,sign,sv为签名字符串,必须,否则采集不到数据。

发送post请求,携带body数据如下

 

body数据为url编码的字符串,解码后如下

 

其中"skuId":"7929459"为商品ID,其它值可以固定。

 
 

把app导入到jadx,我们要追踪st,sign,sv这三个参数的来源,那么我们搜索一下,先搜索sign的位置,然后一步步查找,最终找到

                                        (图6sign签名位置1

sgin签名 计算涉及到了接口的这几个参数 functionId,body,uuid,client,clientVersion 签名函数

 

                                                           (图6sign签名位置2

签名函数的位置,可见签名函数位于jdbitmapkit.so文件中。 关键代码

 

getSignFromJni 这个加密方法 是调用了jdbitmapkit.so里面的代码

 

注意新版京东有检测frida的,需要改个进程名跟端口。

用frida注入如下函数  BitmapkitUtils.getSignFromJni(context, str, str2, str3, str4, str5);

 

                                     (图7.Frida注入验证

如上,我们可以看出,st sign sv都是从so来的。

至此,sign的来源已理清。

直接压缩软件打开app,搜索,找出文件jdbitmapkit.so

.直接上IDA,把文件拖进去 在方法sub_127E4 找到关键词sign= 方法里面也刚好有uuid,body,st等关键词,确认是这个没错了。

    查看ida的代码分析一下算法,并且用java还原,再翻译成python代码。

(图8java测试代码

继续搜索”cipher“字段,找到cipher加解密位置如下

(图9.cipher加解密类

cipher这个直接复制d这个类就包含了加解密。

(图10.sign签名采集到商品详情信息)                              

技术交流 5b6u5L+h77yaYnljNjM1MiAgUVE6Mzk4NDg4NzI=(base64解码

本文地址:http://changmeillh.xhstdz.com/news/1210.html    物流园资讯网 http://changmeillh.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号