某车辆对比信息X-sign-----------小白讲解10

查看 49|回复 5
作者:Aircraftcomman5   
[color=]本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责
----------------------------------------------------------------------------------------------------
[color=]目标网址:aHR0cHM6Ly9jYXIueWljaGUuY29tL2JpeWFkaWUyL3BlaXpoaS8=
[color=]在之前的很多文章中讲过怎样进入他的代码中有不会的可以看之前文章
## 第一步 进入开发者模式查看数据包

1.1 我们直接去断点,在这里我们需要刷新网页去断点,因为他有许多数据包都经过同一加密地方,所以在这里的我们释放断点,直到使我们目标数据为止
1.2 我们可以使用条件断点,我们可以看到
[color=]`e.url`
就是我们可以作为条件的地方
1.3所以我们的目标网址是
[color=]`param/get_param_details`
,那么条件我们就写成
[color=]`e.url.includes('param/get_param_details')`
1.4 断点位置变,将这段填入条件断点中

1.5 改为条件断再次先刷新,可以看到这次的url就是我们要的,也说明我们已经在目标数据包内可以,愉快的跟栈了

## 第二步 跟栈找到加密位置
2.1 我们向上找,可以看到此时我们在目标数据包,并且
[color=]`X-sign
`已经有了,说明加密位置不在这里,然后我们在往上就是异步,如果我们进入异步,断点就不起作用,所以我们要做的是,将条件断点改在异步里面

2.2 如图所示
[color=]`1
`的堆栈就是
[color=]`send`
他的前两步所展示的很难读懂,所以在这里不会去解释他,有兴趣的可以去查阅相关资料,我们来看
[color=]`2`
,在这里他的作用是用于定位,因为
[color=]`3`
就是我们断点处 他里面的语法是
[color=]`e.url.includes('param/get_param_details')`,

[color=]`2`

[color=]`e.data`

[color=]`e`
里面也有不少东西,这样可以去判断我们的目标数据包经过这里没有,从而去做下一步操作或更换堆栈,`这是我个人理解如果有更好的关于条件断点解释,可以留言给我`

2.3 在
[color=]2.2
我们也没有见
[color=]`x-sign`
的生成并且
[color=]`e`
里面的
[color=]`headers`
已经有了
[color=]`x-sign`
所以我们,接着向上跟栈,直到看不见
[color=]`x-sign`
或者
[color=]`"x-sign":a(或者其他变量)`
这样形式

2.4我们将断点移步到
[color=]`i.apiGetData`
这个堆栈,条件断点还是
[color=]`e.url`
,我们来查看
[color=]`e`
里面的东西,我们看到
[color=]`x-sign`
没有了,我们就可以猜测是不是在
[color=]`clientAxios.axiosHttp()`
方法里面生成的
[color=]`e,n`
是要传入的参数,但这样看范围太大了我们单步调试进入看一下,里面有没有关于
[color=]`x-sign`
的地方

## 第三步 寻找加密最终位置
3.1我们在
[color=]2.4
看到了
[color=]`headers`
里面已经没有
[color=]`x-sign`
了,所以我们就可以猜测这个
[color=]`clientAxios.axiosHttp()`
方法,里面存储了加密,进入看一下


3.2 进入之后往下看在红箭头处有点可疑,因为我们在
[color=]2.3
说过,他可能是
[color=]`"x-sign":a...`
等等种形式,那么在这里他有个
[color=]`headers: clientAxios.getHeaders(e, t)`
跟我们说的有点相似都是对象形式,那么有没有一种可能,这个函数返回一个对象其中包括
[color=]`x-sign`
,为了验证我们就进入看一下

3.3 我们滑动到尾部,发现他尾部的流程是在往
[color=]`r`
里面添加,并且我们顺着红箭头去看,他也有
[color=]`x-sign`,
那我们就知道了,
[color=]`3.2`
讲述的内容符合我们的猜测,
[color=]`r["x-sign"] = s(e, t)`
就是我们需要的加密
## 第四步 分析
[color=]`x-sign`
加密函数

4.1 既然要分析我们就要去查看这
[color=]`s`
方法里面的流程,将断点直接放在这里进入,然后我们来解析这个方法流程和所用到的参数

4.1我们看到进入这个函数之后,并且我们单步调试,发现他走的是
[color=]`if`
没有进入
[color=]`else`
那么我们就可以更快的去分解:
- 下面这两段是所用到的参数是函数头部
[color=]`function s(e, t)`

  
[color=]`var i = e.data ?JSON.stringify(e.data) : "{}", o = r(e, t);`
   
[color=]`n = "cid=" + t.cid +   "¶m=" + i + o + t.timestamp;`
   最后将
[color=]`if`
里面的
[color=]`n`
传给尾部
[color=] `var s =   yicheUtils.md5(n);`
   
- 所以我们只需要查清楚函数头部形参
[color=]`e,t`
里面的内容就可以完成上面的代码的改写 其中
[color=]` o = r(e,   t)`
这个方法主要用的是形参t出了时间戳其余是固定的
4.2我们再来分析
[color=]`var s = yicheUtils.md5(n);`
,经过多次日调试他就是标准的
[color=]`md5`
加密所以加密可以调用标准库和自己扣取
## 第五步 加密
5.1这里我用的是
[color=]`SOJSON在线MD5加密的`
,跟浏览器加密的一模一样

5.2我们也可以进行扣取浏览器的使用我们进入
[color=]`yicheUtils.md5(n)`
查看,在这里我经过多次调试,发现虽然是
[color=]`webpack`

是本人技术有限所以就没有
[color=]`webpack扣取`
,我将他改为自执行了,这里的
[color=]`22:[...]`
就是他浏览器所用的
[color=]`MD5加密`


5.3我们看到
[color=]`5.2`
我们自己扣出的没有问题
## 第六步 结论
- 本站技术没有多少,适合新手练习
- 本站主要说的是条件断点的使用,在数据包多的时候,可以用条件断点来作为辅助,快速定位
- 数据爬取如需要其余参数逆向各位就可以使用这种方法来快速寻找

断点, 的是

utf8   

排版是不是有点问题。图片显示有点问题
Aircraftcomman5
OP
  


utf8 发表于 2025-5-23 17:47
排版是不是有点问题。图片显示有点问题

第一次使用md来编辑 ,没有很熟练,已经抓紧改好了,下次就有经验了
crazyxsl   

论坛支持Markdown语法,可以参考:
【帮助文档】Markdown插件使用说明
https://www.52pojie.cn/thread-717627-1-1.html
(出处: 吾爱破解论坛)
看你文章中使用了Markdown语法,但是好像并没有使用Markdown语法块,
解析没有生效
青衫桑   

学习一下
utf8   

这些代码太眉清目秀了
您需要登录后才可以回帖 登录 | 立即注册