tk点赞协议
该算法入参是:query, user_agent, body 区分GET/POST请求,如果在log里发现了'd41d8cd98f00b204e9800998ecf8427e' 这个就是空值的md5值,也就表示GET请求。首先分别进行算法签名2次得到字节数组,取其最后两位元素,后续持续拼接为一个21位的字节数组,最后魔改码表('Dkdpgh4ZKsQB80/Mfvw36XI1R25-WUAlEi7
X-Bogus
这个签名是老演员了,一开始就校验上了。该算法入参是:query, user_agent, body 区分GET/POST请求,如果在log里发现了'd41d8cd98f00b204e9800998ecf8427e' 这个就是空值的md5值,也就表示GET请求。首先分别进行算法签名2次得到字节数组,取其最后两位元素,后续持续拼接为一个21位的字节数组,最后魔改码表('Dkdpgh4ZKsQB80/Mfvw36XI1R25-WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=')生成。其中,参与运算的还有canvas值,时间戳,密钥数组,rc4流加密等。
X-Gnarly
长度:268/ 300/ 324(最新)增加数据列表长度,即可增加X_Gnarly长度 暂时都可以使用。
X_Gnarly MxESwhNLFU-YEm8UJQE9MFkqSv1tYBzQSumsUgvx2gkBDuyDoOtYgjfevQLRBYiqFDVA4JlRGUmgNb-taI6XlLBcPfok3XhdLeKr98A2N2gyRYbXaKtgZQ2QK4UHWPVnM312BChLi4o99N-aE5PEt4EIYVkiGCK2-GbOjzw0rWemJyuKFUev2e-hvqXXBp3jIzozFjMuiAkesNXWDB31mOPlIlcv1EsmT6qcZuvJVf/zKrdZXTbBddkZ3TxKhHs5JxwZrfIRjNdIKhy62e0Zom/UOrtMk-O4wfmgb-SS61-zj0e9pTwYeN7M4bXkNe1ECrA= '5.1.3', '2.0.0.447'
通过解密算法解出明文参数:
// 列表长度 15
[
0, // 固定
65, // 变化
14, // 变化
"acb9ceabab0b8cfcf0f28be40ffeeae4", // query md5值
"d41d8cd98f00b204e9800998ecf8427e", // body md5值 GET默认body = ''
"f18b5213b6de2490ec9be218b0f025b0", // user-agent md5值
1763107246, // 时间戳 动态因素
2363850128, // canvas值
1696407985, // 随机数 时间相关 测试发现 可以固定范围
"5.1.3", // 算法版本 最开始是5.0
"2.0.0.447", // webmssdk/2.0.0.447 js文件版本
1, // 固定
// 以下是新加的元素 没啥影响
2, // 变化
1, // 变化
4312084 // 变化
]
可以看到其和X-Bogus,A-Bogus算法都没啥区别,相同的算法思路设计。
接着继续聊X-Gnarly算法,数组准备好了后会对整体数组进行xor计算,xor初始值默认值是0,后续根据数据类型进行不同处理。添加xor元素到数组里,接着对数组进行排序打乱,这里也有对应算法。最后根据不同的数据类型添加数组里不同元素的索引和值信息,多个分支不同处理流程。然后就是一个魔改的流加密算法了,需要清楚密钥是什么。该X-Gnarly对应的密钥如下,即可唯一确定目标参数。
[
"0.16676794365048409",
"0.09791544009931386",
"0.7086712564341724",
"0.06493830471299589",
"0.6804928914643824",
"0.671537404647097",
"0.3154390335548669",
"0.796996020944789",
"0.987317256629467",
"0.5382072266656905",
"0.21200472488999367",
"0.0768559209536761"
]
最后这里的处理和日志上报参数strData相得益彰,最终魔改码表('u09tbS3UvgDEe6r-ZVMXzLpsAohTn7mdINQlW412GqBjfYiyk8JORCF5/xKHwacP=')。
更多推荐


所有评论(0)