JS逆向-atob和btoa分析
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!
故事是这样的,有位读者朋友需要模拟登录一个网站:
aHR0cDovL3d3dy56bGRzai5jb20v
我进去一看,很简单啊,不就是RSA加密么?

一顿操作猛如虎,把涉及RSA的全部扣下来,然后用Python的base64.b64encode代替 btoa 函数调用即可(由于这里的RSA加密为NoPadding模式,因此对相同明文加密返回的密文都是相同的。RSA的具体相关不在本文讨论范围之内,后面会再出详细教程),结果对比如下:

嗯?为什么结果不一样?检查过代码,确定并没有检查浏览器环境啥的,翻车了…
恰在这时候,又一位读者问了我一个问题,为啥下面这两个也会不一样?有兴趣的可以自行试一下:
IcORUmfDlcOPDsOSwr06fMKgBMKcTQ==

难道JS的 atob 和 btoa,不等于Python的base64中的 b64decode 和 b64encode 么?
原理分析
想直接看答案的可以跳过此部分。
btoa和atob是window对象的两个函数,其中btoa是binary to ASCII,用于将binary的数据用ASCII码表示,即Base64的编码过程,而atob则是ASCII to binary,用于将ASCII码解析成binary数据,即Base64的解码过程[1]
ASCII码大家基本都知道,这里讲下binary是什么。
binary 是JS字符集的另外一个子集,它类似于 ASCII 字符集,但是字符的码点(charCode)不再限制到 127, 它包含了255 以内的字符。binary string设计的目的不是用于代表字符, 而是代表二进制数据。由 binary string 代表的二进制数据大小是原始数据的两倍,然而这对于最终用户是不可见的, 因为JavaScript strings 的长度是以2字节为单位进行计算的。比如, “Hello world” 这个字符串属于 ASCII 子集, 而 ÀÈÌÒÙ 不属于ASCII码[2],但属于binary。
所以btoa和atob其实还涉及了编码问题,我们只需要找出相同编码进行替换即可。在node.js环境中,提供了一个 Buffer 类,用于操作二进制及Base64转码。而在Python环境中,有一个 Latin1 编码[3]与JS的binary相同,因此可以构造代码了。
代码实现
一、node.js环境
1.直接安装btoa-atob库(不推荐)
2.通过Buffer类实现转换
// atob
var s = new Buffer.from("待解码的字符", "base64").toString("binary")
// btoa
var s = new Buffer.from("待编码的字符", "binary").toString("base64")
二、Python环境
通过Latin1编码进行转换
import base64
# atob
s = base64.b64decode("待解码的字符".encode("utf8")).decode("latin1")
# btoa
s = base64.b64encode("待编码的字符".encode("latin1")).decode("utf8")
三、成果展示


