js逆向-国密SM2初探

2023-11-19


本文仅供学习使用,切勿非法使用,如有侵权请联系作者及时删除!

前言

无意中看到一个网站采用国密SM2算法进行登陆参数进行加密,之前接触的加密基本都是国外的算法,例如RSADESMD5等等。国密接触的比较少,所以分析一波。

链接:SM2算法简介


目标网站

aHR0cHM6Ly9vbmUucGluZ2FuLmNvbS5jbi9wYW9uZS9pbmRleC5odG1sP2FwcElkPTExMDQ1Jm9yaWdpbkFwcD10cnVlIy9sb2dpbg==

加密分析

输入账号密码即可抓包

可疑的的参数看一下有哪些 :

appId: 11045
validCode: DLjc
loginName: 138.脱敏处理
loginPwd: CN-SB4E3165567BE750BA9BF05EACBB62A83F858D3414E2284DFE71E291533CD5691411E2127BF7E41DF33F42F1FE16724EE6F6EA44879AA62F2B286A3DE394C6A5FCB6B9B21084C6699F649471F7BBEF47B34ACE6FE53BEDA41F4A9652F9DAB87CF825C3C283CC6618002B816E9FBD353A349AC5BFC48274A
geetestChallenge: 6f4f429e392f09b7d8ea75cca59f05db85
geetestValidate: f891d87c420272acf347e2a6d9daa6bc
geetestSeccode: f891d87c420272acf347e2a6d9daa6bc|jordan
vcodeuuid: paicccode-4a8a1753fb3d2747bb87b44e7a25e97e69b956567
deviceId: 26.脱敏处理
deviceIp: 87266.脱敏处理
deviceType: web
jtSafeKey: eyJzZGt2ZXJzaW9uIjoiMS4zLjAiLCJ1c2VyX2FnZW50IjoiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwMC4wLjQ4OTYuNjAgU2FmYXJpLzUzNy4zNiIsImxhbmd1YWdlIjoiemgiLCJsYW5ndWFnZXMiOiJ6aCx6aC1DTiIsImNvbG9yX2RlcHRoIjoyNCwicmVzb2x1dGlvbiI6IjE1MzYsODY0IiwiYXZhaWxhYmxlX3Jlc29sdXRpb24iOiIxNTM2LDgyNCIsInRpbWV6b25lX29mZnNldCI6LTQ4MCwic2Vzc2lvbl9zdG9yYWdlIjoxLCJsb2NhbF9zdG9yYWdlIjoxLCJpbmRleGVkX2RiIjoxLCJvcGVuX2RhdGFiYXNlIjoxLCJjcHVfY2xhc3MiOiJ1bmtub3duIiwibmF2aWdhdG9yX3BsYXRmb3JtIjoiV2luMzIiLCJkb19ub3RfdHJhY2siOiJ1bmtub3duIiwiY2FudmFzX3dpbmRpbmciOiJ5ZXMiLCJjYW52YXNfZnAiOiJiNDg4OWJlYTA0ZDIxN2JjODkwOGQ0NTIzNGU3NjIxMDIiLCJ3ZWJnbCI6IjU5MTBhMzdiZjYyOGFhODI0YWRmMDY0ZTNlZTBhMGYxIiwidG91Y2hfc3VwcG9ydCI6IjAsZmFsc2UsZmFsc2UiLCJjb21wYXRNb2RlIjoiQ1NTMUNvbXBhdCIsImRldmljZVBpeGVsUmF0aW8iOjEuMjUsIm5hdmlnYXRvcl92ZW5kb3JTdWIiOiIiLCJuYXZpZ2F0b3JfcHJvZHVjdFN1YiI6IjIwMDMwMTA3IiwibmF2aWdhdG9yX3ZlbmRvciI6Ikdvb2dsZSBJbmMuIiwibmF2aWdhdG9yX21heFRvdWNoUG9pbnRzIjowLCJuYXZpZ2F0b3JfcGRmVmlld2VyRW5hYmxlZCI6dHJ1ZSwibmF2aWdhdG9yX2hhcmR3YXJlQ29uY3VycmVuY3kiOjgsIm5hdmlnYXRvcl9jb29raWVFbmFibGVkIjp0cnVlLCJuYXZpZ2F0b3JfYXBwQ29kZU5hbWUiOiJNb3ppbGxhIiwibmF2aWdhdG9yX2FwcE5hbWUiOiJOZXRzY2FwZSIsIm5hdmlnYXRvcl9hcHBWZXJzaW9uIjoiNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMDAuMC40ODk2LjYwIFNhZmFyaS81MzcuMzYiLCJuYXZpZ2F0b3JfcHJvZHVjdCI6IkdlY2tvIiwibmF2aWdhdG9yX29uTGluZSI6dHJ1ZSwibmF2aWdhdG9yX3dlYmRyaXZlciI6ZmFsc2UsIm5hdmlnYXRvcl9kZXZpY2VNZW1vcnkiOjgsInJlZmVyZXIiOiJodHRwczovL29uZS5waW5nYW4uY29tLmNuLyIsImd1aWQiOiJiOGIzYmFmNy00NmU2LTU3MjktNGI0Zi0xMjU1NTc5ZjU5OWIiLCJkaWQiOiI2YzU4ZTUwNzY2NGEyNmQ0NTc4ZWExNmU2NDg1Yzk5ZiIsIm9zIjoiVyJ9
token: c9b7dac51f2c4c4991e47c78dfce3ec9
fcmmRedirectFlag: 
signtype: 

