逆向案例三:动态xhr包中AES解密的一般步骤,以精灵数据为例

补充知识:进行AES解密需要知道四个关键字,即密钥key,向量iv,模式mode,填充方式pad

一般网页AES都是16位的,m3u8视频加密一般是AES-128格式

网页链接:https://www.jinglingshuju.com/articles

进行抓包结果返回的是密文:

一般思路,无法判断是什么加密方法,一般搜索关键字,这个关键字data太普遍了,所以可以直接搜索decrypt(

点击其中的js文件,在js文件中继续搜索decrypt(

发现了AES等关键字,一般在return 处打上断点

上述js中已经明确了初始向量iv,mode,和padding,z即为密钥
注意:此时必须进行翻页操作触发断点 
然后再控制台输入JSON.parse(e.toString(y.a.enc.Utf8))得到下面的结果

如果控制台中有: 

可以使用.toString()变成16位数字: 

 获得z的值:

如数位观察城市数据的爬取类似的密钥z的值是就j.encode("utf-8")

j的值为:

代码展现:

import requests
from Crypto.Cipher import AES  # 开始解密
from Crypto.Util.Padding import unpad #去填充的逻辑
import base64
import json
url = 'https://vapi.jinglingshuju.com/Data/getNewsList'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
response = requests.post(url=url,headers=headers).json()aes = AES.new(key='DXZWdxUZ5jgsUFPF'.encode('utf-8'),mode=AES.MODE_ECB)
ming_data = aes.decrypt(base64.b64decode(response['data']))
ming_data = unpad(ming_data,16)
ming = ming_data.decode('utf-8')# 原始数据# 解析JSON数据
parsed_data = json.loads(ming)# 遍历新闻列表并打印出来
for news in parsed_data['list']:print("标题:", news['title'])print("封面图标:", news['cover_icon'])print("新闻时间:", news['news_time'])print("新闻来源:", news['news_source'])print("发布时间:", news['time_str'])print("详情链接:", news['detail'])print("点击量:", news['hits'])print('作者id:',news['article_id'])

结果展现:

 小提示:当返回的是json格式时候,如果没有用json.loads接收,可能会是下面的样子: 
"title":"\u82f9\u679c\u7a81\u7136\u4e0d\u9020\u8f66\u4e86\uff0c\u9a6c\u65af\u514b\u6216\u662f\u6700\u5927\u8d62\u5bb6

这种ECB的AES解密的标准流程:

from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import base64def aes_decrypt(ciphertext, key):cipher = AES.new(key, AES.MODE_ECB)decrypted = cipher.decrypt(base64.b64decode(ciphertext))plaintext = unpad(decrypted, AES.block_size)return plaintext.decode('utf-8')iv = b'\x00' * 16  # 初始化向量,ECB模式下不需要使用
key = b'mysecretpassword'  # 密钥,长度必须为16字节ciphertext = 'encrypted_text'  # 待解密的密文
plaintext = aes_decrypt(ciphertext, key)
print(plaintext)

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法大家庭】分治算法

目录 🥓1.简单介绍 🧈2.汉诺塔问题 1.简单介绍 分治算法是解决问题的一种思想,它将一个大问题分解成若干个小问题,然后分别解决这些小问题,最后将小问题的解合并起来得到原问题的解。 分解:将原问题分解…

Mazing官方 2.17.17版新i功能介绍

iMazing官方 2.17.17版是一款管理苹果设备的软件,是一款帮助用户管理 IOS 手机的PC端应用程序,能力远超 iTunes 提供的终极 iOS 设备管理器。在iMazing官方版上与苹果设备连接后,可以轻松传输文件,浏览保存信息等,功能…

SD-WAN对云服务的影响

近年来,随着企业对云服务的依赖不断增加,SD-WAN技术成为提升连接性能的热门选择。SD-WAN通过简化云集成和连接,以及提升应用程序性能,为企业带来显著的业务优势。这种云连接的改进使企业能够更轻松地接触全球劳动力和潜在客户。 首…

语文专刊《中学语文》是什么级别的刊物?

语文专刊《中学语文》是什么级别的刊物? 《中学语文》创刊于1958年,由国家新闻出版总署批准,经湖北省教育厅主管的省级学术期刊。 《中学语文》是由湖北大学文学院主办、国内外公开发行的学术期刊,主要面向中学语文教师和语文教…

盘点:好用的伪原创文章生成器软件

伪原创文章生成器软件在内容创作域领应用的非常广泛,它不仅可以为创作人员解决文章或文案创作困难的问题,同时还可以作为提升创作效率的完美工作,然而随着互联网技术的发展,互联网上的伪原创文章生成器软件多到让人应接不暇&#…

echarts鼠标事件

鼠标事件支持方法 ECharts 支持常规的鼠标事件类型,包括 ‘click’、 ‘dblclick’、 ‘mousedown’、 ‘mousemove’、 ‘mouseup’、 ‘mouseover’、 ‘mouseout’、 ‘globalout’、 ‘contextmenu’ 事件 简单实例 // 基于准备好的dom,初始化EChar…

加州大学圣地亚哥分校伯克利分校联合英伟达最新开源!COLMAP-Free 3D Gaussian Splatting

作者:石昊 | 来源:3DCV 在公众号「3DCV」后台,回复「原论文」可获取论文pdf 添加微信:dddvision,备注:3D高斯,拉你入群。文末附行业细分群 从图像序列中进行相机姿态估计和新视角合成的问题。…

论文笔记:A survey on zero knowledge range proofs and applications

https://link.springer.com/article/10.1007/s42452-019-0989-z 描述了构建零知识区间证明(ZKRP)的不同策略,例如2001年Boudot提出的方案;2008年Camenisch等人提出的方案;以及2017年提出的Bulletproofs。 Introducti…

Win11系统实现adb命令向安卓子系统安装APP

Win11系统实现通过adb命令向安卓子系统安装已下载好的apk包。 要实现以上目标,我们需要用到一个Android SDK 的组件Android SDK Platform-Tools !这个组件呢其实是被包含在 Android Studio中的,如果你对安卓开发有所了解对此应该不会陌生&…

【Unity】如何在Unity 中创建带有缩放效果的滚动视图(具有吸附效果的实现与优化)?

效果预览: 目录 效果预览: 一、引言: 二、问题描述 三、解决方案: 三、优化: 四、结论 一、引言: 在Unity开发中,经常需要实现滚动视图(ScrollView)中的内容吸附到…

算法C++

枚举 1.化段为点 前缀和 eg:给一个数列&#xff0c;算x到y个数的和 #include <iostream> #include <vector> using namespace std;int main() {int n;cin>>n;vector<int> a(n);vector<int> sum(n1,0);for(int i0;i<n;i){scanf…

047-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过

047-WEB攻防-PHP应用&文件上传&函数缺陷&条件竞争&二次渲染&黑白名单&JS绕过 #知识点&#xff1a; 1、PHP-原生态-文件上传-检测后缀&黑白名单 2、PHP-原生态-文件上传-检测信息&类型内容 3、PHP-原生态-文件上传-函数缺陷&逻辑缺陷 4、PH…

Window系统部署Z-blog并结合内网穿透实现远程访问本地博客站点

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Spring Task的应用

介绍 Spring Task是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 定位&#xff1a; 定时任务框架 作用&#xff1a; 定时自动执行某段Java代码 应用场景&#xff1a; 引用卡每月还款提醒、银行贷款每月还款提醒、火车票售票系统处理未支…

文献速递:深度学习--应用深度学习到DaTscan SPECT图像以改善帕金森病运动结果预测

文献速递&#xff1a;深度学习–应用深度学习到DaTscan SPECT图像以改善帕金森病运动结果预测 Title 题目 Improved motor outcome prediction in Parkinson’s disease applying deep learning to DaTscan SPECT images 应用深度学习到DaTscan SPECT图像以改善帕金森病运动…

unity学习(42)——创建(create)角色脚本(panel)——UserHandler(收)+CreateClick(发)——服务器收包2

1.解决上一次留下的问题&#xff1a; log和reg的时候也有session&#xff0c;输出看一下这两个session是同一个不&#xff1a; 实测结果reg log accOnline中的session都是同一个对象&#xff0c;但是getAccid时候的session就是另一个了。 测试结果&#xff0c;说明在LogicHan…

Linux信号【保存-处理】

目录 前言&#xff1a; 1、再次认识信号 1.1、概念 1.2、感性理解 1.3、在内核中的表示 1.4、sigset_t 信号集 2、信号集操作函数 2.1、增删改查 2.2、sigprocmask 2.3、sigpending 3.信号的处理机制 3.1处理情况 3.2合适时机 4用户态与内核态 4.1、概念 4.2、…

【Java程序设计】【C00322】基于Springboot的高校竞赛管理系统(有论文)

基于Springboot的高校竞赛管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校竞赛管理系统&#xff0c;本系统有管理员、老师、专家以及用户四种角色&#xff1b; 管理员&#xff1a;首页、个人中心、管…

幻兽帕鲁(1.5.0)可视化管理工具(0.5.7 docker版)安装教程

文章目录 局域网帕鲁服务器部署教程帕鲁服务可视化工具安装配置服务器地址&#xff08;可跳过&#xff09;使用工具管理面板 1.5.0服务端RCON错误1.5.0服务端无法启动RCON端口 解决方法第一步&#xff1a;PalWorldSettings.ini配置第二步&#xff1a;修改PalServer.sh配置 局域…

C++类模板详解

目录 1.模板的概念 2.类模板 1.类模板基本语法 2.类模板与函数模板区别 3.类模板中成员函数创建时机 4.类模板对象做函数参数 typeid&#xff08;&#xff09;.name() 5.类模板与继承 6.类模板成员函数类外实现 7.类模板分文件编写 #pragma once 8.类模板与友元 1.…