相关文章:
JS逆向-atob和btoa分析
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 故事是这样的,有位读者朋友需要模拟登录一个网站: aHR0cDovL3d3dy56bGRzai5jb20v 我…...
primitive 编写着色器材质
import { nextTick, onMounted, ref } from vue import * as Cesium from cesium import gsap from gsaponMounted(() > { ... })// 1、创建矩形几何体,Cesium.RectangleGeometry:几何体,Rectangle:矩形 let rectGeometry new…...
计算机视觉算法实战——车道线检测
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 车道线检测是计算机视觉领域的一个重要研究方向,尤其在自动驾驶和高级驾驶辅助…...
网络安全-安全散列函数,信息摘要SHA-1,MD5原理
安全散列函数 单向散列函数或者安全散列函数之所以重要,不仅在于消息认证(消息摘要。数据指纹)。还有数字签名(加强版的消息认证)和验证数据的完整性。常见的单向散列函数有MD5和SHA 散列函数的要求 散列函数的目的是文件、消息或者其它数据…...
树莓派-5-GPIO的应用实验之GPIO的编码方式和SDK介绍
文章目录 1 GPIO编码方式1.1 管脚信息1.2 使用场合1.3 I2C总线1.4 SPI总线2 RPI.GPIO2.1 PWM脉冲宽度调制2.2 静态函数2.2.1 函数setmode()2.2.2 函数setup()2.2.3 函数output()2.2.4 函数input()2.2.5 捕捉引脚的电平改变2.2.5.1 函数wait_for_edge()2.2.5.2 函数event_detect…...
《零基础Go语言算法实战》【题目 2-10】接口的实现
《零基础Go语言算法实战》 【题目 2-10】接口的实现 请指出下面代码中存在的问题。 type Programmer struct { Name string } func (p *Programmer) String() string { return fmt.Sprintf("print: %v", p) } func main() { p : &Programmer{} p.String()…...
Win32汇编学习笔记10.OD插件
Win32汇编学习笔记10.OD插件-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 筛选器异常插件 被调试程序: 📎TestUnh.zip 我们用OD条试试发现,无法断下 筛选器异常 异常产生之后 异常首先会给调试器 调试器不处理就会给 SEH , SEH 不处理的话有又给…...
在vscode中已经安装了插件Live Server,但是在命令面板确找不到
1、VS Code缓存问题: 有时VS Code的缓存可能导致插件无法正确加载。尝试删除VS Code缓存文件夹(如C:\Users\你的用户名\AppData\Roaming\Code)中的文件,并重启VS Code。 2、重新安装插件: 尝试卸载Live S…...
C# SQL ASP.NET Web
留学生的课程答疑 按照要求完成程序设计、数据库设计、用户手册等相关技术文档; 要求 1. 计算机相关专业,本科以上学历,至少有1年以上工作经验或实习经历。 2. 熟练掌握WinForm程序开发,或ASP.NET Web编程。 3. 熟悉C#中网络…...
联想java开发面试题及参考答案
IP 协议是哪一层的? IP 协议(Internet Protocol)属于网络层协议。 网络层主要负责将数据从源节点传输到目标节点,它在整个网络通信体系中起到了承上启下的关键作用。在分层网络模型中,下层(如数据链路层)为网络层提供物理链路的连接和帧传输服务。数据链路层关注的是在相…...
Node.js中的fs模块:文件与目录操作(写入、读取、复制、移动、删除、重命名等)
在Node.js中,fs模块提供了多种方法来处理文件和目录操作,使得数据的持久性保存和文件管理变得简单。下面将介绍文件读写、文件复制、文件移动、文件重命名、文件删除、文件夹创建与删除以及查看资源状态等常用操作。 首先,在使用写入和读取功…...
代码的形状:重构的方向
大概2周前写了一篇《代码的形状:从外到内的探索与实践》 涵树:代码的形状:从外到内的探索与实践 觉得这个话题还可以继续,它是一个从无形到有形的过程,而这个过程感觉就是王阳明先生说的“心即理”的探寻过程。 我讨论代码的形状ÿ…...
2021 年 3 月青少年软编等考 C 语言五级真题解析
目录 T1. 红与黑思路分析T2. 密室逃脱思路分析T3. 求逆序对数思路分析T4. 最小新整数思路分析T1. 红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的…...
华为C语言编程规范总结
1.头文件更改会导致所有直接或间接包含该头文件的的C文件重新编译,会增加大量编译工作量,延长编译时间,因此: 1.1 头文件里尽量少包含头文件 1.2 头文件应向稳定的方向包含 2.每一个.c文件应有一个同名.h文件,…...
XML 解析器:深入解析与高效应用
XML 解析器:深入解析与高效应用 引言 XML(可扩展标记语言)作为一种重要的数据交换格式,被广泛应用于各种系统和平台中。为了有效地处理和解析XML数据,XML解析器发挥着至关重要的作用。本文将深入探讨XML解析器的原理…...
《系统爆破:MD5易破,后台登录可爆破?》
声明:笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 爆破Sales系统 一、爆破MD5 场景:已知MD5的加密字符串,如何得知明…...
基于微信小程序的书籍销售系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
SpringData-Redis缓存
Spring Framework是领先的全堆栈Java/JEE应用程序框架。它提供了一个轻量级容器和一个通过使用依赖注入、AOP和可移植服务抽象实现的非侵入性编程模型。 NoSQL存储系统为传统RDBMS提供了一种横向可扩展性和速度的替代方案。就实现而言,键值存储代表NoSQL空间中最大…...
Hadoop3.3.4伪分布式环境搭建
文章目录 前言一、准备1. 下载Hadoop2. 配置环境变量3. 配置免密 二、Hadoop配置1. hadoop-env.sh2. hdfs-site.xml3. core-site.xml4. mapred-site.xml5. yarn-site.xml 三、格式化四、启动 前言 hadoop学习——伪分布式环境——普通用户搭建 一、准备 1. 下载Hadoop 2. 配…...
【VUE 指令学习笔记】
v-bind :单向绑定解析表达式,可简写为:xxx v-model :双向数据绑定。 v-for:遍历数组/对象/字符串 v-on:绑定事件监听,可简写为。 v-if:条件渲染(动态控制节点是否存存在) v-else:条件渲染(动态控制节点是否存存在) v-show:条件渲染…...
给 Claude Code 装上浏览器:Chrome 集成测试版详解
程序员们早就习惯了在终端里跟 AI 助手聊天、改代码、跑测试。但有一个场景始终有点绕——代码改完了,得切到浏览器里看看效果、查查报错、填填表单,然后再切回终端告诉 AI “好像还差点意思”。来回折腾几次,思路容易断。 Anthropic 最近放出…...
8元和3元的降AI工具差在哪用数据说话
降AI率工具市场里,价格跨度很大:有3元/千字的,有8元/千字的,差了2.5倍。 很多同学的第一反应是"贵的肯定好",但这个逻辑在降AI工具领域不一定成立。这篇文章用实测数据说话,对比比话降AI&#x…...
DynamiCrafter完全指南:从安装到生成高质量动画视频
DynamiCrafter完全指南:从安装到生成高质量动画视频 【免费下载链接】DynamiCrafter DynamiCrafter: Animating Open-domain Images with Video Diffusion Priors 项目地址: https://gitcode.com/gh_mirrors/dy/DynamiCrafter DynamiCrafter是一款强大的AI动…...
遗传算法求解分布式柔性作业车间调度问题的Matlab代码:多工厂约束下最小化最大完工时间,采用...
遗传算法求解分布式柔性作业车间调度问题 Matlab代码考虑多工厂约束,以最小化最大完工时间为目标函数,使用ipox、ux两种交叉方式,交换变异邻域。 可选择测试算例。车间里机器轰鸣声不断,老王盯着墙上五颜六色的生产进度表直挠头。…...
如何快速搭建你的专属Galgame社区:TouchGal一站式解决方案完整指南
如何快速搭建你的专属Galgame社区:TouchGal一站式解决方案完整指南 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 你是否…...
软考系统分析师必看:数据库设计3大坑点与实战避坑指南(附案例分析)
软考系统分析师数据库设计实战:三大核心陷阱与高阶避坑策略 数据库范式应用的典型误区与修正方案 在航空订票系统的数据库设计中,开发团队曾将机票代理关系模式设计为(代理商编号,航班编号,代理商名称,客…...
28GHz毫米波滤波器设计实战:用SynMatrix快速搞定SIW带通滤波器(附完整参数)
28GHz毫米波滤波器设计实战:SynMatrix工具链的高效应用指南 在毫米波频段,滤波器设计一直是射频工程师面临的重大挑战之一。尤其是当工作频率上升到28GHz甚至更高时,传统设计方法往往陷入反复迭代的泥潭,耗费大量时间在仿真优化与…...
10大经典量化策略:实战逻辑+买卖信号+风险点
目录 1. 趋势跟踪策略(最主流、最稳) 2. 均值回归策略(震荡市神器) 3. 多因子选股策略(机构标配) 4. 动量反转策略(A 股特别有效) 5. 统计套利 / 配对交易(低风险&a…...
佳通轮胎亮相2026 GT Show:以赛事基因破局,重构民用轮胎价值边界
2026年3月27日至29日,苏州国际博览中心迎来GT Show苏州改装车展的年度盛宴,这场聚焦汽车个性化升级与性能改装的行业盛会,成为轮胎企业展现技术实力、布局细分市场的重要窗口。 中国轮胎商务网(tirechina.net)获悉&…...
新时达电脑调试软件上位机:支持256种全协议,便捷实现系统参数导入导出与备份
新时达软件上位机,256全协议 新时达电脑调试软件多协议,方便用电脑调试系统,可以从电脑导入 和导出参数到电脑保存控制柜前蹲半小时协议选错的痛,你懂不懂?U盘插了拔拔了插还是提示版本格式不匹配的烦躁,你…...
