江西省技能培训平台(逆向破解登录国密SM2)

news/2024/11/8 2:54:55/

江西省技能培训平台(逆向破解登录)

登录破解(国密sm2加密方式)

请求接口

https://api.cloud.wozhipei.com/auth/user/v1/login

使用身份证和密码登录发现有password加密,好开始逆向js

全局搜索发现使用国密SM2进行加密

模拟算法

js

使用js进行模拟算法

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<script src="./sm2.js"></script>
<script src="./base64.js"></script>
<script>async function fetchPublicKeyAndEncrypt() {try {// 发送fetch请求并等待响应数据解析为JSON格式let response = await fetch('https://api.cloud.wozhipei.com/auth/user/v1/public_key', {method: 'GET',headers: {'Content-Type': 'application/json',"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",}});let result = await response.json();console.log('提交成功,服务器返回:', result["data"]);console.log('sm2Encrypt', sm2);// 获取公钥let publicKey = result["data"];// 待加密的密码let pwd = "你的密码";let cipherMode = 1; // 1 - C1C3C2,0 - C1C2C3,默认为1console.log("编码后的pwd: ",btoa(pwd))// 等待加密操作完成并获取加密后的数据let encryptData = await sm2.doEncrypt(btoa(pwd), publicKey, cipherMode);return {publicKey, encryptData};}catch(error){console.error('请求出错:', error);}}async function login(data) {try {// 发送fetch请求并等待响应数据解析为JSON格式let response = await fetch('https://api.cloud.wozhipei.com/auth/user/v1/login', {method: 'POST',body: data,headers: {'Content-Type': 'application/json',"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",}});console.log('响应:', response);let result = await response.json();return result} catch (error) {console.error('请求出错:', error);}}// 调用异步函数并处理返回值fetchPublicKeyAndEncrypt().then(({publicKey, encryptData}) => {if (publicKey && encryptData) {var data = {"account": "你的身份证","appKey": "WEB","sid": 1018,"type": 1,"authOpenId": "","authType": "","publicKey": publicKey,"password": encryptData}console.log('获取到的公钥:', publicKey);console.log('加密后的数据:', encryptData);console.log('请求体:', JSON.stringify(data));login(JSON.stringify(data)).then(res => {console.log('loingrespionse:', res);})}});</script>
<body></body></html>

成功登录:

python_124">python

python使用gmssl,注意这里有个坑,
直接pip install gmssl 下载的版本是3.2.1的是旧版的sm2加密方式开始用旧标准的一直没校验不通过这个坑我走了好久,这要感谢我的学弟发现这个坑

有两个标准,这个网站是新标准的,如果使用旧标准的话后端无法解密导致校验不通过。

旧版3.2.1

新版3.2.2

代码:

login.py

python"># coding=gb2312
from gmssl import sm2
import requests
from base64 import b64encodedef getToken(idCar, pwd):public_keyUrl = "https://api.cloud.wozhipei.com/auth/user/v1/public_key"headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36","Content-Type": "application/json"}response = requests.get(public_keyUrl, headers=headers)public_key = response.json()["data"]def encrypt(data):# sm2 加密sm2_crypt = sm2.CryptSM2(public_key=public_key, private_key="", mode=1)return sm2_crypt.encrypt(data).hex()data_str = pwddata_bytes = data_str.encode('utf-8')encoded_data = b64encode(data_bytes)encryptData = encrypt(encoded_data)data = {"account": idCar,"appKey": "WEB","sid": 1018,"type": 1,"authOpenId": "","authType": "","publicKey": public_key,"password": encryptData}response = requests.post("https://api.cloud.wozhipei.com/auth/user/v1/login", headers=headers, json=data)return response.content.decode("utf-8")token = getToken("身份证", "密码")
print(token)


http://www.ppmy.cn/news/1545231.html

相关文章

Java项目实战II基于Spring Boot的便利店信息管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在快节奏的…

基于C++的决策树C4.5机器学习算法(不调包)

目前玩机器学习的小伙伴&#xff0c;上来就是使用现有的sklearn机器学习包&#xff0c;写两行代码&#xff0c;调调参数就能跑起来&#xff0c;看似方便&#xff0c;实则有时不利于个人能力发展&#xff0c;要知道现在公司需要的算法工程师&#xff0c;不仅仅只是会调参&#x…

分布式中常见的问题及其解决办法

分布式中常见的问题及其解决办法 一、多个微服务要操作同一个存储在redis中的变量&#xff0c;如何确保这个变量的正确性 答&#xff1a; 在多个微服务操作同一个存储在Redis中的变量时&#xff0c;可以采取以下措施来确保变量的正确性&#xff1a; 1、使用Redis的事务&…

JAVA题目笔记(十三) 爬虫

一、网络爬取 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.regex.Matcher; import java.util.regex.Pattern;public class Main {public static v…

HTML 标签属性——<a>、<img>、<form>、<input>、<table> 标签属性详解

文章目录 1. `<a>`元素属性hreftargetname2. `<img>`元素属性srcaltwidth 和 height3. `<form>`元素属性actionmethodenctype4. `<input>`元素属性typevaluenamereadonly5. `<table>`元素属性cellpaddingcellspacing小结HTML元素除了可以使用全局…

【前端基础】CSS基础

目标&#xff1a;掌握 CSS 属性基本写法&#xff0c;能够使用文字相关属性美化文章页。 01-CSS初体验 层叠样式表 (Cascading Style Sheets&#xff0c;缩写为 CSS&#xff09;&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现&#xff08;美化内容&#…

Python网络爬虫:入门与实战

Python网络爬虫&#xff1a;入门与实战 引言 在当今信息爆炸的时代&#xff0c;如何从海量的互联网数据中提取有价值的信息&#xff0c;成为了许多开发者和数据分析师面临的重要课题。网络爬虫&#xff08;Web Crawler&#xff09;作为一种自动化工具&#xff0c;能够按照预…

yii 常用一些调用

yii 常用一些调用 (增加中) 调用YII框架中 jquery&#xff1a;Yii::app()->clientScript->registerCoreScript(‘jquery’); framework/web/js/source的js,其中registerCoreScript key调用的文件在framework/web/js/packages.php列表中可以查看 在view中得到当前contro…