看准网JS逆向&Python爬虫

文章声明

本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与文章作者无关,若有侵权,请联系我立即删除!

概要

- 很久之前就研究过该网站,时间过去那么久之后都快忘记这个网站是怎么搞的了,特此记录一下
- 该篇文章是基于企业搜索接口的分析
- 用到的工具 360浏览器

逆向目标

请求参数 b, kiv
响应数据

在这里插入图片描述
在这里插入图片描述

开始整活

抓包

打开F12 选择XHR请求 定位到搜索数据包

在这里插入图片描述

参数定位

  • 对于这种响应数据是密文的我做过很多个,其实大多数加密类型都是 AES/DES 这种对称加密,不然的话怎么展示解密后的数据呢?

  • 直接搜索参数 kiv, 搜出来很多,但都是在一个js文件中,点击任意一个进入js中

    在这里插入图片描述

  • 进入到文件中后继续搜索kiv,这里搜索到了15个,把每一个都打上断点,然后页面中触发搜索操作

  • 最终程序断在了这里,并且另外一个加密参数b也在旁边, 然后把其他没用的断点取消掉

    在这里插入图片描述

  • 往上找kiv是如何生成的,已知kiv是s赋值的,就找s是在哪里生成的,往上分析后定位到这里

在这里插入图片描述

  • 这里有两处是赋值给s的但是你尝试几次后就会发现真正赋值的其实就是后面这个s=(0,M._A)(), 进入该函数就会发现该函数其实就是返回一个随机字符串,那么既然是随机的那我们就给他固定一个值

    在这里插入图片描述
    在这里插入图片描述

  • 再来看看b是如何生成的,老样子b也是t赋值的,定位到该位置并打断点,分析后可以发现最终返回的值是**l(e, t.iv)**函数执行的结果,而传递的参数也是与搜索内容相关,进入到l函数中并打断点,可以发现其实就是一个标准的AES加密算法

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 既然知道是AES算法了, 那他的key(秘钥)和iv(偏移量)是什么呢, 继续调试往下走,然后控制台输出查看加密的明文和key是什么,而iv可以很明显的看到就是上面的kiv参数

    在这里插入图片描述

  • 由控制台可以看出加密的明文就是我们搜索相关的数据,可是key怎么有点看不懂呢?,怎么转成字符串呢?这里教你一招

    - 使用当前AES前面的对象o下面的方法就可以实现
    - o.enc.Utf8.stringify(n.key) --> 就会得到加密的秘钥,我这里就不显示了,小伙们可以自己实现
    - 其实细心的小伙伴会发现 key是对象n的属性,并且加密模式和填充模式都是n的属性,我们直接定位到n的位置就可以看到明文了,这里我直接放图片了
    

在这里插入图片描述
在这里插入图片描述

  • 既然key和iv还有明文我们都知道了,自然也要验证一个结果,当前测试加密网站

    https://tool.lmeee.com/jiami/aes
    经过验证之后发现结果能对上,但其实这还没结束,因为最终的b参数是加密过后又进行的replace操作
    

    在这里插入图片描述

  • 至此参数就分析结束了

响应数据解密

- 这一步更是简单,因为解密和加密是对立的,相关的加密参数都已了解,接下里就是解密操作了,同样是利用上面那个网站进行操作
- 复制密文,填入相关key,iv解密即可

在这里插入图片描述

JS实现

// 声明.我没有测试,大致模板就是这样,如果网站的加密结果和这个结果不一样,就在下面代码的基础上修改一下即可
// 安装插件
npm install crypto-js
const CryptoJS = require("crypto-js");

let key = CryptoJS.enc.Utf8.parse(key); 
let iv = CryptoJS.enc.Utf8.parse(iv); 
let info = {
    mode: CryptoJS.mode.CBC,
    iv: iv,
    padding: CryptoJS.pad.Pkcs7
}
// 加密
let encrypt = CryptoJS.AES.encrypt('明文', key,info);
let Data = encrypt.toString(CryptoJS.enc.Utf8);
console.log(Data);

 
 
//解密
let decrypte  = CryptoJS.AES.decrypt('密文数据', key, info);
let text = decrypte.toString(CryptoJS.enc.Utf8);
console.log(text);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dh_浩开玩笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值