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的密文(反之也实现了) 使用的代码如下,非常方 ...
随机推荐
- 后端程序员实现一个IP归属地的小程序
在日常开发中,后端主要提供数据以及处理业务逻辑,前端主要提供页面布局以及数据展示.后端程序员对于页面布局接触比较少,但是小程序有完善的文档说明.页面布局也相对简单,实现起来相对简单一些.而且小程序相对 ...
- IK分词器实现原理剖析 —— 一个小问题引发的思考
前言: 网上很多的文章都建议在使用IK分词器的时候,建立索引的时候使用ik_max_word模式:搜索的时候使用ik_smart模式.理由是max_word模式分词的结果会包含smart分词的结果,这 ...
- Django 创建 APP和目录结构介绍
一.通过pip安装Django 以windows 系统中使用pip命令安装为例 win+r,调出cmd,运行命令:pip install django自动安装PyPi 提供的最新版本.指定版本,可使用 ...
- Redisson多策略注解限流
限流:使用Redisson的RRateLimiter进行限流 多策略:map+函数式接口优化if判断 自定义注解 /** * aop限流注解 */ @Target({ElementType.METHO ...
- 第2篇----Istio架构概述篇
Istio的工作机制 Istio的工作机制和架构,分为控制面和数据面两部分.控制面主要包括Pilot.Mixer.Citadel等服务组件:数据面由伴随每个应用程序部署的代理程序Envoy组成,执行针 ...
- 改变一个数组内元素的位置,不通过splice方法。
这个数据 现在已经完成了,将本来在第一位的18代金券改到第31位,下面说一下怎么实现的. //currHotRightsTypeSorted这个是数据源头,legalRightsType这个是数据的分 ...
- Ant Design槽位失效
保证数据结构中有scopedSlots: { title: 'title' }, 即包含scopedSlots属性 使用时名字应保证一致 例如: 数据结构: treeData: [ { key ...
- Python函数-2V2
一.导入 $$ f ( x , y ) = 2 x + 3 y $$ 上面括号里面的就是数学公式里的自变量,自变量就相当于函数里的参数. 二.为什么要有参数 如果一个大楼里有两种尺寸不一的窗户,显然在 ...
- springmvc 上传文件时的错误
使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class=" ...
- 齐博x1直播神器聊天小插件
下载地址如下:https://down.php168.com/livemsg.rar 本插件由论坛网友笨熊提供 非常感谢他给大家提供那么一个非常好用的直播必备神器. 如下图所示,大家在直播的时候,这个 ...