JS逆向实战9——cookies DES加密混淆
cookie加密 DES 混淆
目标网站:aHR0cHM6Ly90bGNoZW1zaG9wLnlvdXpoaWNhaS5jb20vbWFpbi90ZW5kP05vdGljZUNhdGVJZD0xJk5vdGljZVR5cGU9MQ==
需求分析
今天在爬取网站的时候发现个很有意思的网站,在列表页不需要cookie,但是访问详情页反而需要cookie
分析代码
所以我们访问下这个详情页链接
aHR0cHM6Ly93d3cueW91emhpY2FpLmNvbS9uZC9lNzVlNTY1Yi03MWZmLTQ3MzktYTY3Zi0yMGM3YzQzZDI4NmQtMS5odG1s
我们通过FD抓包

可以发现 返回我们两个请求
第一个请求:状态码203 内容如右图所示 是一堆JS 并且第一次返回 返回一个set-cookie
第二个请求:状态码为200,内容为我们想要的详情页。
js调试
然后我们先格式化好第一个请求的JS代码 得到如下视图

从文件中我们可以看到 mode padding ECB这种字眼,其实已经可以猜到是DES加密了
至于为啥 可以看我之前的一篇文章:https://www.cnblogs.com/zichliang/p/16857694.html
然后我们把文件丢到浏览器中执行

直接这么执行就可以了
然后会报两个错 如下图所示

我们把错误改好(改错很简单,错误代码删掉就行)
然后我们执行JS
然后我们到最底下把最下面的执行语句封装成一个函数

然后去执行会报一个 window is not defined
还是那句好 错了就删 再把 window is not defined 删掉,
然后这里又会报一个CryptoJS is not defined
这里提供两个解决方案:
- npm install 装一个
这个就没什么好讲的,直接执行命令:
npm install crypto-js
然后 require这个库 使用就行了
- 直接用这里混淆好的
首先找到parse

然后我们重新给这个值赋值即可
注意 这个都在一个自执行函数里面 所以我们赋值也得包在这个函数里才行。

然后再执行我们的代码
这里又会报一个

这个我们不确定 所以我们拉到浏览器里运行一下看看

可以发现 这个只是个赋值语句不要也罢。重要的是CK
封装JS
我们已经调试完了 然后只要封装好函数执行就行了

封装成这个鸟样就行了。
然后我们发现有两个值是动态变化的,分别是a和b

我们需要正则把这个值提出来 然后赋给执行函数
最后是这样的

