当前位置: 首页 > news >正文

【解密】记一次辽宁省某综合实践教学管理平台加解密算法分析

最近接到需求,于是准备弄一下,发现对方整个流程是:先加密在请求,请求得到的数据再进行拼接加密,不过花了2个小时还是完成了解密 哈哈

找到请求发现请求数据加密在这里插入图片描述

在启动器里面发现登录方法
在这里插入图片描述

打印出各个关键变量数据
在这里插入图片描述

检索Encrypt方法

url: "Sys/Login",data: {data: o.default.Encrypt(JSON.stringify({a: t,p: e}), "al_bb#sg9kl^d_qn")}

得到key和iv向量

在这里插入图片描述
发现是AES加密
在这里插入图片描述

python代码

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import jsondef encrypt(data, key, iv):# Convert strings to byteskey_bytes = key.encode('utf-8')iv_bytes = iv.encode('utf-8')data_bytes = data.encode('utf-8')# Pad the datapadded_data = pad(data_bytes, AES.block_size, style='pkcs7')# Create ciphercipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)# Encrypt dataencrypted_bytes = cipher.encrypt(padded_data)# Convert encrypted bytes to uppercase hex stringencrypted_hex = encrypted_bytes.hex().upper()return encrypted_hex# 用户名和密码
t = "20*****211"
e = "******"# 加密前的数据
data_to_encrypt = json.dumps({"a": t,"p": e
})print(data_to_encrypt)# 使用JavaScript中的密钥和IV
key = "***********"
iv =  "***********"# 加密数据
encrypted_data = encrypt(data_to_encrypt, key, iv)# 打印加密后的数据
print("加密后的数据:", encrypted_data)

在这里插入图片描述
加密数据与原数据不太相符,但是请求后结果是一样的,可以返回uid和sid
在这里插入图片描述

以为到这里就完了??
在这里插入图片描述

发现得到的sid和uid没有卵用,那怎么办呢?继续找关联的js

在这里插入图片描述

发现这里有加密方法,

SessionCode: "" != this.GetStorage("sid") ? d.Encrypt("".concat(this.GetStorage("sid"), "$$$$$").concat(this.GetStorage("uid"))) : "",

这不是有手就行?

再次加密一次

假设 sid 是 ‘sjdl_fd0f63aaf4bcd7ad16c1’,uid 是 ‘28ff7e4ac021f4adf2fc’。

拼接字符串
按照代码逻辑,需要将 sid 和 uid 用 $$$$$ 连接起来,形成一个新的字符串:

sid = 'sjdl_fd0f63aaf4bcd7ad16c1'
uid = '28ff7e4ac021f4adf2fc'data_to_encrypt = f"{sid}$$$$${uid}"
print(data_to_encrypt)  # 输出 'sjdl_fd0f63aaf4bcd7ad16c1$$$$$28ff7e4ac021f4adf2fc'

加密字符串
然后使用加密函数对该字符串进行加密。假设你的加密函数与前面的相同:


from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import jsondef encrypt(data, key, iv):key_bytes = key.encode('utf-8')iv_bytes = iv.encode('utf-8')data_bytes = data.encode('utf-8')padded_data = pad(data_bytes, AES.block_size, style='pkcs7')cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)encrypted_bytes = cipher.encrypt(padded_data)encrypted_hex = encrypted_bytes.hex().upper()return encrypted_hex

使用JavaScript中的密钥和IV

key = "**********"
iv = "**********"

加密数据

session_code = encrypt(data_to_encrypt, key, iv)

打印加密后的SessionCode

以下是完整的代码,包括数据准备、字符串拼接和加密过程:


from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import json# 加密函数
def encrypt(data, key, iv):key_bytes = key.encode('utf-8')iv_bytes = iv.encode('utf-8')data_bytes = data.encode('utf-8')padded_data = pad(data_bytes, AES.block_size, style='pkcs7')cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)encrypted_bytes = cipher.encrypt(padded_data)encrypted_hex = encrypted_bytes.hex().upper()return encrypted_hex# sid和uid数据
sid = 'sjdl_fd0f63aaf4bcd7ad16c1'
uid = '28ff7e4ac021f4adf2fc'# 拼接字符串
data_to_encrypt = f"{sid}$$$$${uid}"# 使用JavaScript中的密钥和IV
key = "***********"
iv = "***********"# 加密数据
session_code = encrypt(data_to_encrypt, key, iv)# 打印加密后的SessionCode
print("加密后的SessionCode:", session_code)

运行这段代码,你将得到加密后的 SessionCode。根据你的需求,可以将这个 SessionCode 用于后续的请求或处理。

在这里插入图片描述

我的专栏

《记一次云之家签到抓包》
《记一次视频抓包m3u8解密过程》
《抓包部分软件时无网络+过代理检测 解决办法 安卓黄鸟httpcanary+vmos》
《Python】记录抓包分析自动领取芝麻HTTP每日免费IP(成品+教程)》
《某课抓包视频 安卓手机:黄鸟+某课app+VirtualXposed虚拟框架》

推荐专栏:

《Python爬虫脚本项目实战》

该专栏往期文章:
《【Python爬虫项目实战一】获取Chatgpt3.5免费接口文末付代码(过Authorization认证)》

欢迎查看我的其它专栏
作者完成过很多独立的项目:例如滇医通等等脚本,但是由于版权的原因下架了,爬虫这一类审核比较严谨,稍有不慎就侵权违规了,所以在保证质量的同时会对文章进行筛选

如果您对爬虫感兴趣请收藏或者订阅该专栏哦《Python爬虫脚本项目实战》,如果你有项目欢迎联系我,我会同步教程到本专栏!

🚀Python爬虫项目实战系列文章!!
⭐⭐欢迎订阅⭐⭐

【Python爬虫项目实战一】获取Chatgpt3.5免费接口文末付代码(过Authorization认证)
【Python爬虫项目实战二】Chatgpt还原验证算法-解密某宝伪知网数据接口

⭐⭐欢迎订阅⭐⭐
在这里插入图片描述

Python爬虫脚本项目实战
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Proteus元器件库与仪器仪表
  • excel、word、ppt 下载安装步骤整理
  • 网络编程笔记
  • 电影购票小程序论文(设计)开题报告
  • 原创音乐小程序的设计
  • JVM:SpringBoot TomcatEmbeddedWebappClassLoader
  • 深度学习-4-PyTorch中的数据加载器Dataset和DataLoader
  • Paddle 打包部署
  • Vue 3中使用 Lottie 动画
  • python自动化之validator验证数据【代码示例】
  • STM32智能停车场管理系统教程
  • 如何在SpringCloud中使用Kafka Streams实现实时数据处理
  • Vue3单文件jsx输出多组件示例遇到的坑
  • 树形结构的一种便捷实现方案
  • Go语言--传输文件
  • #Java异常处理
  • “大数据应用场景”之隔壁老王(连载四)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • Angular2开发踩坑系列-生产环境编译
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Javascript弹出层-初探
  • Node + FFmpeg 实现Canvas动画导出视频
  • oschina
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 深入浅出Node.js
  • 为视图添加丝滑的水波纹
  • 小程序 setData 学问多
  • 一份游戏开发学习路线
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 大数据全解:定义、价值及挑战
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (1)STL算法之遍历容器
  • (7)STL算法之交换赋值
  • (arch)linux 转换文件编码格式
  • (CPU/GPU)粒子继承贴图颜色发射
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)IOS中获取各种文件的目录路径的方法
  • (自用)gtest单元测试
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 4.0中的泛型协变和反变
  • .net Application的目录
  • .NET Framework 3.5安装教程
  • .net refrector
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)