某翻译平台翻译接口逆向之加解密参数刨析

2024-04-24 02:04

本文主要是介绍某翻译平台翻译接口逆向之加解密参数刨析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上文链接

某翻译平台翻译接口逆向之webpack学习


分析参数

加密参数: ${t}

function S(e, t) {return _(`client=${u}&mysticTime=${e}&product=${d}&key=${t}`)
}
function k(e, t) {const n = (new Date).getTime();return {sign: S(n, e),client: u,product: d,appVersion: p,vendor: g,pointParam: m,mysticTime: n,keyfrom: f,mid: h,screen: A,model: v,network: b,abtest: T,yduuid: t || "abcdefg"}
}

线上跟栈找到关键位置

fetchTextTranslateSecretKey: async({commit: e},t)=>{const n = "webfanyi-key-getter", a = "asdjnjfenknafdfsdfsd";return new Promise((t=>{o.A.getTextTranslateSecretKey({keyid: n}, a).then((n=>{0 === n.code && n.data.secretKey && (e("UPDATE_SECRET_KEY", n.data.secretKey),e("UPDATE_DECODE_KEY", n.data.aesKey),e("UPDATE_DECODE_IV", n.data.aesIv),t(n.data.secretKey))})).catch((e=>{}))}))
}

发现新请求接口

aHR0cHM6Ly9kaWN0LnlvdWRhby5jb20vd2VidHJhbnNsYXRlL2tleQ==


逆向网址

 aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLw==


 

逆向链接

aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLyMv

逆向接口 

aHR0cHM6Ly9kaWN0LnlvdWRhby5jb20vd2VidHJhbnNsYXRlL2tleQ==

 

逆向过程 

请求方式

        GET

逆向参数

        sign 7ce3cf3d4cf7ded169f40a8562b2722b

        yduuid abcdefg 

过程分析

上文逆向链接:某翻译平台翻译接口逆向之webpack学习

可以看出该接口进行加密参数构建时候参数【${t}】=== 'asdjnjfenknafdfsdfsd'

此接口返回数据:

secretKey  ===  ${t}                  // 加密参数

aesKey      ===  t                       // AES 解密key

aesIv         === n                      // AES 解密iv

代码结构

Python

def getSign( param, key ):"""获取加密参数 sign"""with open( 'translation.js', 'r', encoding='utf-8', errors='ignore' ) as f:js_tamp = f.read()jsDrive = execjs.compile( js_tamp )data = {'client': param[ 'client'] ,'time': iTime,'product': param[ 'product' ],'key': key}sign = jsDrive.call( 'getSign', data )return sign
def getAesInfo():"""获取加密key及解密key与iv数据"""query = {'keyid': 'webfanyi-key-getter','client': 'fanyideskweb','product': 'webfanyi','appVersion': '1.0.0','vendor': 'web','pointParam': 'client,mysticTime,product','mysticTime': iTime,'keyfrom': 'fanyi.web','mid': 1,'screen': 1,'model': 1,'network': 'wifi','abtest': 0,'yduuid': '2f9fca73d004ffed88121a15b5e4b717'}key = 'asdjnjfenknafdfsdfsd'query[ 'sign']  = getSign( query, key )response = requests.get( url, headers=headers, params=query )if response.status_code == 200:result = json.loads( response.text )return { 'key': result['data']['secretKey'], 'aesKey': result['data']['aesKey'], 'aesIv': result['data']['aesIv'] }else:print( response )print( response.text )