代码:
# -*- coding: utf-8 -*-
# @Time : 2022/11/28 11:13
# @Author : lzc
# @Email : hybpjx@163.com
# @File : THYZCBuss.py
# @Software: PyCharm
# @blog : https://www.cnblogs.com/zichliang
import re
import execjs
import requests
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
}
# 自己解密
url = "aHR0cHM6Ly93d3cueW91emhpY2FpLmNvbS9uZC9lNzVlNTY1Yi03MWZmLTQ3MzktYTY3Zi0yMGM3YzQzZDI4NmQtMS5odG1s"
response = requests.get(url, headers=headers)
cookies = response.cookies.get_dict()
args_list = re.findall("var a= '(.*?)';var b = '(.*?)';", response.text)[0]
args_a = args_list[0]
args_b = args_list[1]
node = execjs.get()
with open('c.js', encoding='utf-8') as f:
js_code = f.read()
ctx = node.compile(js_code)
data1 = ctx.eval(f'get_ck("{args_a}","{args_b}")')
new_cookies = {
**cookies,
"spvrscode": data1
}
response = requests.get(url, headers=headers, cookies=new_cookies)
print(response.text)
js的话自己扣吧 非常简单 这里就不贴了,太长了。
JS逆向实战9——cookies DES加密混淆的更多相关文章
- JS逆向实战2--cookie-AcwScV2加密—某招标信息网
cookies的获取 首先拿到第一次访问原链接 拿到acw_tc的值,然后放到session中去 再用这个session再次访问原链接拿到js加载的加密的真实数据.用了一些反混淆. 最后获取这个数据中 ...
- 兄弟,别再爬妹子图了整点JS逆向吧--陆金所密码加密破解
好久没有写爬虫文章了,今晚上得空看了一下陆金所登录密码加密,这个网站js加密代码不难,适合练手,篇幅有限,完整js代码我放在了这里从今天开始种树,不废话,直接开整. 前戏热身 打开陆金所网站,点击到登 ...
- JS逆向实战4--cookie——__jsl_clearance_s 生成
分析 网站返回状态码521,从浏览器抓包来看,浏览器一共对此地址请求了三次(中间是设置cookie的过程): 第一次请求:网站返回的响应状态码为 521,响应返回的为经过 混淆的 JS 代码:但是这些 ...
- JS逆向实战6-- x轴 y轴 过点触验证码
点触验证码是一种常见的反爬手段 解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间的对应关系. 这 ...
- JS逆向实战3——AESCBC 模式解密
爬取某省公共资源交易中心 通过抓包数据可知 这个data是我们所需要的数据,但是已经通过加密隐藏起来了 分析 首先这是个json文件,我们可以用请求参数一个一个搜 但是由于我们已经知道了这是个json ...
- JS逆向实战5--JWT TOKEN x_sign参数
什么是JWT JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式).它是在Web环境下 ...
- JS逆向实战1——某省阳光采购服务平台
分析 其实这个网站基本没有用到过什么逆向,就是简单的图片base64加密 然后把连接变成2进制存成文件 然后用ocr去识别即可 !! 注意 在获取图片连接 和对列表页发起请求时一定要用一个请求,也就是 ...
- JS逆向实战8——某网实战(基于golang-colly)
其实本章算不上逆向教程 只是介绍golang的colly框架而已 列表页分析 根据关键字搜索 通过抓包分析可知 下一页所请求的参数如下 上图标红的代表所需参数 所以其实我们真正需要的也就是Search ...
- JS逆向实战7-- 某省在线审批网站params 随机生成
参数分析 我们首先通过抓包 发现这个就是我们所需要的数据 然后我们通过fidder 发起请求 结果: 通过我们反复测试 发现这个params的参数是每次请求中都会变化的 断点查找 我们通过 这个t参数 ...
- DES加密解密 与 Cookie的封装(C#与js互相加密解密)
2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密) 这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方 ...
随机推荐
- AVL Tree (1) - Definition, find and Rotation
1. 定义 (15-1) [AVL tree]: 一棵空二叉树是 AVL tree; 若 T 是一棵非空二叉树, 则 T 满足以下两个条件时, T 是一棵 AVL tree: T_LeftSubtre ...
- 学会Linux,看完这篇就行了!
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/797ab07d.html 你好,我是测试蔡坨坨. 对于测试同学来说,Linux基本属于必学必会内容,招聘要求中基本都会出现L ...
- ProxySQL 使用情况报错问题汇总及解决办法
1.ProxySQL Error: connection is locked to hostgroup 2 but trying to reach hostgroup 1 解决方案:登上proxysq ...
- Kubernetes 监控--Prometheus
在早期的版本中 Kubernetes 提供了 heapster.influxDB.grafana 的组合来监控系统,在现在的版本中已经移除掉了 heapster,现在更加流行的监控工具是 Promet ...
- MinIO监控指南
官方文档地址:http://docs.minio.org.cn/docs/master/minio-monitoring-guide MinIO服务器通过端点公开监视数据.监视工具可以从这些端点中选择 ...
- 第四章:Django表单 - 2:Django表单API详解
声明:以下的Form.表单等术语都指的的广义的Django表单. Form要么是绑定了数据的,要么是未绑定数据的. 如果是绑定的,那么它能够验证数据,并渲染表单及其数据,然后生成HTML表单.如果未绑 ...
- POJ2104 K-th number (整体二分)
刚学了整体二分,用这种解法来解决这道题. 首先对于每个询问时可以二分解决的,这也是可以使用整体二分的前提.将原来的序列看成是插入操作,和询问操作和在一起根据值域进行二分.用树状数组来检验二分值. 1 ...
- qiankun+vue,为什么我的子应用的子路由老是跳404?这么解决
主要解决子应用内部跳转路由时,跳到404页的问题 你能搜这个,我姑且认为你基本配置已经好了,而且主跳子的一级路由是正常的,请往下看 忘说了,我的主应用和子应用都是Vue 主应用跳子应用都正常,为什么子 ...
- 驱动开发:内核枚举IoTimer定时器
今天继续分享内核枚举系列知识,这次我们来学习如何通过代码的方式枚举内核IoTimer定时器,内核定时器其实就是在内核中实现的时钟,该定时器的枚举非常简单,因为在IoInitializeTimer初始化 ...
- Vue3 SFC 和 TSX 方式调用子组件中的函数
在开发中会遇到这样的需求:获取子组件的引用,并调用子组件中定义的方法.如封装了一个表单组件,在父组件中需要调用这个表单组件的引用,并调用这个表单组件的校验表单函数或重置表单函数.要实现这个功能,首先要 ...