腾讯滑块(1-13,js逆向)

news2024/9/25 17:17:52

前言:之前打算写的猿人学比赛题系列因为种种原因耽搁了,主要还是比完赛之后热情就少了很多,看到评论区有人说做了这么久才做出一题,这里需要狡辩一下,我虽然菜但是还没到那种地步,比赛两天时间里我跟队友是做了七题的,等以后有时间再更猿人学比赛题吧,先看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,这里开始先对num2(844839458)进行了操作

 844839458 '<<' [4] 'result is' 632529440
 844839458 '>>>' [5] 'result is' 26401233
 632529440 '^' [26401233] 'result is' 606174193
 606174193 '+' [844839458] 'result is' 1451013651
 得到左边的算法-->((num2 << 4) ^ (num2 >>> 5)) + num2)

将上面得到的数字与key亦或后再累加num1(1684218491)就得到第一轮的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位数组其实就是atr1+atr3+atr4拼接而成的
在这里插入图片描述
通过多次调试会发现,这38位数组每次的顺序都不一样,这里很遗憾的说下,对于作者而言tx滑块没办法做到真正意义上的纯算,我这里的处理方式是先让这个js跑起来,然后通过正则在js里添加点内容最后返回明文再对明文做点处理最后走算法
(1)如何让js跑起来,可以选择jsdom,或者补一些简易的环境,先保证能正常出结果
(2)对js进行改造,在下载这个js时,通过正则找到这处地方,然后加上以下代码,这时候list_数组会不断有明文push进来
在这里插入图片描述
然后再对list_进行去重、筛选,就会得到明文了
在这里插入图片描述
(3)我都补环境了为啥还要搞算法,不多此一举嘛,此言差矣,注意我上面说的是补一些简易的环境,tx有非常多的dom操作补起来会很麻烦,所以你在补这个简易环境的时候,只有一个宗旨就是不报错就行,别管补得对不对,最后我们拿到明文后,只需要去拿一组浏览器正确的明文跟自己生成的对比、替换即可

至此整个腾讯滑块的流程就分析完了,本来还想把支付的encrypt_msg也讲一下的,发现已经4000多字,累了累了下次有机会再说吧,拜拜~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1380153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac快捷创建文件的方法

mac快捷创建文件的方法 在macbook的使用中&#xff0c;当我们在桌面或访达等地方使用右键时&#xff0c;可以看到新建文件夹的选项&#xff0c;却怎么也找不到创建文件的选项。这种情况有时候会带来不便。这篇文章给大家带来一个非常简单解决这个问题。 下载 在App Store中搜索…

FPGA的MARK_DEBUG调试之波形抓取

一、描述 在工作时发现FPGA向ARM传输的数据有问题&#xff0c;因此想抓取一下FPGA的波形。作为传统方式使用示波器抓取过于麻烦&#xff0c;因此使用VIVADO自带的DEBUG功能抓取输出的数据波形。 先上几个比较好的学习链接&#xff1a; https://www.cnblogs.com/tubujia/p/924…

制造领域 基础概念快速入门介绍

1、基本背景知识 本定义结合国家标准文件有所发挥&#xff0c;仅供参考。 产品&#xff1a;是生产企业向用户或市场以商品形式提供的制成品&#xff1b; 成套设备&#xff1a;在生产企业一般不用装配工序连接&#xff0c;但用于完成相互联系的使用功能的两个或两个以上的产…

支持向量机(公式推导+举例应用)

文章目录 引言间隔与支持向量机对偶问题&#xff08;拉格朗日乘子法&#xff09;SMO算法核函数软间隔与正则化软间隔正则化&#xff08;罚函数法&#xff09; 模型的稀疏性结论实验分析 引言 在机器学习领域&#xff0c;支持向量机&#xff08;Support Vector Machine&#xf…

网络——华为与华三

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 写在前面 大家好&#xff0c;我是网络豆&#xff0…

Go语言认识

Go语言认识 1. Go语言的设计背景2. Go语言的历程3. Go语言对比分析4. Go语言未来的发展规划5. 要不要选择Go 关注 go博客 直接了解第一手资料。 go文档 了解go的全貌。 1. Go语言的设计背景 Go语言&#xff08;也称为Golang&#xff09;是由Google开发的一种编程语言。它的设计…

中国电子学会2020年6月份青少年软件编程Scratch图形化等级考试试卷一级真题(含答案)

