当前位置: 首页 > news >正文

金山翻译接口逆向

网址(加密后):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);
  1. (“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()函数的参数是一个定值

  2. 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加密后就可以得到与之一样的密文

  1. .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 模型的特点和工作流程&#xff…...

科研类型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)发射的光线通过相机模型成为图片上…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言: 类加载器 1. …...