def getTranslation( trans, keyInfo ):"""请求翻译接口并对结果解密"""data = {'i': trans,'from': 'auto','to': '','domain': 0,'dictResult': 'true','keyid': 'webfanyi','client': 'fanyideskweb','product': 'webfanyi','appVersion': '1.0.0','vendor': 'web','pointParam': 'client,mysticTime,product','mysticTime': iTime,'keyfrom': 'fanyi.web','mid': 1,'screen': 1,'model': 1,'network': 'wifi','abtest': 0,'yduuid': '2f9fca73d004ffed88121a15b5e4b717',}data['sign'] = getSign( data, keyInfo['key'] )response = requests.post( url, headers=headers, data=data )if response.status_code == 200:with open( 'translation.js', 'r', encoding='utf-8', errors='ignore' ) as f:js_tamp = f.read()jsDrive = execjs.compile(js_tamp)arg = {'t': keyInfo['aesKey'],'n': keyInfo['aesIv']}info = jsDrive.call('aesDecrypt', response.text, arg )print( info )else:print( response )print( response.text )

 

 结果验证

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time   : 2024/4/22 18:38
# @Author : Carey
# @File : translation.py
# @Description
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")import time
import json
import requests
import execjsiTime = round( time.time()*1000 )headers = {'Accept': 'application/json, text/plain, */*','Accept-Encoding': 'gzip, deflate, br, zstd','Accept-Language': 'en,zh-CN;q=0.9,zh;q=0.8,ja;q=0.7','Content-Type': 'application/x-www-form-urlencoded','Origin': 'https://fanyi.youdao.com','Referer': 'https://fanyi.youdao.com/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36','Cookie': 'OUTFOX_SEARCH_USER_ID=2832382@117.22.144.72; OUTFOX_SEARCH_USER_ID_NCOO=1947820840.9198918; DICT_DOCTRANS_SESSION_ID=YWRiYTJjYmUtNmMwZC00MTA4LTgyMWItOTBmMDQ5MzUzZmI2'
}def getSign( param, key ):"""获取加密参数 sign"""with open( 'translation.js', 'r', encoding='utf-8', errors='ignore' ) as f:js_tamp = f.read()jsDrive = execjs.compile( js_tamp )data = {'client': param[ 'client'] ,'time': iTime,'product': param[ 'product' ],'key': key}sign = jsDrive.call( 'getSign', data )return signdef getAesInfo():"""获取加密key及解密key与iv数据"""query = {'keyid': 'webfanyi-key-getter','client': 'fanyideskweb','product': 'webfanyi','appVersion': '1.0.0','vendor': 'web','pointParam': 'client,mysticTime,product','mysticTime': iTime,'keyfrom': 'fanyi.web','mid': 1,'screen': 1,'model': 1,'network': 'wifi','abtest': 0,'yduuid': '2f9fca73d004ffed88121a15b5e4b717'}key = 'asdjnjfenknafdfsdfsd'query[ 'sign']  = getSign( query, key )response = requests.get( url, headers=headers, params=query )if response.status_code == 200:result = json.loads( response.text )return { 'key': result['data']['secretKey'], 'aesKey': result['data']['aesKey'], 'aesIv': result['data']['aesIv'] }else:print( response )print( response.text )def getTranslation( trans, keyInfo ):"""请求翻译接口并对结果解密"""data = {'i': trans,'from': 'auto','to': '','domain': 0,'dictResult': 'true','keyid': 'webfanyi','client': 'fanyideskweb','product': 'webfanyi','appVersion': '1.0.0','vendor': 'web','pointParam': 'client,mysticTime,product','mysticTime': iTime,'keyfrom': 'fanyi.web','mid': 1,'screen': 1,'model': 1,'network': 'wifi','abtest': 0,'yduuid': '2f9fca73d004ffed88121a15b5e4b717',}data['sign'] = getSign( data, keyInfo['key'] )response = requests.post( url, headers=headers, data=data )if response.status_code == 200:with open( 'translation.js', 'r', encoding='utf-8', errors='ignore' ) as f:js_tamp = f.read()jsDrive = execjs.compile(js_tamp)arg = {'t': keyInfo['aesKey'],'n': keyInfo['aesIv']}info = jsDrive.call('aesDecrypt', response.text, arg )print( arg )print( info )else:print( response )print( response.text )if __name__ == '__main__':keyInfo = getAesInfo()getTranslation( '你叫什么名字', keyInfo )

这篇关于某翻译平台翻译接口逆向之加解密参数刨析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930485

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。