金山翻译接口逆向
网址(加密后):aHR0cHM6Ly93d3cuaWNpYmEuY29tL3RyYW5zbGF0ZQ==
文章目录
- 抓包
- sign值
- 结果加密
- 逆向sign值
- 第一步
- 第二步
- 1.
- 2.
- 3.
- 解密content
- 第一步
- 1.
- 2.
- 3.
抓包
F12 -> 翻译框输入spider -> 点击Fetch/XHR -> 找到接口 index.php? 开头的接口
得到如下界面:
sign值

结果加密

逆向sign值
经过测试,sign是与单词有关的,现在进入代码进行跟栈
点击 发起程序

经过逐个查看,takeResult 处应该是加解密的地方
点击跳转

跳转到 v 开头的行,在这里下个断点,重新输入spider,浏览器会在这里断住
仔细观察右边的作用域,发现出现了sign的值

由此可知,sign的值是r的值,故在上面的r处打上断点,重新输入spider
第一步
var r = u()("6key_web_new_fanyi".concat(s.LI).concat(t.q.replace(/(^\s*)|(\s*$)/g, ""))).toString().substring(0, 16);
-
(“6key_web_new_fanyi”.concat(s.LI).concat(t.q.replace(/(^\s*)|(\s*$)/g, “”))
经过多次测试,s.LI是 6dVjYLFyzfkFkk
先看这段,别看他又臭又长,其实进行的操作只是将s.Li和t的q值加入到"6key_web_new_fanyi"后,而查看作用域可以发现,
t.q = spider
所以这段的结果就是 6key_web_new_fanyi6dVjYLFyzfkFkkspider,其中spider就是你输入的词
经过多次测试,这个是定值,也就是说,u()函数的参数是一个定值 -
u()
在进入e函数时,得到如下函数:function(e) {return function(t, r) {return new e.init(r).finalize(t)} }这里面的e.init®并无任何作用,只是起到初始化进行迷惑我们的操作,所以直接不看,现在我们需要进入finalize()函数,因为这个函数才是接收主要参数的函数,此前任何和init有关的函数都不是我们需要的
finalize函数进入主要函数之后,我们会看到,在init函数之后,会进入reset函数

在reset之后,我们继续下一步,会进入_doReset函数

这里我们可以清楚的看到,使用的是MD5加密算法,而_hash对于我们来说并没有任何用处,所以我们不需要他,只需要知道这个是MD5加密就行
在知道u()函数具体是做什么的之后,可能会有如下疑惑:

为什么我们在控制台输出u()(定值)后,会需要toString()才能变为密文,我们只需要知道,在js中,实现md5加密后需要加上toString()来完成这一神奇操作,而在python中,只需要简单的进行md5加密后就可以得到与之一样的密文
-
.subString(start: end)
这个就是将字符串进行切片,从start到end,且不包含end,所以我们需要用到的其实只是密文的前16位
进行到这里,我们只是完成了sign加密的第一步,获取到第一次加密的密文,这个密文将会作为第二次加密的明文
第二步
进行完第一步之后,我们需要在他的下一步打上断点:
1.

这里传的参数r就是上一步最后得到的16位的密文
废话不多说,直接进入函数
2.

返回l,继续跟
又回到第一点,由此可知,这个(0, _.$Q) = $Q 且返回函数l,参数为第一步的16位密文
继续跟
3.

到这里,局势已经非常明了,这个第二次加密就是AES加密,前面两步时在对加密的参数进行调整
(1)不管如何变,t一直是最后面那一串字符
(2)将t传入到s()函数,根据多次测试,s函数就是将t进行解编码之后(利用urllib.parse.unquote可以解编码), 再通过字符运算将其转化为16位的字母+数字的字符串,再s()函数的结果擦混入到parse函数,得到加密的key
进入parse函数:

parse的括号里的参数并未起到任何作用,不用管
直接继续跟:

得到这个,经过不同单词测试,这个key也是固定值,一个数组:
[1278502466, 1950627174, 1279473990, 1366766130]
(3)将需要加密的数据和密钥传入AES.encrypt即可得到密文
(4)效果一样,将对象转化为字符串
至此,sign逆向完成,后面我会将js代码和python代码贴出
解密content

观察这段代码,不难发现,这是对翻译接口进行了post请求,后面的&sign就是我们上面得到的sign值,拼接起来进行请求,返回了data值,也就是e
在then中,对e做了处理,所以我们可以判断,content处就是结果的解密处
第一步
给content处打上断点,重新输入spider,发现会在这里断住:
1.

可以看到,和我们预期的一样,e就是返回的加密数据
废话不多说,直接跟
2.

B6返回了f,继续跟
ok,还是回到了第一点,我们继续往下跟
3.

看到这里,解密函数也出来了,又是AES,解密数据是e,也就是返回的密文,密钥key是r,不出意外r是根据t的值进行生成的,跟上面的加密sign值一样,这里的r经过我的测试,生成逻辑和上述一样,只是参数不一样,且为固定值:
[1633773667, 861169273, 1715684717, 1163014963]
在后续,对解密之后的数据进行了解码为utf-8的操作,不仅如此,解密之后还可能出现中文字符序列化的情况,这个时候就需要python的json.loads()进行转化

相关文章:
金山翻译接口逆向
网址(加密后):aHR0cHM6Ly93d3cuaWNpYmEuY29tL3RyYW5zbGF0ZQ 文章目录 抓包sign值结果加密 逆向sign值第一步第二步1.2.3. 解密content第一步1.2.3. 抓包 F12 -> 翻译框输入spider -> 点击Fetch/XHR -> 找到接口 index.php? 开头的…...
unified-runtime编译与验证
unified-runtime编译与验证 一.创建容器二.编译unified-runtime三.生成一个cuda ptx kernel四.API测试 unified-runtime编译与验证 一.创建容器 docker run --gpus all --shm-size32g -ti \-e NVIDIA_VISIBLE_DEVICESall --privileged --nethost \--rm -it \-v $PWD:/home \-…...
【Python】最详细--基础语法
Python是一种强大且易于学习的编程语言,广泛用于各种应用程序的开发,如web开发、数据科学、人工智能等。以下是一些Python的基础知识: 1. Python的注释 Python的注释用于在代码中添加说明,以提高代码的可读性。注释在代码执行时…...
二叉树基础:什么样的二叉树适合用数组来存储?
二叉树基础:什么样的二叉树适合用数组来存储? 在计算机科学中,二叉树是一种非常重要的数据结构。它具有许多应用,如搜索、排序、表达式解析等。在存储二叉树时,我们可以使用多种方法,其中一种是使用数组。但是,并不是所有的二叉树都适合用数组来存储。那么,什么样的二…...
iTOP-RK3568开发板独立NPU通过算法加特应用到以下的场景
iTOP-3568开发板采用瑞芯微RK3568处理器,内部集成了四核64位Cortex-A55处理器。主频高达2.0Ghz,RK809动态调频。集成了双核心架构GPU,ARM G52 2EE、支持OpenGLES1.1/2.0/3.2、OpenCL2.0、Vulkan1.1、内嵌高性能2D加速硬件。 内置独立NPU,算力…...
Java基于SpringBoot微信小程序的跳蚤市场系统设计与实现(lw+数据库+讲解等)
项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…...
【分布式微服务云原生】《Redis 的高效之道:线程模型、IO 模型与 Reactor 模型全解析》
标题:《分布式缓存Redis 的高效之道:线程模型、IO 模型与 Reactor 模型全解析》 摘要:本文深入探讨分布式缓存 Redis 的 I线程模型、IO 模型以及 Reactor 模型。详细介绍了 Redis 在不同版本中的线程变化、IO 模型的特点和工作流程ÿ…...
科研类型PPT的制作技巧
目录 科研类型PPT的制作技巧 荣誉: 首页:ppt开头结尾 小标题 重点标记:加粗红色下划线 使用三线表 图片,文本排版 一、明确目的与受众分析 二、基础设计原则 三、内容组织与呈现 四、绘图与模型制作 五、其他注意事项 科研类型PPT的制作技巧 荣誉: 首页:ppt开…...
rom定制系列------小米6x_MIUI14_安卓13刷机包修改写入以及功能定制 界面预览
在接待一些定制化系统中。有很多工作室或者一些特殊行业的友友需要在已有固件基础上简略修改其中的功能。方便使用。例如usb调试默认开启。usb安装设置以及usb安装与内置删减一些app的定制服务。今天给友友预览其中小米6X此款机型定制相关的一些界面与功能演示。 定制机型以及…...
线性代数基础02
目录 1.向量 1.1向量的定义 1.2向量的运算 1.2.1向量加法 1.2.2向量数乘 1.2.3向量点积 1.3矩阵的特征值和特征向量 1.4向量的模 1.4.1向量的模的定义 1.4.2向量的模的几何解释 1.4.3向量的模的性质 1.5向量的内积 1.5.1向量的内积的定义 1.5.2向量的内积的几何解…...
「4.4」祖孙询问
「4.4」祖孙询问 题目描述 已知一棵 n 个节点的有根树。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。 输入格式 输入第一行包括一个整数 n 表示节点个数; 接下来 n 行每行一对整数对 a 和 b 表示 a 和 b 之…...
Datawhale 组队学习 文生图 Prompt攻防 task03随笔
这期我们从不同角度切入探讨赛题的进阶思路 思路1:对比不同大模型 首先我们可以选择尝试不同的大模型,使用更复杂的大模型可以提高文本改写的质量和效果。随着模型大小的增加,其表示能力也随之增强,能够捕捉更细微的语言特征和语…...
游戏投屏软件有哪些?分享这10款比较好用的!
说到投屏,这个事情我还是比较有发言权的! 一般手机下载个APP,然后就可以通过WiFi、蓝牙或者USB进行连接投屏啦,下面是国内比较主流的一些游戏投屏软件,可以根据他们的优缺点进行选择哦! 01.幕连 国内首款…...
[Unity Demo]从零开始制作空洞骑士Hollow Knight第十六集(下篇):制作小BOSS龙牙哥
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作小BOSS龙牙哥 1.导入素材制作动画2.制作两种攻击行为3.制作从惊醒到转身到走路or跑步行为总结 前言 hello大家好久没见,之所以隔了一天时间…...
顺序表算法题【不一样的解法!】
本章概述 算法题1算法题2算法题3彩蛋时刻!!! 算法题1 力扣:移除元素 我们先来看这个题目的要求描述: 把与val相同数值的元素移除掉,忽略元素的相对位置变化,然后返回剩下与val值不同的元素个数…...
VuePress的基本常识
今天大概了解了一下Vuepress,感觉很棒,看着极其简单,自己也想做一个,后续我大概率也会做一个用Vuepress为基础做的博客网站,很酷~ 哈哈哈,下面是我今天学习Vuepress的一些内容,简单分享下&#…...
深入解析Vue2与Vue3的区别与Vue3的提升
Vue.js作为一款流行的前端框架,自发布以来,凭借其简洁的语法、灵活的组件化和高效的性能,赢得了众多开发者的喜爱。随着Vue3的发布,许多新特性和新功能也应运而生。那么,Vue2与Vue3究竟有哪些区别呢?Vue3又…...
认识python数据分析
Python作为一种高效、灵活且易于学习的编程语言,在数据分析领域展现出了强大的应用潜力。 从数据清洗、预处理到复杂的统计分析、可视化及机器学习模型的构建,Python提供了丰富的库和框架,极大地简化了数据分析的流程,提高了工作…...
以太网交换安全:MAC地址漂移与检测(实验:二层环路+网络攻击)
一、什么是MAC地址漂移? MAC地址漂移是指网络中设备的MAC地址在运行过程中发生变化的现象。 MAC地址是用于唯一标识网络中的设备。 MAC地址漂移是指交换机上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。…...
NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关
NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关 粒子采集部分 粒子采集的部分我们可以理解为,在已知粒子的情况下,对图片进行渲染的一个正向的过程。 空间坐标(x,y,z)发射的光线通过相机模型成为图片上…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
C++11 constexpr和字面类型:从入门到精通
文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...