疑似加密的地方有很多:loginPwdgeetest这些应该都是极验的参数、vcodeuuid可能是用户id信息、
deviceId 设备的id信息、deviceIp 设备的ip信息、deviceType设备类型,这个没啥好说的。最后这个jtSafeKey应该是个密钥(yue四声)。

到这里我们就简单的分析完成了,loginPwd是需要逆向的目标。

加密定位

搜索大法直接安排上
在这里插入图片描述
只有三个文件,第一个就是。所以说还是很幸运的,省去了很多时间和精力。点进文件接着用搜索大法搜索关键字:

在这里插入图片描述

23个,数量不是很多,慢慢找就行了
在这里插入图片描述

这是怕开发者找不到吗?注释都安排上了,盘它!

最有可疑的地方就是isBSSm2Union()函数,打上断点,进入函数。

在这里插入图片描述
这里并没有加密的逻辑,既然断点能在这里断下来。肯定说明加密点在这里(毕竟注释不会骗我们

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js逆向-国密SM2初探 的相关文章

  • 修复输入字段后,html5 oninvalid 不起作用

    我的表单中有这个输入代码
  • 根据传递的参数覆盖 Javascript 函数

    是否可以根据传递给函数的参数数量来重写函数 例如 function abc name document write My name is name function abc name friend document write My nam
  • AngularJS:选择非 2 路绑定到模型

    我正在使用选择来显示客户名称 用户应该能够选择现有客户端 然后更新范围属性 控制器 初始化 首选 if scope clients length gt 0 scope existingClient scope clients 0 View
  • React Native TypeError:无法读取未定义的属性“createClient”

    我是 React 本机框架的新手 我使用 create react native app AwesomeProject 创建了应用程序 我想在我的项目中使用 BLE 因此我安装了 react native ble plx 模块 但是当我创建
  • Mongoose 查找 array.length 大于 0 的所有文档并对数据进行排序

    我正在使用 mongoose 对 MongoDB 执行 CRUD 操作 这就是我的架构的样子 var EmployeeSchema new Schema name String description type String default
  • 修剪日期格式 PrimeNG 日历 - 删除时间戳、角度反应形式

    我将以下内容推入我的反应形式 obj 中2016 01 01T00 00 00 000Z但我想要以下2016 01 01 有谁知道有一个内置函数可以实现上述目的 我已经搜索过文档here https www primefaces org p
  • 如何避免 TypeScript 中出现虚假的“未使用参数”警告

    我遇到过很多次这种情况 最后决定弄清楚正确的方法是什么 如果我有一个声明方法的抽象父类 然后一些具体子类在其实现中实现真正的逻辑 并且显然使用方法参数 但某些子类不需要在该方法中执行任何操作 因此不要使用方法参数 那些不必执行任何操作的方法
  • 如何在 Angular 2 应用程序中使 DateAdapter 单例?

    我正在开发一个带有延迟加载模块的 Angular 7 应用程序 我也使用有角度的材料组件 我想在日期选择器组件中本地化并支持多个区域设置 当应用程序语言发生变化时 我想在整个应用程序中全局更改它 可以通过 DateAdapter setLo
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • 如何使用 jest 通过 Promise.all 设置多次提取测试

    我在测试中使用 jest 我正在使用 React 和 Redux 并且执行以下操作 function getData id notify return dispatch gt dispatch anotherFunction Promise
  • 如何更改元素的 CSS 类并在单击时删除所有其他类

    我如何处理 AngularJS 2 中的一种情况 即单击一个元素需要更改其自己的样式 并且如果其他元素具有该样式 则需要将其删除 最好在一个函数中 如同Angular js 如何在单击时更改元素 css 类并删除所有其他元素 https s
  • keystonejs 模型中的动态类型选择

    我想在 adminUI 中使用一个组合框 其中包含来自 Web 服务的字段 我正在考虑使用预 查找 挂钩获取数据 然后覆盖模式中 受众 属性的选项属性 Schema Compliance add title type Types Text
  • 模拟节点外部模块默认使用 jest 的链式方法

    在我们的节点 CLI 中 我们有一个简单的方法 use strict const ora require ora module exports function startSpinner textOnStart color spinnerT
  • 在firefox上用js改变表单方法

    我需要使用 javascript jQuery 或纯 更改表单的方法属性 我的表单有 method post 我尝试用以下方法更改它 submit button click function var url input id url val
  • 使用 javascript/jquery 从数据库格式化日期的正确方法

    我正在调用包含日期时间数据类型的数据库 日期看起来像这样 2005 05 23 16 06 00 000 当用户从列表中选择某个项目时 我想在表格中显示它 我调用我的控制器操作并返回所有时间的 Json 并将它们放入表中 问题是日期完全错误
  • 这个 JQuery 指令做什么 $(function(){...}) [重复]

    这个问题在这里已经有答案了 我最近一直在研究JQuery 尽管我知道一些东西 但书上有这样一句话我根本无法理解 function current entry 1 有谁知道这条线是如何工作的以及它的作用是什么 它类似于 JQuery 函数中的
  • JsGrid 将嵌套对象加载到表中

    我正在 Django 中开发一个 Web 项目并使用 jsGrid 我遇到了问题并且找不到解决方案 我有一个嵌套的 JSON 数据 它是通过组合多个数据库表记录创建的 这是我的 JSON count 3 results personnel
  • 角度 4 单击按钮功能未触发

    我正在尝试检查文本输入是否为空或不在角度 4 中 我没有为此使用表单 这只是一个输入字段 当我在下面的按钮中执行 addLocaton 函数时 需要进行检查 我的输入字段
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • Electron — 无法显示自定义图标

    我在以两种不同的方式设置 Electron 应用程序的图标时遇到问题 非打包 通过终端运行应用程序 我的 main js 确实指定了一个 图标 值 指向图标文件 但它不适用 包装 使用电子包装器 我的 package json 文件指定了

随机推荐

  • linux下安装awk

    sudo apt get install gawk 注意名称
  • Linux环境下 通过V4L2读取视频+UDP发送图片文件

    该图为整个项目的流程图 其中左边的流程为总流程 包括通过中断读取摄像头的帧数据 通过内存映射将内核态的数据映射到用户态 读取用户态的数据 采用循环发送图片数据 右边是发送图片的流程图 将用户态的缓冲区的数据通过内存映射到用户态 通过内存拷贝
  • java学习记录之JVM篇

    垃圾标记 gt 根可达 垃圾回收算法 复制算法 标记清除 标记整理 普通GC Minor GC 只针对新生代 新生代对象大多存活不高 垃圾回收频繁 回收速度较快 Full GC 全局gc 针对老年代 可能会伴随普通gc 速度较慢 回收算法有
  • window系统消失的c盘,实际占用与显示占用相差好多G

    问题 C盘一直显示的红色提醒 我c盘实际占用的空间只有33 1GB 而我的c盘总共大小是59 9GB 显示的剩余大小是1 35GB 也就是说我占用了58 11 和c盘的总文件大小相差了25GB 那么消失的25GB去了哪里 我百度过这个问题
  • 如何用微信自动添加wifi连接服务器地址,微信服务号如何实现扫码自动连接WIFI?详细步骤介绍!...

    微信服务号如何实现扫码自动连接WIFI 详细步骤介绍 有的朋友在运营这个微信公众号的时候 会想着如果有更多人关注自己的运营号就好了 但有的朋友没有找到好的办法 不知道如何吸引更多人的关注 下面小编给大家提供一个思路 就是当大家在关注微信公众
  • 移动端证件识别OCR

    证件识别利用的是ocr识别原理 也就是光学字符识别 证件识别方法有很多 先说第一种 用一个读港澳通行证的仪器就行 而且连上系统还能直接把信息导出成EXCEL文档 其实这个仪器叫做证件识别仪 可以识别护照 港澳通行证 台胞证 身份证 驾驶证
  • python pyplot logscale 画图对数

    原文来自公众号 工程师看海 事情的起因是我要在公众号 工程师看海 更新一篇文章 介绍电感 磁珠的区别 需要画阻抗 频率曲线 横坐标频率要按照log对数尺度缩放 就写了python代码 废话不多说 先看结果 公众号后台回复 python lo
  • 【Xilinx DDR3 MIG】Xilinx FPGA DDR3读写实验相关用户接口引脚解释

    目录 DDR3读写实验 实验框图 时钟模块 DDR3读写及LED指示模块 MIG IP核 用户接口解释
  • Python自定义异常 Python Custom Exception

    个人主页 Aurora 如果文章有什么需要改进的地方还请各位大佬指正 如果我的文章对你有帮助 关注 点赞 收藏 一 python自定义异常 1 自定义一个CustomException类 继承Exception类 2 编写CustomExc
  • cur.execute(sql,args)和cur.execute(sql)的区别

    python代码示例 方式一 userid 123 sql select id name from user where id s userid cur execute sql 方式二 sql语句模板中的参数填充符是 s 而不是 s 且多个
  • Linux上开发常见问题整理

    Linux上开发常见问题整理 1 java工程在linux上运行测试 首先要有一个main方法作为主类 程序的入口 右键 gt Run As gt javaapplication生成配置文件入口 右键该工程 gt Export gt Run
  • LaTeX 多行公式、公式对齐以及输入矩阵的方法

    一 LaTex显示 大括号连接的 多行公式 公式组合 使用cases环境实现公式的组合 分隔公式和条件 具体LaTex代码如下 D x begin cases lim limits x to 0 frac a x b c x lt 3 pi
  • tshark 解析pcap中带TLS协议的数据包

    tshark的简单用法参考 tshark解析本地pcap数据包提取五元组 src ip src port proto dst ip dst port 与时间戳 包长 详细用法 官方DOC 比如提取一个数据包 my pcap 中全部带有TLS
  • Oracle数据恢复:强制Resetlogs的可能数据损失

    Oracle数据恢复 强制Resetlogs的可能数据损失 Oracle数据恢复 格式化 ASM及字典损坏案例三则 ORA 00600 kcratr nab less than odr案例一则 SMON recover undo segme
  • 简易DOCKER/K8S使用心得

    1 DOCKER安装 1 1 前置环境 首先 如果使用CentOS 你至少需要7 4以上 从内核角度来说 建议使用8 2及以上 如果是7 4以下的版本 可以通过设置仓库到7 4以上版本 再 yum install centos releas
  • 计算机内存数值存储方式-原码、反码、补码、数值溢出

    计算机内存数值存储方式 1 原码 一个数的原码 原始的二进制码 有如下特点 最高位做为符号位 0表示正 为1表示负 其它数值部分就是数值本身绝对值的二进制数 负数的原码是在其绝对值的基础上 最高位变为1 下面数值以1字节的大小描述 原码表示
  • 手把手教你实现一个向量

    文章目录 什么是向量 向量提供哪些接口 实现 宏定义 定义类 成员变量 构造函数与析构函数 构造函数 析构函数 成员函数 size get r put r e expand insert r e remove lo hi remove r
  • nodejs获取时间戳

    可以使用 JavaScript 内置的 Date 对象来获取当前的时间戳 可以使用 Date now 方法来获取当前的时间戳 consttimestamp Date now console log timestamp 也可以使用 Date
  • 轻松掌握Python自动化工具,解锁PyAutoGUI的强大功能

    前言 PyAutoGUI是一个用于图像识别和鼠标 键盘控制的Python库 它提供了一组函数和方法 用于自动化屏幕上的鼠标移动 点击 拖拽和键盘输入 以及执行图像识别和处理 本文旨在帮助读者入门 PyAutoGUI 理解其基础概念和掌握最佳
  • js逆向-国密SM2初探

    目录 前言 目标网站 加密分析 加密定位 结尾 本文仅供学习使用 切勿非法使用 如有侵权请联系作者及时删除 前言 无意中看到一个网站采用国密SM2算法进行登陆参数进行加密 之前接触的加密基本都是国外的算法 例如RSA DES MD5等等 国