h5st纯算协议部分实现

声明:此文只是记录表,方便以后用的时候查阅,如有违背相关规定,联系本人删除

重点在中后面,不过读懂前面,自己也能弄

几个有必要追踪的断点以及打断点的方式

1.入口 搜索h5st定位到图片位置,在箭头指示处打上断点

在这里插入图片描述

2.直接进入一步一步跟进直到进入一个控制流,找到里面的call全部打上断点,并在switch处打上日志进行输出,然后运行一遍基本就找出规律了,剩下的就是反复跟进控制流找规律,我入门的时候找了三天,以下是一些简便方法

1.还有个方式把里面的所有switch打上断点输出以下,运行看输出结果,在出现可以的地方跟进去就基本找到那个唯一位置了
2.另外说一个目前能用到的简单方法,代码文件搜索"r.getMonth()或者"getMinutes()或者return /(y+)/i.test(n),搜到后在这个函数里面打上断点,然后运行一下,往前跟一个栈,就到了一个生成加密值得一个控制流里面了,这里面得call都打上断点,慢慢运行就能找到一切开始的地方,其实就是控制流里call里面参数最多的那个call,在这里你就能看到一些加密的规则
3.还有一个方法找到控制流里的return xx.pop() 这句全部打上断点或者日志运行一下也能找到

3.找到控制流后switch打印输出,call打上断点,慢慢调试基本在这里就能找出大部分规律和参数的生成

怎么打日志,一个最简单的示例 console.log(‘y控制流当前变量的值:’,k[w],y)
在日志断点里输入console.log(‘y控制流当前变量的值:’,k[w],y)

这个断点每次运行都看一下第一个参数是什么函数,该跟进的跟进,慢慢扣就好了

关于怎么获取后台返回过来的算法

1.把整个文件复制下来

2.查找CryptoJS 找到CryptoJS = xx(),类似这种,说明加密函数从这里生成

3.找到上面位置后就看当前位置是否为自执行方法,是的话就整个自执行方法扣下来,然后运行,缺什么就补什么

4.当上面完成后,运行打印一下,发现扣的不完整,这种情况一般是在后面又添加了属性,那就继续往后面扣

往后面扣那就要找准位置,不是什么都需要,怎么找看下面
1.扣第一个自执行函数时,去跟一下传入的参数,最后是怎么调用的,你会发现他把加密方式都赋值给你传入的参数的某个属性了,
2.那同样的后面要增加的加密是不是也要赋值给他,那你就可以直接搜索传入的这个参数,凡是有这个参数的自执行函数大概率都是需要扣下来的,然后缺什么补什么
3.最后输出一下你扣的加密对象,输出结果大约200行,包括了很多加密方式,那就应该差不多了

第一部分

时间戳格式化rr

注意:这个时间戳格式化与第七部分的rt用的是同一个时间戳,并且这个时间戳的生成要在第五部分生成完成后进行生成

//第七部分,生成于第五部分完成后
 rt = Date.now()
 rr = nx(rt)

第二部分

fp 暂时随机的可以先行写死

第三部分

appid 根据不同接口具有不同名字 在进行body加密的位置处可以看到这个接口ID

注意:这个位置在调用生成整个加密的函数的那个参数里面就包含有,找到加密函数位置就找到整个ID了

第四部分

tk可以部分写死

注意:就是一个token值,浏览器存储里面可以找到可以暂时用着,具体正确获取方式又涉及其他了

第五部分

1.格式化时间戳取字符串并在时间戳后面+47

function nv(ti) {
   
    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] :Date.now()
        , t = "yyyyMMddhhmmssSSS"
        , r = new Date(e)
        , n = t
        , a = {
   
        "M+": r.getMonth() + 1,
        "d+": r.getDate(),
        "D+": r.getDate(),
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值