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的密文(反之也实现了) 使用的代码如下,非常方 ...
随机推荐
- 一文学会Spring JDBC 使用
Spring JDBC 1.JDBC JDBC 就是 数据库开发 操作的 代名词,因为只要是现代商业项目的开发那么一定是离不开 数据库 的,不管你搞的是什么,只要是想使用动态的开发结构,那么一定就是 ...
- 2022-9-5 JavaSE note
Java SE 1.IDEA基本操作 psvm + 回车 : main() 方法声明 sout + 回车 : = System.out.println(); Ctrl + D : 把当前行复制到下一行 ...
- Python数据科学手册-Pandas:数值运算方法
Numpy 的基本能力之一是快速对每个元素进行运算 Pandas 继承了Numpy的功能,也实现了一些高效技巧. 对于1元运算,(函数,三角函数)保留索引和列标签 对于2元运算,(加法,乘法),Pan ...
- .Net7 内容汇总(1)
.Net7 RC1发布 在9月14号,.Net7 RC1正式发布了. 按照微软的说法 This is the first of two release candidates (RC) for .NET ...
- Django django-admin.py 命令详解
一.Django 基本命令 下载 Django pip3 install django # 默认下载最新版 pip3 install django==4.1 # 手动选择版本 创建Djang ...
- mysql数据库log-slave-updates 参数解释
A(主库) ===> B(从库/主库) ===> C(从库) 需要在B的配置文件中添加log-slave-updates=1 从库做为其他从库的主库时 log-slave-updates ...
- 3_JavaScript
一. 介绍 JavaScript语言诞生主要是完成页面的数据验证, 因此它运行在客户端, 需要运行浏览器来解析执行JavaScript代码 JS是弱类型, Java是强类型 特点 交互性(它可以做的就 ...
- 用深度强化学习玩FlappyBird
摘要:学习玩游戏一直是当今AI研究的热门话题之一.使用博弈论/搜索算法来解决这些问题需要特别地进行周密的特性定义,使得其扩展性不强.使用深度学习算法训练的卷积神经网络模型(CNN)自提出以来在图像处理 ...
- .net core Blazor+自定义日志提供器实现实时日志查看器
场景 我们经常远程连接服务器去查看日志,比较麻烦,如果直接访问项目的某个页面就能实时查看日志就比较奈斯了,花了1天研究了下.net core 日志的原理,结合blazor实现了基本效果. 实现原理 自 ...
- HAProxy反向代理实例
1.环境准备: 设备 IP地址 作用 系统版本 web1 10.0.0.18 Nginx-Web服务器 Rocky8.6 web2 10.0.0.28 Nginx-Web服务器 Rocky8.6 Ha ...