某财联的sign逆向——保姆教程

# 侵删

一、打开网址(以其中的头条新闻为例),下滑并点击加载更多,找到返回数据的接口1000?

二、分析请求参数

id 是模块对应的id,不同板块的id不一样(头条,股票等)

last_time 是时间戳

rn和sv可以写死

sign需要逆向

三、sign逆向

(一)搜索关键字

使用浏览器自带的工具搜索关键字sign,并在可能的位置打上断点

(二)继续加载更多得到断住

点击加载更多,如果断住了,则进行跟栈分析,如果没有断住,那就检查关键字断点,继续打

加密位置应该是

 sign: S(m({}, r))

(三)分析算法

在控制台打印出S(m({}, r))的值,发现与请求参数的位数一致,成功了50%

在控制台打印出r的值

{
    "lastTime": 1712384875,
    "os": "web",
    "sv": "7.7.5",
    "app": "CailianpressWeb"
}

然后再打印出内层m({}, r)的值

{
    "lastTime": 1712384875,
    "os": "web",
    "sv": "7.7.5",
    "app": "CailianpressWeb"
}

发现r和m({}, r)一样,所以可以把函数简化为S(r)

将光标移动到S上,进入该方法

在return的地方打上断点,并打印出p(t, e[t])的值,不难发现这一步就是在构建请求体中除去sign的其他参数。

接下来单步调试(慢,但一定能找到)

到这里我们发现请求体的参数已经准备好了,所以加密应该就在这附近了,多打断点多输出观察。

发现

return t = i.sync(t),
t = u(t)

很可疑,t在未执行 i.synd()前是'app=CailianpressWeb&id=1000&last_time=1712149125&os=web&rn=20&sv=7.7.5'

执行后就是三十二位的密文了!由于是三十二位加密结果,我们首秀考虑是不是标准加密算法,一看,就是标准的MD5算法。

接下来你高高兴兴的以为逆向成功并且结束了,但其实不然一比较就会发现,其实sign的值位数对了,但是值不对,为什么呢?别忘了还有t = u(t)这一步把t重新赋值了,分析一下还是标准的MD5也就是说对字符串连续两次的MD5加密

相关衍生的接口会有类似的加密,注意辨别!

下面是用标准库进行模拟的加密

const CryptoJS = require("crypto-js")
function use_md5(txt){
    return CryptoJS.MD5(txt).toString()
}
data = 'app=CailianpressWeb&category=&hasFirstVipArticle=1&lastTime=1712387250&os=web&rn=20&subscribedColumnIds=&sv=7.7.5'  //假如这是数据
res = use_md5(data)
console.log(res)

如果我们需要在python中使用的话可以选择使用js库调用,这样较为简单的代码也可以直接转为python代码。

欢迎各位看官留下宝贵的建议!感谢!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值