逆向案例三:动态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.rhkb.cn/news/266045.html

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

相关文章

5G网络介绍

目录 一、网络部署模式 二、4/5G基站网元对标 三、4/5G系统架构对比 四、5G核心单元 五、边缘计算 六、轻量化(UPF下沉) 方案一:UPF下沉 方案二:UPF下沉 方案三:5GC下沉基础模式 方案四:…

浅谈 Linux 网络编程 socket

文章目录 socket 介绍 socket 介绍 socket 被翻译成 网络套接字,这个名字实在是不好理解,我更愿意称为"插槽"。 忽略 socket 的中文名,先无脑记住两个规则: ① 记住,一个文件描述符(fd) 指向一个 socket&…

力扣550 游戏玩法分析 IV

目录 题目描述 思路整理 1. 首次登录日期 2. 第二天登录 3. 计算比率 实现思路 完整代码及解释 题目描述 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | ev…

雾锁王国Enshrouded服务器CPU内存配置怎么选择?

雾锁王国/Enshrouded服务器CPU内存配置如何选择?阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置,支持4人玩家畅玩,自带10M公网带宽,1个月90元,3个月271元,幻兽帕鲁服务器申请页面 https://t.aliyun.com…

代码随想录训练营第32天 | LeetCode 122.买卖股票的最佳时机 II、LeetCode 55.跳跃游戏、LeetCode 45.跳跃游戏 II

目录 LeetCode 122.买卖股票的最佳时机 II 文章讲解:代码随想录(programmercarl.com) 视频讲解:贪心算法也能解决股票问题!LeetCode:122.买卖股票最佳时机 II_哔哩哔哩_bilibili 思路 ​​​​​​LeetCode 55. 跳跃游戏 文…

Keepalived介绍、架构和安装

Keepalived介绍、架构和安装 文章目录 Keepalived介绍、架构和安装1.Keepalived(高可用性服务)1.1 Keepalived介绍1.2 Keepalived 架构1.3 Keepalived 相关文件 2.Keepalived安装2.1 主机初始化2.1.1 设置网卡名和ip地址2.1.2 配置镜像源2.1.3 关闭防火墙…

DPU是什么?

问题描述: DPU是什么? 解答: DPU(Data Processing Unit)是以数据为中心构造的专用处理器,采用软件 定义技术路线支撑基础设施层资源虚拟化,支持存储、安全、服务质量管理等 基础设施层服务。…

基于x86架构的OpenHarmony应用生态挑战赛等你来战!

为了更快速推进OpenHarmony在PC领域的进一步落地,加快x86架构下基于OpenHarmony的应用生态的繁荣,为北向应用开发者提供一个更加便捷的开发环境,推动OpenHarmony北向应用开发者的增加,助力OpenHarmony在PC领域实现新的突破&#x…

buuctf_N1BOOK_粗心的小李

题目&#xff1a; 看完题目&#xff0c;git下载文件&#xff1f;然后将.git文件传到线上环境&#xff1f;&#xff08;which 会造成git泄露的安全威胁&#xff09;<这个背景抱歉我不太了解哈&#xff0c;可能后续有补充> 这里主要记录做法过程&#xff1a; 工具&#xf…

javaWeb个人学习02

会话技术 会话: 用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束.在一次会话中包含多次请求和响应 会话跟踪: 一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一个浏览器,以便在同一次会话的多次请求之间共享数据 会话跟踪方案: …

#stm学习总结 (二十八)硬件随机数实验

28.1 随机数发生器简介 STM32F407 自带了硬件随机数发生器&#xff08;RNG&#xff09;&#xff0c;RNG 处理器是一个以连续模拟噪声为基础的随机数发生器&#xff0c;在主机读数时提供一个 32 位的随机数。 28.1.1 RNG 框图 STM32F407 的随机数发生器&#xff08;RNG&#x…

React中使用useActive

1.引入 import { useActivate } from "react-activation";2.React Activation 在React中使用react-activation,其实就是类似于Vue中的keep-alive&#xff0c;实现数据的缓存&#xff1b; 源码&#xff1a; import { ReactNode, ReactNodeArray, Context, Component…

数据库的基本操作

数据库的基本操作 1创建数据库与查看数据库 创建数据库之前&#xff0c;先查看数据库&#xff1a; 然后使用命令行创建数据库&#xff1a; 再次查看数据库&#xff0c;发现多了一个数据库&#xff1a; 查看数据库基本信息&#xff1a; 2修改数据库 注意&#xff0c;修改…

Git自动忽略dll文件的问题

检查了半天发现是sourcetreee的全局忽略文件导致&#xff0c; 从里面删除dll即可。 我是干脆直接删了全局忽略&#xff0c;太恶心了&#xff0c;如下&#xff1a; #ignore thumbnails created by windows Thumbs.db #Ignore files build by Visual Studio *.exe .vsconfig .s…

使用全局事件总线实现任意组件间的通讯

本文以vue2中爷孙组件通讯为例&#xff0c;需求是点击孙组件的按钮&#xff0c;实现关闭爷组件的弹窗。 全局事件总线是通过Vue实例的事件系统来实现组件之间的通讯&#xff0c;可以方便地在任何组件中进行事件的触发和监听。 以下是使用全局事件总线实现爷孙组件通讯的步骤&a…

初阶数据结构:链表相关题目练习(补充)

目录 1. 单链表相关练习题1.1 移除链表元素1.2 反转链表1.3 链表的中间结点1.4 链表的倒数第k个结点1.5 合并两个有序链表1.6 链表分割1.7 链表的回文结构1.8 相交链表1.9 判断一个链表中是否有环1.10 寻找环状链表相遇点1.11 链表的深度拷贝 1. 单链表相关练习题 注&#xff1…

第一节:Sashulin Message Broker是什么?

一、Sashulin Message Broker简介 Sashulin Message Broker&#xff08;消息代理&#xff0c;简称SMB&#xff09;是一款可编程的消息流处理软件&#xff0c;它使应用程序、系统和服务能够相互通信并交换信息。通过消息传递和转换&#xff0c;实现不同平台和不同语言编写的服务…

登录页设计新选择:毛玻璃和新拟态风格,非2.5D和插画风

登录页给潜在用户传递了产品的品牌调性&#xff0c;是非常重要的一类页面&#xff0c;之前2.5D和插画风格的登录页流行一时&#xff0c;不过这阵风好像过去了&#xff0c;新的风格开始涌现了。 一、越来越流行的毛玻璃设计风格 毛玻璃风格是指将背景模糊处理&#xff0c;使得…

DOM 获取父子节点

DOM 是以树状结构排列的&#xff0c;所以父子关系是相对的&#xff0c;当li为我们的目标节点的时候&#xff0c;ul为其父节点&#xff0c;其他li为它的兄弟节点&#xff0c;li里面包含的标签为子节点&#xff0c;以此类推。 那我们如何找父节点&#xff1f; 元素.parentNode&am…

长江路一号桥的安全监测革新

位于无锡新区的长江路一号桥&#xff0c;自1997年落成以来&#xff0c;一直是多功能的市政要道。大桥北侧连接供气管道&#xff0c;右侧则是城市供水管道&#xff0c;而桥底则设有蓝藻环保监测点。这意味着一旦此桥出现问题&#xff0c;其影响远超交通堵塞的层面。近年来&#…