首页 > 攻略 > 手游评测 > 详情

金山词霸在线翻译【金山词霸在线翻译免费版】

2025-02-15 13:48:32 | 来源: 互联网整理

【JS逆向百例】金山词霸翻译逆向分析

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除!

今天在查看某平台私信的时候,发现有位粉丝表示自己在逆向某站的过程中,有一些疑惑,态度十分友好,K哥一向是尽力满足粉丝需求的,本文就对该站进行逆向研究,该案例不难,不过为了便于粉丝理解,会写的相对详细点,大佬们直接跳过就可以了~

  • 目标:某词霸翻译,sign、content 参数逆向分析
  • 网址:aHR0cHM6Ly93d3cuaWNpYmEuY29tL3RyYW5zbGF0ZQ

进入翻译页,左边输入查询单词,右边即会翻译出中文释义,很显然通过接口传输的数据:

F12 打开开发者人员工具,重新输入一个英文单词,比如 ratel,进行抓包,/index.php接口的 Form Data 中有个 q 参数,很明显,就是我们输入的待翻译的英文单词,请求参数 sign 是经过加密的:

  • Payload:请求中携带的实际数据部分;
  • Query String Parameters:URL 中的查询字符串部分所包含的参数;
  • Form Data:HTTP 请求中发送数据的方式,通常用于提交表单数据。

那么,响应返回的自然就是翻译后的中文释义,点到 Preview 响应预览中查看一下,发现并没有出现想象中的蜜罐两字,显然 content 就是翻译结果,只不过被加密处理了:

接下来,我们分别对 sign 参数和 content 参数进行逆向分析。

定位的方式有很多,由于该接口是 XHR(XMLHttpRequest)类型的请求,我们可以直接下个 XHR 断点,这样定位到的位置通常在加密处理完成之后,已经准备发送请求了,优点是便于踪栈,更容易找到加密的地方:

在开发者人员工具 Source 面板右侧的 XHR/fetch Breakpoints 中添加截取的接口 URL:

重新输入单词,即会断住,可以看到,此时 sign 参数已经生成了:

向上跟栈到 takeRusult 中,以下部分中,看起来相当像在拼接 sign 参数:

在该行打下断点,释放掉 XHR 断点,重新输入查询单词即会断住,encodeURIComponent(r) 就是 sign 值:

看看 r 参数是什么,就定义在上面:

断到该行,先选中.$Q,跟进去,看看是什么加密算法:

很明显的 AES 加密,mode 为 ECB,padding 为 PKCS7,key 是经过一系列编码得到的,为定值L4fBtD5fLC9FQw22

  • mode:加密模式,ECB 是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文;
  • padding:填充方式,PKCS7 在填充时首先获取需要填充的字节长度 = 块长度 - (数据长度 % 块长度),在填充字节序列中所有字节填充为需要填充的字节长度值;
  • 相关文章阅读:【爬虫知识】爬虫常见加密解密算法。

直接引库复现即可:

再来分析下(0, _.$Q)(r)中的 r,定义在上一行,内容如下:

逐段分析一下这部分:

  • .toString().substring(0, 16):将之前部分转为字符串后,截取了前 16 个字符;
  • s.LI:定值6dVjYLFyzfkFkk
  • 6key_web_new_fanyi6dVjYLFyzfkFkkratel: 6key_web_new_fanyi + 6dVjYLFyzfkFkk + 查询单词;

关键就在于这部分了:

这一段将6key_web_new_fanyi6dVjYLFyzfkFkkratel加密了,长度为 32 位:

32 位就比较特别了,根据经验,猜测是 MD5 加密,去 www.kgtools.cn 验证一下,果然,结果一致:

当然还可以搜索 MD5 摘要算法源码中的一些特征,1732584193、4023233417 之类的,大多数都是标准的算法,MD5 算法的源码可于公众号回复关键词MD5获取:

完整算法:

当然,也可以直接使用 Python 复现:

我们来看看 takeResult 的结构,这就是一个异步操作链:

跟进到 v 函数中,返回了一个 Promise 对象,用于异步处理请求的结果:

Promise.then 用于注册当异步操作成功完成时执行的回调,这里接受了一个参数,即成功时的回调函数:

大伙应该注意到了,content: JSON.parse((0, _.B6)(e.content)),这里是否就是 content 参数解密还原出释义的算法位置呢?跟进到.B6中去看看,同样是 AES 算法,断住后就会发现,解密的位置确实是这里,out 经过了 Unicode 编码,key 为定值aahc3TfyfCEmER33

终结者:手机金山词霸安卓版离线语音:旅途

手机金山词霸安卓版离线语音,这个功能对我来说并不陌生。每每想起它,我都会被一种熟悉的温暖感所包围。它不仅是一款翻译软件,更是我生活中的得力助手,是我在旅途中的向导,是我学习中的良师益友。这款软件的离线语音功能,更是让我在无网络的环境下,依然能够畅快地使用,让我倍感便利和舒适。

回想起第一次接触手机金山词霸安卓版离线语音的情景,是在一次出国旅行中。当时正值异国他乡,语言不通的情况下,这款软件如同一座桥梁,将我与当地人沟通的障碍消除得无影无踪。通过简单的设置,我可以轻松切换不同语种的翻译,而且即便没有网络手机金山词霸安卓版离线语音,依然可以使用离线语音功能,让我在陌生的国度中感受到家的温暖。

手机金山词霸安卓版离线语音的魅力不仅在于其实用性,更在于其智能化的语音识别功能。无论是在喧嚣的街头、嘈杂的车站,亦或是安静的图书馆、温暖的家中,我都可以通过简单的语音录入,获取准确的翻译结果。这种智能化带给我的不仅是便利,更是一种与科技紧密相连的愉悦感受。

在学习和工作中手机金山词霸安卓版离线语音手机金山词霸安卓版离线语音更是我的得力助手。在阅读外文资料时,遇到生词不再是难题,只需一键录入,就能得到准确的释义和发音,让我在学习语言的道路上更加得心应手。在工作中,有时需要与外国客户沟通终结者:手机金山词霸安卓版离线语音:旅途,手机金山词霸安卓版离线语音的即时翻译功能,让沟通变得更加高效、便捷。

手机金山词霸安卓版离线语音,就像是我生活中的一位贴心小助手,时刻陪伴着我,为我解决语言障碍带来的困扰。它的智能化、便捷性和实用性,让我在各种场景下都能体会到科技带来的便利和快捷。无论是在旅途中、学习中还是工作中,手机金山词霸安卓版离线语音都是我不可或缺的利器,让我感受到科技发展给生活带来的美好变化。

热门手游排行榜