Python JS逆向篇(二)有道翻译
创始人
2024-06-02 13:19:26
0

Python JS逆向篇(二)有道翻译

  • 逆向sign参数
    • js实现
    • py实现
  • 解密返回结果
    • js实现
    • py未实现
  • 实战

逆向主题:有道翻译sign参数及解密返回结果。
(注:文章所涉及内容只做学习参考交流,不做除此之外的任何其它用途!!!)

逆向sign参数

首先,打开浏览器抓包工具,进行页面刷新,全局搜索sign,在资源面板中打开js文件。步骤如下:
在这里插入图片描述


然后,Ctrl+F,搜索sign,发现只有一处(很nice),找到并打上断点。

在这里插入图片描述


开始在页面进行请求,断点 调试数据。
在这里插入图片描述


已经拦截到了, 然后就是一步步调式了。
1、进入v(t, e)函数,
2、进入g(e)函数,
3、进入f(e)函数,就进行加密了。
在这里插入图片描述


到此,sign参数加密就完成了。如果不知道c.a.createHash(“md5”).update(e.toString()).digest(“hex”)这个算法是怎么实现的,直接复制去百度搜索,不要跟进去一步一步扣代码!!!因为,有现成的js库,直接调用即可。


js实现

import execjs
def get_sign(timestamp):js_code = '''const crypto = require('crypto');const l = 'fanyideskweb',d = 'webfanyi';function g(e) {return crypto.createHash("md5").update(e.toString()).digest("hex")}function v(e, t) {return g(`client=${l}&mysticTime=${e}&product=${d}&key=${t}`)}'''e = 'fsdsogkndfokasodnaso'return execjs.compile(js_code).call('v', timestamp, e)if __name__ == '__main__':print(get_sign(1678674935386))

py实现

import hashlibdef get_sign(timestamp):msg = f'client=fanyideskweb&mysticTime={timestamp}&product=webfanyi&key=fsdsogkndfokasodnaso'return hashlib.md5(msg.encode('utf-8')).hexdigest()if __name__ == '__main__':print(get_sign(1678674935386))

在这里插入图片描述


解密返回结果

找到刚刚请求抓到的这个包,然后进去(当然,我这里挨着找的,所以在③处直接就进去了)。

在这里插入图片描述

打上断点,发送请求,e.data就是返回加密结果。
在这里插入图片描述


单步调试跟进去,如下图:
在这里插入图片描述


nn[“a”].decodeData(o, an[“a”].state.text.decodeKey, an[“a”].state.text.decodeIv)

参数o:加密数据
参数an[“a”].state.text.decodeKey和an[“a”].state.text.decodeIv:代码中写死

继续跟进去,这部分代码执行完就得到了最终结果,完成!!!
在这里插入图片描述

注意:里面的方法也都是可以由js的crypto解密库所实现,所以也不用自己跟进每个方法里面去扣代码逻辑!如果不知道怎么写js代码,就如同上面所说,直接复制每行代码去问度娘就好!!!


js实现

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs
# 需要node环境!!!
# 如果执行if分支,则需注意导入包的顺序,这样才能进行定义编码,可能不会报错
# 如果执行else分支,则只需要导入import subprocess即可def decrypt_data(msg, select=True):if select:js_code = '''const crypto = require('crypto');var o = 'ydsecret://query/key/B*RGygVywfNBwpmBaZg*WT7SIOUP2T0C9WHMZN39j^DAdaZhAnxvGcCY6VYFwnHl'var n = 'ydsecret://query/iv/C@lZe2YzHtZ2CYgaXKSVfsb7Y4QWHjITPPZ0nQp87fBeJ!Iv6v^6fvi2WN@bYpJ4'function decrypt_data(t) {const a = crypto.createHash('md5').update(o).digest(), r = crypto.createHash('md5').update(n).digest(), i = crypto.createDecipheriv("aes-128-cbc", a, r);let s = i.update(t, "base64", "utf-8");return s += i.final("utf-8"),s}'''return execjs.compile(js_code).call('decrypt_data', msg)else:return subprocess.Popen(['node', './js实现.js', msg], stdout=subprocess.PIPE).stdout.read()msg = 'Z21kD9ZK1ke6ugku2ccWuwRmpItPkRr5XcmzOgAKD0GcaHTZL9kyNKkN2aYY6yiOmuh9nNfHAP8nmQ1U8cWs8AsPk-qsI0Oi3S_EIBseAYim7wIT81haR5hYOoRK649xgJV2OCWi8mdYBjL3nNw_m22LYYPt_dDmdoFiMiMwddUtdr42g1o9A-MqBEvxSK-H'
print(decrypt_data(msg))

在这里插入图片描述


py未实现


用py写法没有实现,如果有大佬实现了,欢迎在评论区中贴出,先感谢一波!!!

实战

