今日目标:惠农网数据采集之参数解密

1、确认数据接口:

2、请求参数分析

3、通过多次请求发现,我发现这几个值是变动的:X-B3-TraceidX-Client-NonceX-Client-SignX-Client-Time,其中X-Client-Time为时间戳

4、开始逆向,分析代码

4.1通过调用堆栈,我们发现,经过了这个函数后,这几个参数的值都生成了,于是我们点进去看看他到底做了什么

4.2进来后发现函数返回值有个forEach函数,猜想应该是循环赋值,打断点调试

4.3,果然是循环赋值

4.4继续断点调试,找到其中的X-B3-TraceidX-Client-Nonce的生成位置

4.5代码模拟

4.6 到最后我们发现这里面并没有生成X-Client-Sign的值,于是继续往下看,发现W()函数的回调函数中,包含了我们需要的值,并且具体的加密方法也在里面,那到值与网页核对,一模一样

4.7读了大量的三目运算和各种判断,发现X-Client-Sign的值就是I经过了f.default函数处理后生成的。而F又是通过A经过运算的来的。 A = [L, B, N, D],所以先要组合成A。

4.8. 组建A 的值: A = [L, B, N, D],,

4.8.1L的值,读三木运算,v = P=2的。查看生成的值是32位,猜测可能是MD5摘要算法,参数是nonce,通过测试,确实是MD5摘要算法

4.8.2B的值:w = P=2的。查看生成的值是40位,猜测可能是SHA1加密,参数是timestamp,通过测试,确实是SHA1加密

4.8.3N值得获取,分析发现,是通过X-CLIENT-NONCE**和X-CLIENT-ID产生拼接,然后通过md5加密算法来的!

4.8.4 D值得获取,

4.8.5分析代码后,发现最终的加密函数是h['fromString'],

4.8.6而参数C的值是上面生成,然后处理后再赋值,然后再拿来用的,接下来我们先获取C的值
4.8.7代码模拟C的值:参数对齐后,结果一致,说明逻辑没有问题

4.8.8代码整合,获取sign的值,参数对其后,拿到的值与网页的一致

5、代码整合:成功拿到数据

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值