前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【解密】记一次辽宁省综合实践教学管理平台加解密算法分析

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

原创
作者头像
德宏大魔王
修改于 2024-09-09 02:41:04
修改于 2024-09-09 02:41:04
11400
代码可运行
举报
运行总次数:0
代码可运行

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

找到请求发现请求数据加密

在启动器里面发现登录方法

打印出各个关键变量数据

检索Encrypt方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
url: "Sys/Login",
     data: {
      data: o.default.Encrypt(JSON.stringify({
     a: t,
     p: e
    }), "al_bb#sg9kl^d_qn")
   }

得到key和iv向量

发现是AES加密

python代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import json

def encrypt(data, key, iv):
    # Convert strings to bytes
    key_bytes = key.encode('utf-8')
    iv_bytes = iv.encode('utf-8')
    data_bytes = data.encode('utf-8')

    # Pad the data
    padded_data = pad(data_bytes, AES.block_size, style='pkcs7')

    # Create cipher
    cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)

    # Encrypt data
    encrypted_bytes = cipher.encrypt(padded_data)

    # Convert encrypted bytes to uppercase hex string
    encrypted_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

发现这里有加密方法,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 SessionCode: "" != this.GetStorage("sid") ? d.Encrypt("".concat(this.GetStorage("sid"), "$$$$$").concat(this.GetStorage("uid"))) : "",

这不是有手就行?

再次加密一次

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sid = 'sjdl_fd0f63aaf4bcd7ad16c1'
uid = '28ff7e4ac021f4adf2fc'

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

使用JavaScript中的密钥和IV

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
key = "**********"
iv = "**********"

加密数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
session_code = encrypt(data_to_encrypt, key, iv)

打印加密后的SessionCode

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 用于后续的请求或处理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
记一次微信小程序逆向
加密嘛,之前抓了看到是加密就放弃了,现在重新弄一弄 https://github.com/wux1an/wxapkg 用这个工具反编译本地微信小程序
亿人安全
2024/05/14
9751
记一次微信小程序逆向
python实现AES/DES/RSA/MD5/SM2/SM4/3DES加密算法模板汇总
都是作者累积的,且看其珍惜,大家可以尽量可以保存一下,如果转载请写好出处https://www.cnblogs.com/pythonywy
小小咸鱼YwY
2020/11/24
4.9K0
技巧|记一次渗透测试之AES加密参数与踩坑记录
介绍:又一次公司的测内网系统项目的出现了流量加密,于是进行前端调试js逆向后对其流量反解密进行渗透(一次简单记录分享,大佬勿喷)
亿人安全
2024/07/24
2330
技巧|记一次渗透测试之AES加密参数与踩坑记录
【爬虫系列】0. 无内鬼,破解前端JS参数签名
不过,手上有Root后的Google Nexus5X,也有 whistle 跨平台抓包工具,
李国宝
2021/08/07
1.5K1
Python3 django2.0
以下设置,适用于python3.5及以前的 pip install pycrypto import base64 from Crypto.Cipher import AES from Crypto import Random BS = 16 key = "1234567890123456" pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS) unpad = lambda s : s[:-ord(s[len(s)-1:])]
py3study
2020/01/03
3800
技巧|记一次渗透测试之AES加密参数与踩坑记录
朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把“亿人安全“设为星标”,否则可能就看不到了啦
亿人安全
2024/08/07
3310
技巧|记一次渗透测试之AES加密参数与踩坑记录
Python AES加密详解与实践
高级加密标准(Advanced Encryption Standard, AES)是一种广泛使用的对称密钥加密算法,由美国国家标准与技术研究院(NIST)于2001年发布。AES以其高效、安全和灵活性而闻名,被广泛应用于保护敏感数据的机密性。本文将深入探讨Python中AES加密的实现,包括其原理、关键参数、以及通过代码示例进行实践。
小白的大数据之旅
2024/11/20
7760
网络安全入门:大学生的必修课
不用多讲,大家都清楚网络安全的重要性。先来了解一下网络安全的概念,网络安全是指保护网络系统免受未经授权访问、破坏、数据泄露等威胁的一系列措施,尤其是在数字化时代,网络安全的重要性不言而喻。从个人隐私保护到国家安全,网络安全都是不可或缺的一环。
三掌柜
2024/07/17
1751
网络安全入门:大学生的必修课
Python爬虫进阶必备 | 一个典型的 AES 加密在爬虫中的应用案例
AES 的案例之前有推荐大家关于 AES 加密的案例文章,不少朋友问我加密解决了有什么用?
咸鱼学Python
2019/10/31
2K0
Python爬虫进阶必备 | 一个典型的 AES 加密在爬虫中的应用案例
python爬虫以及后端开发--实用加密模板整理
都是作者累积的,且看其珍惜,大家可以尽量可以保存一下,如果转载请写好出处https://www.cnblogs.com/pythonywy
小小咸鱼YwY
2020/08/24
7220
python实现对称加密AES算法
Modes of operations allow you to encrypt more data than the block size of your symmetric block cipher. Example: CBC.
timerring
2022/07/20
9760
python实现对称加密AES算法
Python爬虫进阶必备 | 关于AES 的案例分析与总结
可以看到这里 password、email 是加密的结果,_token 的值可以直接在页面里找到。
咸鱼学Python
2019/10/09
1.1K0
Python爬虫进阶必备 | 关于AES 的案例分析与总结
httprunner学习23-加解密
比如当我们访问下面这个登陆的接口时,请求参数账号和密码都是需要加密,通过parms参数传过去,服务器才能识别到
上海-悠悠
2019/11/15
8720
Python实现128-ECB 解密
AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个。(8比特 == 1字节)
IBinary
2021/06/21
1.9K0
【JS逆向百例】某盾 Blackbox 算法逆向分析
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
K哥爬虫
2025/01/13
1510
【JS逆向百例】某盾 Blackbox 算法逆向分析
聊聊接口测试时遇到加密参数怎么办?
常见的接口参数加密包含对称加密包含AES安全性高,性能好,广泛用于敏感数据加密,DES/3DES(已逐步被淘汰,安全性较低);非对称加密包含RSA广泛用于数字签名和密钥交换,ECC(椭圆曲线加密)安全性更高,密钥更短;哈希算法加密包含MD5(已不推荐用于安全场景,易碰撞),SHA-256/SHA-3安全性更高,广泛用于数据完整性校验;还有数字签名加密RSA-SHA256生成签名,HMAC基于密钥的哈希消息认证。
漫谈测试
2025/04/04
1060
聊聊接口测试时遇到加密参数怎么办?
常见的加密方式之python实现
编码与解码 通常所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。将字符串和Bytes互相转换可以使用encode()和decode()方法。
MIKE笔记
2023/03/23
1.4K0
常见的加密方式之python实现
python-AES加密解密
转载https://www.jianshu.com/p/5d27888e7c93#!/xh
小小咸鱼YwY
2020/06/19
4.3K0
实战|记一次测试过程中登录参数加密逆向分析
在测试过程中遇到一个登录框,看到前端加密的情况下对密码处进行了简单的加密分析 在控制台中打开网络,匹配Fetch/XHR,可以看到password处进行了加密处理
亿人安全
2023/05/16
9930
实战|记一次测试过程中登录参数加密逆向分析
【验证码逆向专栏】某盾 v2 滑动验证码逆向分析
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
K哥爬虫
2025/03/03
1710
【验证码逆向专栏】某盾 v2 滑动验证码逆向分析
相关推荐
记一次微信小程序逆向
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档