1.以下哪段程序可以实现小猫向左移动? A. B. C. D. 2.小猫给公园设计了如下的平面图&#xff0c;它想把黑色的路变成棕色&#xff0c;请问需要点击几次油漆桶按钮? A.3 B9 C.1 D.10 3.默认的小猫有两个造型(分别为造型1和造型2)。在运行下面的程序后&#xff0c;没有看到…

【信号与系统】【北京航空航天大学】实验一、信号的MATLAB表示及信号运算

一、实验目的 1、初步掌握 MATLAB 仿真软件的使用&#xff1b; 2、学习使用 MATLAB 产生基本时域信号&#xff0c;并绘制信号波形&#xff1b; 3、学习利用 MATLAB 实现信号的基本运算&#xff1b; 4、利用 MATLAB 分析常用的连续时域信号。 二、实验内容 1、 生成连续信号 …

什么是设备管理系统?设备管理系统解决方案有何优势?

随着企业规模的不断扩大以及设备功能增加以及复杂性&#xff0c;对设备的管理提出新的挑战。由此各设备管理系统随即涌入市场。设备管理系统是对设备的运行情况、维修情况等进行记录并快速维修&#xff0c;达到提高设备维修效率&#xff0c;优化设备生命周期的综合性解决方案系…

【idea】idea插件编写教程,博主原创idea插件 欢迎下载

前言&#xff1a;经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参&#xff0c; 例如日常开发中 我们使用Objects.equals去比较 status(入参)&#xff0c;statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() &#xff0c;再比…

Flask 小程序菜品搜索

mina/pages/food/index.wxml <!--index.wxml--> <!--1px 750/320 2.34rpx;--> <view class"container"><!--轮播图--><view class"swiper-container"><swiper class"swiper_box" autoplay"{{autoplay}…

品牌帮助中心:提升企业客户服务水平与效率的实用指南

什么是品牌帮助中心&#xff1f;简单来理解&#xff0c;他就是一种加速问题解决效率的方式&#xff0c;是通过在官网设置文章库或者社区的形式&#xff0c;为客户提供自助服务&#xff0c;自我查找问题答案。是一种既能提升问题解决效率&#xff0c;又能提升品牌形象的方式。接…

【LeetCode】203. 移除链表元素(简单)——代码随想录算法训练营Day03

题目链接&#xff1a;203. 移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff…

蓝牙音视频远程控制协议(AVRCP) AV/C command格式介绍

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…

09-Python服务链路追踪案例

skyWalking Python agent requires SkyWalking 8.0 and Python 3.7 # 将django包导入 ~$ cd /apps ~$ tar xf django-test.tgz ~$ cd django-test# 安装模块 ~$ apt install python3-pip ~$ pip3 install -r requirements.txt# 创建django项目mysite ~$ django-admin startpro…

Vue:将以往的JQ页面,重构成Vue组件页面的大致思路梳理(组件化编码大致流程)

一、实现静态组件 组件要按照功能点拆分&#xff0c;命名不要与HTML元素冲突。 1、根据UI提供的原型图&#xff0c;进行结构拆分&#xff0c;拆分的粒度以是否方便给组件起名字为依据。并梳理好对应组件的层级依赖关系。 2、拆分好结构后&#xff0c;开始对应的写组件&#x…

案例118:基于微信小程序的电影院订票选座系统设计及实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

新型的变现和引流方式

AI 数字人短视频正成为一种新型的变现和引流方式。随着人工智能技术的不断发展&#xff0c;数字人技术也越来越成熟&#xff0c;为用户提供了更加逼真、生动的虚拟形象。通过AI 数字人短视频&#xff0c;用户可以创作出具有个性化特点的短视频内容&#xff0c;并将其发布在各大…

探索短链接:让网络分享更便捷

短链接是一种将长网址缩短为简洁形式的编码&#xff0c;它在互联网领域具有广泛的应用。本文将从多个方面介绍短链接的原理、类型、优势及应用场景&#xff0c;帮助您深入了解这一重要的网络技术。 短链接 | 一个覆盖广泛主题工具的高效在线平台(amd794.com) https://amd794.…

数据结构之int类

int类 int 是数字类。在其他语言中&#xff0c;数字类有很明细的区分&#xff0c;如 int&#xff08;整型&#xff09;、unsigned int(无符号整型&#xff09;、short&#xff08;短整型&#xff09;、long&#xff08;长整型&#xff09;、longlong&#xff08;长长整型&…