import requests, hashlib, time, random
from js实现 import decrypt_dataclass YouDaoFanYi:def __init__(self):self.session = requests.Session()self.headers = {"Accept": "application/json, text/plain, */*","Accept-Language": "zh-CN,zh;q=0.9","Cache-Control": "no-cache","Connection": "keep-alive","Content-Type": "application/x-www-form-urlencoded","Origin": "https://fanyi.youdao.com","Pragma": "no-cache","Referer": "https://fanyi.youdao.com/","Sec-Fetch-Dest": "empty","Sec-Fetch-Mode": "cors","Sec-Fetch-Site": "same-site","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36","sec-ch-ua": "\"Chromium\";v=\"110\", \"Not A(Brand\";v=\"24\", \"Google Chrome\";v=\"110\"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "\"Windows\""}self.get_cookies()def get_cookies(self):try:_ = 2147483647 * random.random()cookies = {"OUTFOX_SEARCH_USER_ID_NCOO": str(_),}response = requests.get(f"https://rlogs.youdao.com/rlog.php?_npid=fanyiweb&_ncat=event"f"&_ncoo={_}&_ntms={str(int(time.time()*1000))}"f"&show=text_translation_result", headers=self.headers, cookies=cookies)self.cookies = {"search-popup-show": "9-7","OUTFOX_SEARCH_USER_ID_NCOO": str(_),"OUTFOX_SEARCH_USER_ID": response.cookies.values()[0]}except Exception as e:raise Exception("cookies获取失败!!!程序退出>>>异常信息:", e)def get_sign(self):msg = f'client=fanyideskweb&mysticTime={self.timestamp}&product=webfanyi&key=fsdsogkndfokasodnaso'return hashlib.md5(msg.encode('utf-8')).hexdigest()def get_data(self):self.timestamp = str(int(time.time()*1000))data = {"i": self.txt,"from": "auto","to": "","domain": "0","dictResult": "true","keyid": "webfanyi","sign": self.get_sign(),"client": "fanyideskweb","product": "webfanyi","appVersion": "1.0.0","vendor": "web","pointParam": "client,mysticTime,product","mysticTime": self.timestamp,"keyfrom": "fanyi.web"}text = self.session.post("https://dict.youdao.com/webtranslate", headers=self.headers,cookies=self.cookies, data=data).textself.res_data = decrypt_data(text)def parse_data(self):print("结果>>>",self.res_data)print()def main(self):while True:self.txt = input("输入要翻译的文本(0退出):").strip()if self.txt == '0': breakself.get_data()self.parse_data()self.session.close()if __name__ == '__main__':YouDaoFanYi().main()

相关内容

热门资讯

5月19日24时起,国内汽、柴... 新京报讯 据发改委消息,根据近期国际市场油价变化情况,按照现行成品油价格形成机制,自2025年5月1...
一汽富维:与吉林省签约仿生机器... 投资者提问:董秘,请问公司的机器人业务目前进展如何了?董秘回答(一汽富维SH600742):您好,非...
陕西米脂农商行被罚50万元:贷...   5月19日金融一线消息,国家金融监督管理总局榆林监管分局行政处罚信息公开表显示,陕西米脂农村商业...
特朗普集团考虑在越南胡志明市建...   路透社看到的一份越南政府文件显示,特朗普集团及其当地合作伙伴正探索在越南商业中心胡志明市建造一座...
5.15全国投资者保护日丨关于... (来源:神基太保)关于防范虚假网络投资理财类诈骗的风险提示当前,虚假网络投资理财类诈骗案件频发,损害...
行业观察:“消费分化”趋势露头...   随着居民生活习惯加速迭代,我国生活用纸与卫生巾行业驶入高速发展轨道。千亿级市场规模持续扩容,一场...
兰格型材日盘点:需求未见改善 ... 兰格型材日盘点:需求未见改善 价格小幅回落   19日早...
一汽富维:一汽红旗汽车配件由公... 投资者提问:董秘,一汽红旗汽车跟大货车相撞,结果大货车支离破碎,一汽红旗完好无损。请问一汽红旗的汽车...
强风暴席卷美国多州致28人遇难... 本文转自【央视新闻客户端】;近期,美国多地遭遇强风暴侵袭。据美国广播公司当地时间18日报道,截至目前...
伊朗外交部:任何情况下铀浓缩活... 本文转自【央视新闻客户端】;当地时间19日,伊朗外交部发言人巴加埃在新闻发布会上表示,铀浓缩活动是伊...
3.25亿主力资金净流入,深圳... 截至5月19日收盘,深圳国企改革概念上涨2.76%,位居概念板块涨幅第6,板块内,31股上涨,盐田港...
筹码新动向:200股筹码趋向集... 551只股公布截至5月10日最新股东户数,相比上期股东户数下降的有200只,降幅居前的是*ST声迅(...
丰茂股份5月19日龙虎榜数据 丰茂股份今日涨停,全天换手率43.82%,成交额5.43亿元,振幅18.75%。龙虎榜数据显示,机构...
龙虎榜|交大昂立涨停,高盛(中... 5月19日,交大昂立(维权)涨停,日振幅值达17.22%,日换手率达8.82%,收盘价7.92元,成...
温州银行:青春执笔书写创新篇章 转自:温州新闻网温州网讯 (通讯员 章悦) 山河不负追梦人,奋斗永远最青春。在温州这片洋溢着青春朝气...
坤泰股份(001260.SZ)... 格隆汇5月19日丨坤泰股份(001260.SZ)于近期投资者关系活动表示,汽车行业向电动化、智能化的...
空管系统出故障 巴黎第二大机场... 本文转自【央视新闻客户端】;法国巴黎奥利机场的空中交通管制系统18日出现故障,致使大量航班延误或取消...
2025年第九师白杨市“云上花... 5月17日,九师白杨市“云上花海 红色白杨”文化旅游节暨“5·19中国旅游日”系列活动在师市世纪广场...
外交部回应印巴局势:愿意继续同... 【环球时报-环球网报道 记者 乌元春】在5月19日外交部例行记者会上,外交部发言人毛宁在回应近期印巴...
非法收受2.61亿余元,陕西省... 来源:​人民日报客户端2025年5月19日,广西壮族自治区南宁市中级人民法院一审公开宣判全国政协人口...