14:js逆向加密(sign)-md5加密

 

 发现sign太多换一个参数搜索,我们搜索: service_name

 

 不断的调式,发现sign在t中,t里面一共生成了4个东西,t=B函数,所以进B函数里面去看

发现sign实际上是在B函数内部生成的,进去0函数

 sign是经过0函数传进3给参数生成的

function O(e, t, n) {
    const {include: r, enforceWithKeys: i=[]} = null !== t && void 0 !== t ? t : {};
    let o = Object.keys(e);
    if (n && r) {
        const e = r.concat(["service_name", "service_method", "sign_strict"]);
        o = o.filter((t=>e.includes(t)))
    }
    const a = o.sort().map((t=>{
        const n = e[t];
        return k(n) ? "" : t + (!i.includes(t) && E(n) ? n : t)
    }
    )).join("")
      , s = "e9fefef711becf4c3d7bfef829578b0c";
    return y()(a + s)
}
e={
    "resource_id": 1012,
    "limit": 1,
    "service_name": "marketing.AdStarMarketingService",
    "service_method": "GetBannerList",
    "sign_strict": 1
}
t={
    "include": [
        "resource_id",
        "limit",
        "role",
        "extra_info"
    ]
}
n=true
console.log(O(e,t,n))

 开始孔代码  报错:k is not defined

最后面y is not defined

 发现y实际上是一个md5加密我们可以在js中进行导包处理

完整代码

const md5123 = require('crypto');//md5加密
function O(e, t, n) {
    const {include: r, enforceWithKeys: i=[]} = null !== t && void 0 !== t ? t : {};
    let o = Object.keys(e);
    if (n && r) {
        const e = r.concat(["service_name", "service_method", "sign_strict"]);
        o = o.filter((t=>e.includes(t)))
    }
    const a = o.sort().map((t=>{
        const n = e[t];
        return k(n) ? "" : t + (!i.includes(t) && E(n) ? n : t)
    }
    )).join("")
      , s = "e9fefef711becf4c3d7bfef829578b0c";
   return  (a + s)
}
function k(e) {
        return void 0 === e || null === e
    }
function E(e) {
    return ["string", "number"].includes(typeof e)
}

e={
    "resource_id": 1012,
    "limit": 1,
    "service_name": "marketing.AdStarMarketingService",
    "service_method": "GetBannerList",
    "sign_strict": 1
}
t={
    "include": [
        "resource_id",
        "limit",
        "role",
        "extra_info"
    ]
}
n=true
text=O(e,t,n)
sign=md5123.createHash("md5").update(text).digest('hex')
console.log(sign)
/* md5123.createHash:创建一个哈希(md5)
update(text):把要加密的内容放进去;text:要使用md5加密的内容
digest('hex'):输出他的格式
 */

我们可以校验一下:

 
const md5123 = require('crypto');//md5加密无-js
function O(e, t, n) {
    const {include: r, enforceWithKeys: i=[]} = null !== t && void 0 !== t ? t : {};
    let o = Object.keys(e);
    if (n && r) {
        const e = r.concat(["service_name", "service_method", "sign_strict"]);
        o = o.filter((t=>e.includes(t)))
    }
    const a = o.sort().map((t=>{
        const n = e[t];
        return k(n) ? "" : t + (!i.includes(t) && E(n) ? n : t)
    }
    )).join("")
      , s = "e9fefef711becf4c3d7bfef829578b0c";
   return  (a + s)
}
function k(e) {
        return void 0 === e || null === e
    }
function E(e) {
    return ["string", "number"].includes(typeof e)
}

// e={
//     "resource_id": 1012,
//     "limit": 1,
//     "service_name": "marketing.AdStarMarketingService",
//     "service_method": "GetBannerList",
//     "sign_strict": 1
// }
// t={
//     "include": [
//         "resource_id",
//         "limit",
//         "role",
//         "extra_info"
//     ]
// }
// n=true

e={
    "platform_source": 1,
    "order_by": "score",
    "sort_type": 2,
    "search_scene": 1,
    "display_scene": 1,
    "limit": 20,
    "page": 1,
    "regular_filter": {
        "current_tab": 3,
        "marketing_target": 1,
        "task_category": 1,
        "use_recommend": true
    },
    "service_name": "go_search.AdStarGoSearchService",
    "service_method": "SearchForStarAuthors",
    "sign_strict": 1
}
t={
    "include": [
        "platform_source",
        "search_scene",
        "display_scene",
        "page",
        "limit",
        "sort_type",
        "order_by",
        "key",
        "regular_filter",
        "attribute_filter",
        "author_pack_filter",
        "non_standard_filter",
        "author_list_id",
        "is_download",
        "filter_str",
        "author_list_filter"
    ]
}

n=true
text=O(e,t,n)
sign=md5123.createHash("md5").update(text).digest('hex')
console.log(sign)
/* md5123.createHash:创建一个哈希(md5)
update(text):把要加密的内容放进去;text:要使用md5加密的内容
digest('hex'):输出他的格式
 */

 e:就是请求中的参数

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值