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

前言:之前打算写的猿人学比赛题系列因为种种原因耽搁了,主要还是比完赛之后热情就少了很多,看到评论区有人说做了这么久才做出一题,这里需要狡辩一下,我虽然菜但是还没到那种地步,比赛两天时间里我跟队友是做了七题的,等以后有时间再更猿人学比赛题吧,先看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' 632529440844839458 '>>>' [5] 'result is' 26401233632529440 '^' [26401233] 'result is' 606174193606174193 '+' [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.mzph.cn/news/619738.shtml

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

相关文章

CH341 SPI方式烧录BK7231U

CH341是一个USB总线的转接芯片&#xff0c;通过USB总线提供异步串口、打印口、并口以及常用的2线和4线等同步串行接口。 BK7231U Wi-Fi SOC芯片&#xff0c;内嵌处理器。1. 符合802.11b/g/n 1x1协议 2. 17dBm 输出功率3. 支持20/40 MHz带宽和STBC 4. 支持Wi-Fi STA、AP、…

ftp安装与配置 云服务器 CentOS7

1、FTP的安装 #安装 yum install -y vsftpd#设置开机启动 systemctl enable vsftpd.service#启动 systemctl start vsftpd.service#停止 systemctl stop vsftpd.service#查看状态 systemctl status vsftpd.service 2、配置FTP #修改前先进行备份文件 cp /etc/vsftpd/vsftpd…

腾讯云怎么领取免费云服务器?

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云服务器网txyfwq.com分享2024年最新腾讯云免费…

弟12章 1 网络编程

文章目录 网络协议概述 p164TCP协议与UDP协议的区别 p165 网络协议概述 p164 ipv4&#xff1a;十进制点分制 ipv6&#xff1a;十六进制冒号分隔 TCP协议与UDP协议的区别 p165 tcp协议的三次握手&#xff1a;

行为型设计模式——备忘录模式

备忘录模式 备忘录模式提供了一种状态恢复的实现机制&#xff0c;使得用户可以方便地回到一个特定的历史步骤&#xff0c;当新的状态无效或者存在问题时&#xff0c;可以使用暂时存储起来的备忘录将状态复原&#xff0c;很多软件都提供了撤销&#xff08;Undo&#xff09;操作…

【教程】微信小程序如何拍摄图片及视频并上传到后台进行存储

需求分析 在微信小程序中需要使用手机拍摄照片以及视频上传到后台进行进一步的操作&#xff0c;需要解决以下两个问题&#xff1a; 微信小程序如何拍摄照片及视频如何将拍摄的照片及视频上传到后台进行存储 解决方案 前端开发&#xff1a;微信小程序原生 后端开发&#xf…

sentinel熔断与限流

文章目录 一、sentinel简介Sentinel 是什么&#xff1f;Sentinel安装 二、sentinel整合工程新建cloudalibaba-sentinel-service8401微服务引入依赖yml配置主启动类添加EnableDiscoveryClient业务类测试 三、sentinel流控规则基本介绍流控模式直接&#xff08;默认&#xff09;关…

Web前端-移动web开发_流式布局

文章目录 移动web开发流式布局1.0 移动端基础1.1浏览器现状1.2 手机屏幕的现状1.3常见移动端屏幕尺寸1.4移动端调试方法 2.0 视口2.1 布局视口 layout viewport2.2视觉视口 visual viewport2.3理想视口 ideal viewport&#xff08;苹果&#xff09;2.4meta标签 3.0 物理像素(手…

