平时在渗透测试过程中,遇到传输的数据被js加密的比较多,这里我以有道翻译为例,来分析一下它的加密参数

前言

这是有道翻译的界面,我们随便输入一个,抓包分析

我们发现返回了一段json的字符串,内容就是翻译后的内容

当我们将"i"字段'pig'改为'dog'时,再次重放就会发现返回错误

这可能就是因为post传输的其他字段的值会有所不同,其他有些字段可能被js加密了,所以,我们如果想返回正确的结果,就必须要明白前端js加密的方法是什么。

具体分析

首先我们先比较一下,当传入不同的"i"值,其他字段哪些是有变化的

i: dog
from: AUTO
to: AUTO
smartresult: dict
client: fanyideskweb
salt: 15999987466773
sign: c7dc4265984a100efa0eedc21e7d1be4
lts: 1599998746677
bv: cc652a2ad669c22da983a705e3bca726
doctype: json
version: 2.1
keyfrom: fanyi.web
action: FY_BY_REALTlME i: pig
from: AUTO
to: AUTO
smartresult: dict
client: fanyideskweb
salt: 16000041380121
sign: cb9abd73ce41818afa783b0cae7b04c9
lts: 1600004138012
bv: cc652a2ad669c22da983a705e3bca726
doctype: json
version: 2.1
keyfrom: fanyi.web
action: FY_BY_REALTlME

对比发现,也就3个字段的内容不一样,简单分析一下,"salt"字段很明显就是加盐的意思,"sign"应该是某种加密以后生成的字符串,"lts"看着像是时间戳

我们先来搜索一下这些字段在js中的具体位置,然后具体分析(我们这里主要是跟踪"sign"字段)

大概加密的内容就在这块

var r = function(e) {
var t = n.md5(navigator.appVersion)
, r = "" + (new Date).getTime()
, i = r + parseInt(10 * Math.random(), 10);
return {
ts: r,
bv: t,
salt: i,
sign: n.md5("fanyideskweb" + e + i + "]BjuETDhU)zqSxf-=B#7m")
}
};

关键的加密点我已经用红色标注

1,我们先来看"ts",其实"ts"就是"lts"字段,将 (new Date).getTime() 放在控制台下运行一下发现它其实就是一个13位的时间戳

我们在python下跑一下此刻的时间戳

import time

print(time.time())

发现它是一个浮点型的,这里我们可以给它*1000然后取整得到我们的"lts"字段的内容

2,然后我们看一下"salt"字段,很简单,它其实就是刚刚得到的时间戳后面再加上一个10以内的随机整数(不包括10)

3,最后我们来看一下"sign"字段,它其实就是将"你要翻译的单词"+"sign的内容"+"他给你的那一串字符",最后再进行md5一下就ok了

分析完成,然后自己写脚本

最后贴上我写的脚本

 1 import requests
2 import time
3 import random
4 from hashlib import md5
5
6 headers = {
7 "Accept": "application/json, text/javascript, */*; q=0.01",
8 "Accept-Encoding": "gzip, deflate",
9 "Accept-Language": "zh-CN,zh;q=0.9",
10 "Connection": "keep-alive",
11 "Content-Length": "240",
12 "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
13 "Cookie": "OUTFOX_SEARCH_USER_ID_NCOO=1719917773.2504172; OUTFOX_SEARCH_USER_ID=\"1064702900@10.108.160.19\"; _ntes_nnid=b4177d72b2a1c46962196c06301101ab,1592922146778; JSESSIONID=aaaoDc-f2NpN1-vWZwhsx; ___rl__test__cookies=1599998746675",
14 "Host": "fanyi.youdao.com",
15 "Origin": "http://fanyi.youdao.com",
16 "Referer": "http://fanyi.youdao.com/",
17 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
18 "X-Requested-With": "XMLHttpRequest"
19 }
20 word = input("请输入要翻译的单词:")
21 ts = str(int(time.time()*1000))
22 salt = ts + str(random.randint(0,9))
23 str_ = "fanyideskweb" + word + salt + "]BjuETDhU)zqSxf-=B#7m"
24 md = md5()
25 md.update(str_.encode())
26 sign = md.hexdigest()
27 data = {
28 "i": word,
29 "from": "AUTO",
30 "to": "AUTO",
31 "smartresult": "dict",
32 "client": "fanyideskweb",
33 "salt": salt,
34 "sign": sign,
35 "lts": ts,
36 "bv": "cc652a2ad669c22da983a705e3bca726",
37 "doctype": "json",
38 "version": "2.1",
39 "keyfrom": "fanyi.web",
40 "action": "FY_BY_REALTlME"
41 }
42 html = requests.post(url="http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule", headers=headers, data=data).json()
43 print(html)

