免费建造网站系统,牛天下网站做的怎么样,媒体网站推广法,合肥网站seo优化排名公司前言#xff1a;之前打算写的猿人学比赛题系列因为种种原因耽搁了#xff0c;主要还是比完赛之后热情就少了很多#xff0c;看到评论区有人说做了这么久才做出一题#xff0c;这里需要狡辩一下#xff0c;我虽然菜但是还没到那种地步#xff0c;比赛两天时间里我跟队友是…前言之前打算写的猿人学比赛题系列因为种种原因耽搁了主要还是比完赛之后热情就少了很多看到评论区有人说做了这么久才做出一题这里需要狡辩一下我虽然菜但是还没到那种地步比赛两天时间里我跟队友是做了七题的等以后有时间再更猿人学比赛题吧先看tx的
url:aHR0cHM6Ly9zc2wuY2FwdGNoYS5xcS5jb20vdGVtcGxhdGUvcGNfcXFfY2FwdGNoYS5odG1sP2FpZD0yMDI4NjY1NzI0
参考文章
1、https://www.52pojie.cn/thread-1521480-1-1.html
2、https://mp.weixin.qq.com/s/C8gB-D6EUliPXoMgjk0Bag
3、https://mp.weixin.qq.com/s/EmwuL3ToKwDFwCILZTM1AQ
4、https://blog.csdn.net/weixin_43411585/article/details/123810961
建议把这四篇都看一下写得很好要学会站在巨人的肩膀上1、找插桩点10处地方 2、分析日志 a.通过回溯追踪得到大致方向 先拉到日志的最后可以看到这个 这种操作一共有四处就是说有四段明文经过加密之后得到四个密文最后把密文拼接就是最终的collect了明文部分先按下不表来分析明文是怎么通过一系列操作得到密文的 b.多的不说开肝 在上一张截图的地方往上看一下
可以看到那一串看着像乱码的东西是四个数字经过String.fromCharCode得到然后再逐个拼接的并且这里也可以得到这四个数字的由来 那么再往上走看下8591073566是怎么来的 从这里开始多加个插桩点这个插桩点伺机而停不然控制台会崩 这时候就会出现根本找不到这个数字由来的算法再往上倒推开始异常困难了十几万行日志根本遭不住换个思路找到明文然后往下推上文提到的四处明文发现开头一直都是{“cd”:那就全局搜他 很明显{–123,–34,是经过charCodeAt得到结合看到的 0、8、16、24可以得到算法 并且可以在当前日志往下看个十几行发现也有这种操作很明显这是两个四位字符串为一组去做加密的 这两个四位字符串最终得到的两个数字分别是1684218491、844839458接下来就是tx的难点xtea算法了这里建议先找个tea算法了解个大概对一些符号运算混个眼熟然后再看下面的日志
现在开始解剖tea,这里开始先对num2844839458进行了操作 844839458 [4] result is 632529440844839458 [5] result is 26401233632529440 ^ [26401233] result is 606174193606174193 [844839458] result is 1451013651得到左边的算法--((num2 4) ^ (num2 5)) num2)将上面得到的数字与key亦或后再累加num11684218491就得到第一轮的num1了 通过上面两张图的分析可以得到
//这里的sum初始值为0
num1 (((num2 4) ^ (num2 5)) num2) ^ (sum key[sum 3]);接着分析这里出现了一下关键数字delta–2654435769,就是通过这个数字确定xtea算法的 由上面这张图可以得到 sum delta;num2 (((num1 4) ^ (num1 5)) num1) ^ (sum key[(sum 11) 3]);这时候大致的算法已经出来了然后再耐心的往下翻翻日志会发现他一直在循环这个操作直至明文取完还会补位空字符
function teaEncryptBlock(num_lis) {var num1 num_lis[0];var num2 num_lis[1];var sum 0;key [1466852942, 1768312662, 1715955288, 1498245202];var delta 2654435769;for (var i 0; i 32; i) {num1 (((num2 4) ^ (num2 5)) num2) ^ (sum key[sum 3]);sum delta;num2 (((num1 4) ^ (num1 5)) num1) ^ (sum key[(sum 11) 3]);}return [num1, num2];
}到这里可能大家会迷糊我画个图就很好理解了 至此加密部分已经完成了接下来讲讲明文 3、明文顺序 先来看看明文长什么样atr2和atr4都是轨迹其他文章常说的tx38位数组其实就是atr1atr3atr4拼接而成的 通过多次调试会发现这38位数组每次的顺序都不一样这里很遗憾的说下对于作者而言tx滑块没办法做到真正意义上的纯算我这里的处理方式是先让这个js跑起来然后通过正则在js里添加点内容最后返回明文再对明文做点处理最后走算法 1如何让js跑起来可以选择jsdom或者补一些简易的环境先保证能正常出结果 2对js进行改造在下载这个js时通过正则找到这处地方然后加上以下代码这时候list_数组会不断有明文push进来 然后再对list_进行去重、筛选就会得到明文了 3我都补环境了为啥还要搞算法,不多此一举嘛此言差矣注意我上面说的是补一些简易的环境tx有非常多的dom操作补起来会很麻烦所以你在补这个简易环境的时候只有一个宗旨就是不报错就行别管补得对不对最后我们拿到明文后只需要去拿一组浏览器正确的明文跟自己生成的对比、替换即可
至此整个腾讯滑块的流程就分析完了本来还想把支付的encrypt_msg也讲一下的发现已经4000多字累了累了下次有机会再说吧拜拜~