十三、QPalette的简单使用(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 在实际应用中&#xff0c;经常需要改变某个控件的颜色外观&#xff0c;如背景、文字颜色等。Qt提供的调色板类 QPalette 专门用于管理对话框的外观显示。QPalette 类相当于对话框或是控件的调色板&…

记录:排查create_ap偶发无法开启自发AP的问题

背景说明&#xff1a; 系统&#xff1a;Xubuntu16.04&#xff1b;内核&#xff1a;4.14&#xff1b;无线网卡&#xff1a;EDIMAX EW-7822UAC 关于无线网卡的驱动安装和create_ap配置参考博文&#xff1a;Xubuntu16.04系统中使用EDIMAX EW-7822UAC无线网卡开启5G自发AP 目录 问题…

分布式系统的三字真经CAP

文章目录 前言C&#xff08;Consistency 数据一致性&#xff09;A&#xff08;Availability 服务可用性&#xff09;P&#xff08;Partition Tolerance 分区容错性&#xff09;CAP理论最后 前言 你好&#xff0c;我是醉墨居士&#xff0c;我一起探索一下分布式系统的三字真经C…

大数据调度框架Oozie,这个学习网站让你事半功倍!

Oozie是一个基于工作流引擎的开源框架&#xff0c;由Cloudera公司贡献给Apache。它主要用于管理和调度Apache Hadoop作业&#xff0c;支持的任务类型包括Hadoop MapReduce、Pig Jobs等。 Oozie的核心概念包括workflow jobs和coordinator jobs。Workflow jobs是由多个动作&#…

Jmeter 性能-监控服务器

Jmeter监控Linux需要三个文件 JMeterPlugins-Extras.jar (包&#xff1a;JMeterPlugins-Extras-1.4.0.zip) JMeterPlugins-Standard.jar (包&#xff1a;JMeterPlugins-Standard-1.4.0.zip) ServerAgent-2.2.3.zip 1、Jemter 安装插件 在插件管理中心的搜索Servers Perform…

AIGC视频生成:Pika1.0快速入门详解

Pika1.0快速入门详解 一、简介二、登录三、参数设置1、改变画面大小&#xff08;Aspect ratio&#xff09;2、改变帧数大小&#xff08;Frames per second&#xff09;3、镜头平移&#xff08;Camera control&#xff09;4、画面运动控制&#xff08;Strength of motion&#x…

永不停止,永远在路上!MIAOYUN 2023年度回顾

2023 MIAOYUN年度关键词&#xff1a;坚持/沉淀/成长 2023年&#xff0c;我们身处虚浮遥荡的世界&#xff1a;支原体肺炎、流感接二连三、经济下行成热词、人人思危&#xff1b;更有暴雨成灾&#xff0c;核污水扩散&#xff0c;战火与地震不断。 坏事发生时&#xff0c;你有三种…

【NLP】多标签分类【上】

简介 《【NLP】多标签分类》主要介绍利用三种机器学习方法和一种序列生成方法来解决多标签分类问题&#xff08;包含实验与对应代码&#xff09;。共分为上下两篇&#xff0c;上篇聚焦三种机器学习方法&#xff0c;分别是&#xff1a;Binary Relevance (BR)、Classifier Chain…

绝地求生:【PC】第27赛季第2轮更新公告

各位玩家大家好&#xff01;欢迎收看本期闲游盒更新公告。 正式服维护时间 ※ 下列时间可能会根据维护情况而发生变化。 1月10日上午8:00 – 下午4:30 地图轮换 ※ 地图轮换将于每周三上午10点进行。 ※ 在随机选择地图的地区中&#xff0c;第1周可选择荣都地图&#xff0c…

Java SE入门及基础(11)

程序调试 1. 什么是程序调试 当程序出现问题时&#xff0c;我们希望程序能够暂停下来&#xff0c;然后通过我们操作使代码逐行执行&#xff0c;观察整个过程中变量的变化是否按照我们设计程序的思维变化&#xff0c;从而找问题并解决问题&#xff0c;这个过程称之为程序调试…

从零开发短视频电商 PaddleOCR Java推理 (一)飞桨引擎推理

文章目录 简介方式一&#xff1a;DJL 飞浆引擎 飞桨模型方式二&#xff1a;ONNXRuntime 飞桨转换后的ONNX模型&#xff08;Paddle2ONNX&#xff09; 添加依赖文字识别OCR过程分析文字区域检测文字角度检测文字识别&#xff08;裁减旋转后的文字区域&#xff09; 高级替换模型…

MySQL 和 Redis 如何保证数据一致性,通过MySQL的binlog实现

1、简介 MySQL 和 Redis 如何保证数据一致性&#xff0c;目前大多讨论的是先更新Redis后更新MySQL&#xff0c;还是先更新MySQL 后更新Redis&#xff0c;这两种方式在实际的应用场景中都不能确保数据的完全一致性&#xff0c;在某些情况下会出现问题&#xff0c;本文介绍使用 C…