运行结果

这样我们就可以随意改动"i"字段的值,然后得到自己想要的结果

有道翻译js加密参数分析的更多相关文章

  1. python爬虫-有道翻译-js加密破解

    有道翻译-js加密破解 这是本地爬取的网址:http://fanyi.youdao.com/ 一.分析请求 我们在页面中输入:水果,翻译后的英文就是:fruit.请求携带的参数有很多,先将参数数据保存 ...

  2. 爬虫破解js加密(一) 有道词典js加密参数 sign破解

    在爬虫过程中,经常给服务器造成压力(比如耗尽CPU,内存,带宽等),为了减少不必要的访问(比如爬虫),网页开发者就发明了反爬虫技术. 常见的反爬虫技术有封ip,user_agent,字体库,js加密, ...

  3. js加密参数传给后台,后台解密base64

    前台js // base64加密开始 var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + " ...

  4. 如何用python“优雅的”调用有道翻译?

    前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js“斗争”的过程! 当然,本文仅 ...

  5. 爬虫实战2_有道翻译sign破解

    目标url 有道翻译 打开网站输入要翻译的内容,一一查找network发现数据返回json格式,红框就是我们的翻译结果 查看headers,发现返回结果的请求是post请求,且携带一大堆form_da ...

  6. java实现有道翻译爬虫

    我的博文地址 https://www.cnblogs.com/lingdurebing/p/11618902.html 使用的库 1.commons-codec 主要是为了加密,可以直接用java原生 ...

  7. Python爬虫教程-16-破解js加密实例(有道在线翻译)

    python爬虫教程-16-破解js加密实例(有道在线翻译) 在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent 图形验证,还有很难破解的滑动验证 js签 ...

  8. Python破解js加密实例(有道在线翻译)

    在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent 图形验证,还有很难破解的滑动验证 js签名验证,对传输数据进行加密处理 对于js加密经过加密传输的就是 ...

  9. 翻译小工具制作,Python简单破解有道JS加密!

    写这篇文章之前,我记得我以前好像公布一次.百度翻译的接口把版本号修改可以得到老版本,而老版本是没JS加密的,有道的呢也是一样的. ! 不过今天的教程不会这么low,咱们今天就老老实实把有道翻译的JS破 ...

随机推荐

  1. 项目集成seata和mybatis-plus冲突问题解决方案:(分页插件失效, 自动填充失效, 自己注入的id生成器失效 找不到mapper文件解决方案)

    项目集成seata和mybatis-plus,seata与mybatis-plus冲突问题(所有插件失效,自动填充失效,找不到mapper文件解决方案) 自动填充代码: package com.fro ...

  2. Matalb 正则表达式预处理数据(一)

    clc clear %% Step 1: 读入数据 phasedata = readtable('phasedata.txt'); %% Step 2: 提取数据 time = phasedata(: ...

  3. ciscn_2019_s_3 一道收获很多的题(进步大只能说明基础差)

    32位与64位 系统调用的区别: 1. 传参方式不同 2. 系统调用号 不同 3. 调用方式 不同 32位: 传参方式:首先将系统调用号 传入 eax,然后将参数 从左到右 依次存入 ebx,ecx, ...

  4. CF938A Word Correction 题解

    Content 有一个长度为 \(n\) 的,只包含小写字母的字符串,只要有两个元音字母相邻,就得删除后一个元音字母(\(\texttt{a,e,i,o,u,y}\) 中的一个),请求出最后得到的字符 ...

  5. zabbix保姆级安装教程

    安装步骤 1.进入官网选择下载的版本和服务器类型 官网地址:https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=cent ...

  6. re模块计算器作业

    1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )

  7. TCP 长连接保活机制&HTTP长连接设置

    TCP KeepAlive Wireshark抓包分析机制 -------------------------------- 如上图所示,TCP保活报文总是成对出现,包括TCP保活探测报文和TCP保活 ...

  8. js中字符串和数组的常用转换处理方法

    1.split("分割条件(正则表达式或者字符)") 字符串 ==> 数组 默认返回数组 (1) 将单词分割为字符 "hello".split(" ...

  9. 【九度OJ】题目1074:对称平方数 解题报告

    [九度OJ]题目1074:对称平方数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1074 题目描述: 打印所有不超过n( ...

  10. 【剑指Offer】反转链表 解题报告(Python)

    [剑指Offer]反转链表 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描 ...