开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 881|回复: 9
收起左侧

[求助] JS逆向 多层json转url参数并排序 已知sign拼接 麻烦大佬们帮忙

[复制链接]
结帖率:95% (18/19)
发表于 2022-9-15 16:26:48 | 显示全部楼层 |阅读模式   浙江省丽水市
已知拼接过程函数是
paramsStrSort = function(n) {
    var t = "asdfjaklsdfjjkhadsjkh178926389klasjdf",
        e = "67zhifubaoasdfagu1oz1hi1qia1gsdfjkadlloveehj89234hhjklwwu1lin1aasdfjkljasdfsdf",
        a = n + "&appKey=" + t,
        i = a.split("&").sort().join("&");
    return i += "&key=" + e
};


后取md5 就是对应的sign

例子如下
json如果没有多层,则直接获取json内不为空的参数即可
比如
{"businessType":"homePage","sourceId":"","userId":1000736392,"sourceCode":"","timestamp":1663226206077,"sign":"ee52353070915fc34b70879d9a0fee1a"}

只需要将其中为空的json删除 取 businessType=homePage&userId=1000736392&timestamp=1663226206077 传入paramsStrSort()后 这个函数自动将请求参数 从小到大排序后 md5
就是对应的sign
现在问题来了

如果是
{
    "usePointPay": 1,
    "uid": 1000736392,
    "pointsMallPackageParamVos": [{
        "deliveryId": 0,
        "producetNum": 1,
        "scorePayment": 0,
        "itemList": "{\"itemList\":[{\"skuId\":141,\"num\":1}]}"
    }],
    "timestamp": 1663221012970,
    "sign": "fb922b285ea4e6c32484540faf3df0e9"
}


这种多层json,不知道如何取值排序。折腾了挺久。不知道如何是好。。。还望大佬解惑。






补充内容 (2022-9-15 16:44):
传入paramsStrSort()后返回的文本需要手动md5一下

补充内容 (2022-9-15 18:12):
已自行解决。。。
只需要将json可以直接取到的值并且不为空的拼接即可。。
usePointPay=1&uid=1000736392&timestamp=1663221012970
传进paramsStrSort后返回的值md5即可

点评

多层json和值为空的直接忽略   浙江省丽水市  发表于 2022-9-15 18:13
结帖率:95% (18/19)

签到天数: 7 天

 楼主| 发表于 2022-9-15 16:53:06 | 显示全部楼层   浙江省丽水市
{"usePointPay":1,"uid":1000736392,"pointsMallPackageParamVos":[{"deliveryId":0,"producetNum":1,"scorePayment":75,"itemList":"{\"itemList\":[{\"skuId\":141,\"num\":1}]}"}],"timestamp":1663231928967,"sign":"75d64ba6652b0a781f816ae50bc2e9a6"}

再上传一个。。。
回复 支持 反对

使用道具 举报

发表于 2022-9-15 17:12:45 | 显示全部楼层   河北省石家庄市
你这玩意看着眼疼。
排序字母是从小到大或者 从大到小排序。
:只需要排序冒号前面的,不用考虑冒号后面的内容。用&链接起来 加上固定字符串。然后取md5就行。
比如 A:1    B:2   C:{3}      
A=1&B=2&C={3}+固定字符串 然后取MD5就行。

你这个  "itemList": "{\"itemList\":[{\"skuId\":141,\"num\":1}]}"
应该需要把“\” 替换为空,或者还有其他转义符的话也需要替换。

具体的还的看抓包数据。直接下断点。调试下结果比猜的靠谱。


点评

大佬,js扣出来了。现在回复需要审核   浙江省丽水市  发表于 2022-9-15 17:27
小程序。。只逆向出来算法。。 目前已经实现到单个json如何取值。 那一句不需要排序可以不需要考虑,要考虑的就是如何取出来那句itemlist里面的   浙江省丽水市  发表于 2022-9-15 17:15

评分

参与人数 1好评 +1 精币 +2 收起 理由
泅渡 + 1 + 2 感谢关注,已自行解决

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:100% (5/5)

签到天数: 19 天

发表于 2022-9-15 17:19:07 | 显示全部楼层   河南省平顶山市
把原js 发出来

点评

发了,现在回复需要审核,大佬您看下。   浙江省丽水市  发表于 2022-9-15 17:24

评分

参与人数 1好评 +1 精币 +2 收起 理由
泅渡 + 1 + 2 感谢关注,已自行解决

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:95% (18/19)

签到天数: 7 天

 楼主| 发表于 2022-9-15 17:22:09 | 显示全部楼层   浙江省丽水市

            var getSign = function(n) {
                    if ("string" == typeof n) return paramsStrSort(n);
                    if ("object" == typeof n) {
                        var t = [];
                        for (var e in n) "title" != e && "text" != e && "articleComment" != e && (isEmpty(n[e]) || isEmojiCharacter(n[e]) || "object" != typeof n[e] && t.push(e + "=" + n[e]));
                        return paramsStrSort(t.join("&"))
                    }
                },
                paramsStrSort = function(n) {
                    var t = "asdfjaklsdfjjkhadsjkh178926389klasjdf",
                        e = "67zhifubaoasdfagu1oz1hi1qia1gsdfjkadlloveehj89234hhjklwwu1lin1aasdfjkljasdfsdf",
                        a = n + "&appKey=" + t,
                        i = a.split("&")
                        .sort()
                        .join("&");
                    return i += "&key=" + e, (0, _md.md5)(i)
                };


这是扣出来的getsign代码


回复 支持 反对

使用道具 举报

结帖率:95% (18/19)

签到天数: 7 天

 楼主| 发表于 2022-9-15 17:24:08 | 显示全部楼层   浙江省丽水市

            var getSign = function(n) {
                    if ("string" == typeof n) return paramsStrSort(n);
                    if ("object" == typeof n) {
                        var t = [];
                        for (var e in n) "title" != e && "text" != e && "articleComment" != e && (isEmpty(n[e]) || isEmojiCharacter(n[e]) || "object" != typeof n[e] && t.push(e + "=" + n[e]));
                        return paramsStrSort(t.join("&"))
                    }
                },
                paramsStrSort = function(n) {
                    var t = "asdfjaklsdfjjkhadsjkh178926389klasjdf",
                        e = "67zhifubaoasdfagu1oz1hi1qia1gsdfjkadlloveehj89234hhjklwwu1lin1aasdfjkljasdfsdf",
                        a = n + "&appKey=" + t,
                        i = a.split("&")
                        .sort()
                        .join("&");
                    return i += "&key=" + e, (0, _md.md5)(i)
                };
            exports.paramsStrSort = paramsStrSort;
            var handerParams = function(n) {
                if ("string" == typeof n) {
                    var t = "";
                    n.split("&")
                        .forEach((function(n, e) {
                            isEmpty(n) || isEmojiCharacter(n) || ("" === t ? t = n : t += "&" + n)
                        })), t = t + "&timestamp=" + (new Date)
                        .getTime();
                    var e = getSign(t),
                        a = t + "&sign=" + e;
                    return a
                }
                if ("object" == typeof n) {
                    n.timestamp = (new Date)
                        .getTime();
                    e = getSign(n);
                    return n.sign = e, n
                }
            };


回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

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

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

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