js逆向案例
目录
- 零、概述
- 一、请求参数|Cookie|Referer校验(⭐)
- 1、案例1_有道翻译
- 2、案例2_百度翻译
- 二、参数响应如何获取AES、DES、RSA(⭐)
- 1、案例3_建筑市场_AES
- 2、案例4_毛毛租_AES
- 3、案例5_翼龙登录_DES
- 4、案例6_房天下登录_RSA
- 三、其它js混淆(⭐⭐)
- 下一篇文章待发布
零、概述
- 难度系数一颗星,简单的js逆向,适合初级新手练习,每个案例1小时内可完成
- 涉及到md5、aes、des、rsa,本地需安装node环境,然后再安装crypto-js库:
- base64、des、aes、rsa、eval(232, 232, 232); background: rgb(249, 249, 249);">严禁带着抓取目的对网站进行研究或对网站造成不稳定等影响,请遵循网站所规定的一切robots.txt协议,建议仅限学习练习
一、请求参数|Cookie|Referer校验(⭐)
1、案例1_有道翻译
(1)案例网址: 点击网址,execjs调用或python还原逻辑
(2)案例反爬点:
请求参数salt、sign、Its、bv可变,请求头cookie和referer反爬校验(3)案例分析:采用salt:关键词搜索精准定位js文件
- 定位到js文件,通过搜索关键词发现r = v.generateSaltSign(n)这一段js即是生成参数salt、sign、Its、bv的方法
- 点击进入 v.generateSaltSign(n)这个方法,
,有两种可以解析加密参数,1种是通过直接扣出这段js通过execjs来解析,另1种是通过python还原js逻辑解析;由于该段js逻辑加密一目了然,所以我们选择python还原js逻辑进行解析
- cookie、Referer校验,其中cookie是由首页Set-Cookie而得,referer直接加在header里即可,较简单
- 最终代码、待上传
2、案例2_百度翻译
- (1)案例网址: 点击网址,execjs调用
- (2)案例反爬点:
- (3)案例分析:采用sign:关键词搜索精准定位js文件,直接找到sign、token生成位置
- 点击进入f(n),找到sign生成的js,其中这段js差i参数,i就是window.gtk为定值,还差个n函数,点击扣出即可,这里js较长,直接用execjs调用解析即可
- cookie、token,toke可以从页面响应里直接搜到;逻辑上是第一次请求首页拿到cookie,再带着cookie进行第二次请求,正则提取响应里面的token即可,第三次请求即可正常翻译
- 最终代码、待上传
二、参数响应加密解密AES、DES、RSA(⭐)
1、案例3_建筑市场_AES
(1)案例网址: 点击网址,execjs调用,或者python还原
(2)案例反爬点:
Cryptojs_AES_CBC加密, 响应加密返回的hexStr(3)案例分析:aes解密既可以python还原也可以通过js调用
方法1:选择python直接还原aes,直接搜索’decrypt’,找到key和iv,进行还原
方法2:js还原,通过XHR断点来定位, 翻页断点看堆栈右侧栏的堆栈Call Stack,往堆栈前面的方法撒鱼式打断点,然后调试
逐步调试,直接找到关键方法,熟悉加密的,一眼就能看出这是cryptojs里面的aes之cbc加密模式,根据js的逻辑enc.Hex.parse,可以判断出响应式16进制的字符串。选择用python的aes库还原
本案例不用扣js,对于CryptoJS加密解密的了解,直接找出key,iv,再确定加密模式,然后写js代码即可。aes校验工具
最终代码、待上传
2、案例4_毛毛租_AES
(1)案例网址: 点击网址,execjs调用或python直接还原
(2)案例反爬点:
Cryptojs_AES_CBC加密, 响应加密返回的base64Str,请求参数也是相同加密(3)案例分析:通过搜索词encrypt断点来定位,直接找到js关键加密解密的位置,此为cryptojs里面的aes之cbc加密解密模式,响应是base64字符串(选择用python的aes库还原)
- aes加密,直接找key,iv,mode方式,用python还原即可
- 本案例既可以用js,也可以用python直接还原加密解密
- 最终代码、待上传
3、案例5_翼龙登录_DES
- (1) 案例网址:点击网址
- (2)案例反爬点:des加密登录密码参数,暂不做图形验证
- (3)案例分析:直接搜索关键词encrypt精准定位,扣js或者python还原都可以
- 最终代码、待上传
4、案例6_房天下登录_RSA
(1)案例网址: 点击网址,execjs调用或python直接还原
(2)案例反爬点:
rsa加密登录密码参数、referer校验(3)案例分析:方法1:由于已经知道是RSA加密,可以选择用python还原,对于python还原的RSA有两种方式,一种是js对应的是setPublicKey已事先生成,另一种是new RSAKeyPair的方式。也可以扣js
- 方法1: 尝试new RSAKeyPair搜索找到类公钥复制下来即可,用python还原测试成功
- 尝试直接搜索setPublicKey找到公钥,用python还原(此种方法实践后发现与网页生成结果不一致,舍弃)。
- 方法2:扣js通过搜索关键词pwd:,找到关键位置
- 点击进入encryptedString方法,直接将RSA整个js文件扣下来,其中key_to_encode也通过全局搜索,扣出相应js代码
- 本案例直接用js调用加密,拼接js代码,运行如下;
- 最终代码、待上传