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

2024熵密杯初始题2

问题简要:

已知
counter = 0x7501E6EA
token = 0xF4CE927C79B616E8E8F7223828794EEDF9B16591AE572172572D51E135E0D21A
伪造出另一个可以通过验证的counter和token。

给出token生成及验证代码如下:

import binascii
from gmssl import sm3# 读取HMAC key文件
def read_hmac_key(file_path):with open(file_path, 'rb') as f:hmac_key = f.read().strip()return hmac_key# 生成token
def generate_token(hmac_key, counter):# 如果HMAC_KEY长度不足32字节,则在末尾补0,超过64字节则截断if len(hmac_key) < 32:hmac_key = hmac_key.ljust(32, b'\x00')elif len(hmac_key) > 32:hmac_key = hmac_key[:32]# 将计数器转换为字节表示counter_bytes = counter.to_bytes((counter.bit_length() + 7) // 8, 'big')# print("counter_bytes:", binascii.hexlify(counter_bytes))tobe_hashed = bytearray(hmac_key + counter_bytes)# print("tobe_hashed:", binascii.hexlify(tobe_hashed))# 使用SM3算法计算哈希值sm3_hash = sm3.sm3_hash(tobe_hashed)# 将SM3的哈希值转换为十六进制字符串作为tokentoken = sm3_hashreturn tokencurrent_counter = 0
def verify_token(hmac_key, counter, token):# 生成tokengenerated_token = generate_token(hmac_key, counter)global current_counter# 比较生成的token和输入的token是否相同if generated_token == token:if counter & 0xFFFFFFFF > current_counter:current_counter = counter & 0xFFFFFFFFprint("current_counter: ", hex(current_counter))return "Success"else:return "Error: counter must be increasing"else:return "Error: token not match"# 假设HMAC key文件路径
hmac_key_file = 'hmac_key.txt'# 假设计数器值
counter = 0x12345678# 读取HMAC key
hmac_key = read_hmac_key(hmac_key_file)# 生成token
token = generate_token(hmac_key, counter)
print("Generated token:", token)
print(verify_token(hmac_key, counter, token))

解题思路:
(1)token的生成算法为SM3,算法的输入包括2个部分:hmac_key||counter,其中hmac_key无法掌握,counter可自由选择。
(2)hmac_key为定长32字节,且以头部形式拼接counter。
(3)SM3算法分组长度64字节,输出长度32字节。
(4)通过以上分析,恰好符合Hash扩展长度攻击条件特征。
(之前以MD5算法为例介绍过Hash扩展长度攻击实例,有兴趣可以参考https://blog.csdn.net/ryanzzzzz/article/details/142325183 )

SM3算法的分组填充规则如下:
若输入长度L比特的消息,首先在消息末尾填充比特"1",然后填充k个"0",k满足L+k+1=448 mod 512的最小非负整数,最后填充64位的二进制串(L的二进制表示)。

开始构造新的counter:
(1)已掌握counter(7501E6EA),长度4字节
(2)0x80,长度1字节
(3)0x00 * 19,长度19字节
(4)0x0000000000000120,长度8字节
(5)0xAA * 4,长度4字节
即伪造的counter = 0x7501E6EA80000000000000000000000000000000000000000000000000000120AAAAAAAA

开始构造新的token:
(1)修改SM3算法代码,将IV值改为0xF4CE927C79B616E8E8F7223828794EEDF9B16591AE572172572D51E135E0D21A(也就是掌握的token)
(2)修改SM3算法代码,将消息长度len += 512
(3)运行修改后SM3杂凑算法,输入0xAAAAAAAA,输出即为对应的token。

相关文章:

2024熵密杯初始题2

问题简要&#xff1a; 已知 counter 0x7501E6EA token 0xF4CE927C79B616E8E8F7223828794EEDF9B16591AE572172572D51E135E0D21A 伪造出另一个可以通过验证的counter和token。 给出token生成及验证代码如下&#xff1a; import binascii from gmssl import sm3# 读取HMAC ke…...

echarts属性之title

title 标题组件&#xff0c;包含主标题和副标题。 在 ECharts 2.x 中单个 ECharts 实例最多只能拥有一个标题组件。但是在 ECharts 3 中可以存在任意多个标题组件&#xff0c;这在需要标题进行排版&#xff0c;或者单个实例中的多个图表都需要标题时会比较有用。 例如下面不…...

VUE errolog, vue 错误集

I) installation As to command “npm install” on cmd or powershell, we must execute it under the program folder...

驱动开发系列13 - Linux tasklet用法介绍

一:概述 Tasklet 是 Linux 内核中的一种轻量级任务调度机制,通常用于在中断上下文中执行短小的任务。它们在软中断处理过程中被调用,允许将较长的处理工作延后到一个较低优先级的上下文中,以减少中断处理的延迟。Tasklet 的使用可以帮助开发者更好地管理系统资源,提高性能…...

redis实现分布式锁,go实现完整code

Redis分布式锁 Redis 分布式锁是一种使用 Redis 数据库实现分布式锁的方式&#xff0c;可以保证在分布式环境中同一时间只有一个实例可以访问共享资源。 实现机制 以下是实现其加锁步骤&#xff1a; 获取锁 在 Redis 中&#xff0c;一个相同的key代表一把锁。是否拥有这把锁&…...

解析日期、编码

解析日期 这里指的是将字符串或者object类型的日期&#xff0c;转换成panda或python的日期类型。 主要的是dtype的变化&#xff1a;object / str —> datetime64[ns] # modules well use import pandas as pd import numpy as np import seaborn as sns import datetime# …...

【Qt】QApplication::restoreOverrideCursor():恢复鼠标光标到原始状态的用法解析

restoreOverrideCursor() 是 Qt 中 QApplication 类提供的一个静态函数&#xff0c;用来恢复鼠标光标到应用程序之前设置的状态。 在 Qt 中&#xff0c;你可以使用 QApplication::setOverrideCursor() 来临时更改鼠标光标的外观。例如&#xff0c;当执行一些耗时操作时&#x…...

重生之“我打数据结构,真的假的?”--2.单链表(无习题)

C语言中的单链表总结 单链表是一种基础的数据结构&#xff0c;广泛应用于C语言编程中。它由节点组成&#xff0c;每个节点包含数据和指向下一个节点的指针。单链表的优点在于动态内存分配和高效的插入与删除操作。本文将详细探讨单链表的定义、基本操作、应用场景以及相关示例…...

【有啥问啥】视频插帧算法技术原理详解

视频插帧算法技术原理详解 引言 视频插帧&#xff08;Video Interpolation&#xff09;技术&#xff0c;作为计算机视觉领域的一项重要应用&#xff0c;旨在通过算法手段在已有的视频帧之间插入额外的帧&#xff0c;从而提升视频的帧率&#xff0c;使其看起来更加流畅。这一技…...

Leetcode148,109以及二者的合并 -> Tencent面试算法题 - 无序双向链表转BST

根源简述 这道题是腾讯在2024/8/30考的一道面试题&#xff0c;整体来说&#xff0c;难度不大&#xff0c;就是代码量稍稍有点儿大&#xff0c;让我们一起来看一下吧 题目描述 整数无序双向链表能否转BST&#xff08;二叉搜索树&#xff09;&#xff0c;如果能&#xff0c;怎么转…...

【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python计算小球 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算小球 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…...

获取Hive表备注

DESCRIBE EXTENDED 表名;先获取Detailed Table Information这行的data_type字段数据&#xff0c;进行正则匹配&#xff0c;拿到表备注&#xff0c;如下&#xff1a; String str ReUtil.get("parameters:\\{(?!.*?\\().*transient_lastDdlTime.*?comment(.*?)\\}&quo…...

10.30学习

一、科学计数法 C语言中的科学计数法主要用于表示非常大或非常小的浮点数&#xff0c;它遵循以下格式&#xff1a; 1. E或e表示指数&#xff1a; 科学计数法中的E或e用来表示“指数”&#xff08;Exponent&#xff09;。例如&#xff0c; 1.23e4 或 1.23E4 表示 1.23 * 10^4…...

什么是栈溢出

一、什么是栈溢出 栈溢出&#xff08;Stack Overflow&#xff09;就是指在程序运行过程中&#xff0c;往栈里存放的数据超过了栈所能容纳的最大容量&#xff0c;从而导致程序出现异常行为的情况。这就好比一个箱子本来只能装一定数量的物品&#xff0c;硬要往里面塞更多的东西&…...

在linux中arm-linux-gcc和/usr/bin/gcc有啥区别

在Linux中&#xff0c;arm-linux-gcc和/usr/bin/gcc都是编译器&#xff0c;但它们之间存在显著的区别&#xff0c;主要体现在编译目标、使用场景以及编译生成的二进制文件的可执行性上。而软链接则是Linux文件系统中的一种特殊文件类型&#xff0c;用于创建一个文件的别名。 a…...

常用环境部署(二十二)——MySQL的数据库迁移到另一个机器上

1、导出原数据库的数据 mysqldump -u [用户名] -p[密码] [数据库名] > database_dump.sql 命令示例&#xff1a; mysqldump -u root -p123456 wd > /opt/wd.sql 2、在新机器上创建数据库 mysql -u [用户名] -p -e "CREATE DATABASE [新数据库名]" 命令示…...

两台主机只能单方向ping通

可能性比较大的原因时ping不通的那台主机安装了个人防火墙。 在共享上网的机器中&#xff0c;出于安全考虑&#xff0c;大部分主机都安装个人防火墙软件。几乎所有个人防火墙软件默认不允许其他机器ping本机。一般的做法是将来自外部的ICMP请求报文滤掉&#xff0c;对本机出去的…...

redis windows 5.0 下载

Redis 简介 Redis 是一个高性能的 key-value 数据库&#xff0c;广泛应用于缓存、消息队列、实时分析等场景。它支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、有序集合等&#xff0c;并且提供了丰富的操作命令&#xff0c;能够满足各种复杂的数据处理需求。 下载…...

视频转gif怎么转换?6种视频格式转换简单方法分享,附操作截图!

gif动图凭借其简洁而生动的特点&#xff0c;已成为互联网交流中不可或缺的一部分。尽管gif和视频在技术上有所不同&#xff0c;但两者都能以短小的帧展现动作&#xff0c;而gif通常不带声音&#xff0c;具备循环播放的特性。因此&#xff0c;出于创建gif动图、存储更多媒体文件…...

StructRAG简介

StructRAG是一种新型的框架&#xff0c;旨在提升大型语言模型&#xff08;LLMs&#xff09;在知识密集型推理任务中的性能。它通过推理时的混合信息结构化机制&#xff0c;根据任务需求以最合适的格式构建和利用结构化知识。 以下是StructRAG的核心组成部分和工作流程&#xff…...

java脚手架系列12-mongoDB

之所以想写这一系列&#xff0c;是因为之前工作过程中有几次项目是从零开始搭建的&#xff0c;而且项目涉及的内容还不少。在这过程中&#xff0c;遇到了很多棘手的非业务问题&#xff0c;在不断实践过程中慢慢积累出一些基本的实践经验&#xff0c;认为这些与业务无关的基本的…...

python四舍五入保留两位小数

在 Python 中&#xff0c;你可以使用内置的 round() 函数来对数字进行四舍五入并保留两位小数。round() 函数有两个参数&#xff1a;要四舍五入的数字和要保留的小数位数。以下是一个简单的示例&#xff1a; # 示例数字 number 3.14159# 四舍五入保留两位小数 rounded_number…...

期权懂|有什么期权交易策略能够稳赚不赔的?

期权小懂小编每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 有什么期权交易策略能够稳赚不赔的? 期权交易具有风险性&#xff0c;没有任何一种策略能够保证稳赚不赔。 以下是一些常见的期权交易策略&#xff0c;虽不能保证盈利&#…...

笔记本脱机状态

先是显示脱机&#xff0c;请尝试其他方法登录 1.按照联想客服&#xff0c;进入高级选项里面&#xff0c;清除两个更新项目&#xff0c;没有卸载成功 2.安装wepe&#xff0c;先是能检测到U盘&#xff0c;但是进不去&#xff0c;然后我淘宝淘帮我做盘&#xff0c;我自己重新装了一…...

Node.js:模块 包

Node.js&#xff1a;模块 & 包 模块module对象 包npm安装包配置文件镜像源 分类 模块 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 简单来说&#xff0c;就是把一个…...

油动无人机动力测试台-60公斤级-Flight Stand 60 ICE

产品简介 通过Flight Stand 60 ICE测试台对内燃机和螺旋桨的拉力&#xff0c;扭矩&#xff0c;转速&#xff0c;燃油流量&#xff0c;温度&#xff0c;功率和螺旋桨效率的测量&#xff0c;帮助用户精准地描述和评估其性能参数&#xff0c;以不断地优化和提升燃油动力系统性能。…...

给grasshopper中的python脚本电池加个标签

ghenv.Component.Message test使用python脚本创建的电池&#xff0c;也可以保存起来。 File – Create User Object...

别被忽悠了 Lua 数组真的也可以从 0 开始索引?

先前我说 Lua 数组从 1 开始不太爽&#xff0c;很多人来纠正我说也可以从 0 开始&#xff0c;比如&#xff1a; local m { [0] 100, 101, 102, 103 }然后访问时 m[0] 也可以正常访问到第 0 个元素&#xff0c;所以 “Lua 给你充分自由度&#xff0c;让你可以从任意下标索引数…...

docker占用磁盘过多问题

我在windows系统上用docker&#xff0c;安装在C盘环境下&#xff0c;我发现C盘占用了大量的空间&#xff0c;查找后发现是docker的映像文件占用的&#xff0c;于是开始清理&#xff0c;中间还踩个坑&#xff0c;记录一下&#xff0c;下次需要的时候方便找。 踩坑 我本想移动映…...

[实时计算flink]使用Python依赖

您可以在Flink Python作业中使用自定义的Python虚拟环境、第三方Python包、JAR包和数据文件等&#xff0c;本文为您介绍如何在Python作业中使用这些依赖。 使用自定义的Python虚拟环境 说明 VVR 4.x仅支持3.7版本的Python虚拟环境&#xff0c;VVR 6.x及以上的版本无此限制&a…...

做视频网站用什么源码/兰州网络推广技术

属性 类型 默认值 autoOpen Boolean true 实例化时是否自动显示对话框。设置为 false 时&#xff0c;使用 open 方法显示对话框。 false 代码示例 创建实例时设置属性值 $(".class").dialog({…...

如何做网站轮播大图/关键词优化排名软件案例

mongodb由C&#xff0b;&#xff0b;写就&#xff0c;其名字来自humongous这个单词的中间部分&#xff0c;从名字可见其野心所在就是海量数据的处理。关于它的一个最简洁描述为&#xff1a;scalable, high-performance, open source, schema-free, document-oriented database。…...

网页源代码翻译/佛山seo技术

来源&#xff1a;AI早餐汇 授权 产业智能官 转载 Chloe撰文 Linda编辑12月8日,中国知名的大数据分析和可视化领域领导者&#xff0c;海云数据在北京发布图易6和AI能力服务平台新品&#xff0c;介绍了包括公安系统在内的多个行业AI落地实践。(注&#xff1a;海云数据目前有60%的…...

简易网站建设/微信附近人推广引流

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020年A特种设备相关管理&#xff08;电梯&#xff09;考试题及A特种设备相关管理&#xff08;电梯&#xff09;找答案&#xff0c;包含A特种设备相关管理&#xff08;电梯&#xff09;考试题答案和解析及A特种设备相…...

wordpress网站数据库/广告网络营销

步骤 打开所给场景&#xff1a; 发现一个输入框&#xff0c;试一下有没有sql注入&#xff0c;使用burp进行抓包&#xff08;不知道什么原因使用hackbar提交数据页面没变化&#xff0c;卡了好久&#xff09;&#xff1a; 发现单引号会出现错误&#xff0c;继续进行注入&#…...

市场调查 网站建设/网站推广入口

环境(centos 6.10)&#xff1a; $ uname -r 2.6.32-754.el6.x86_64函数定义&#xff1a; // /usr/include/libgen.h extern char *__xpg_basename (char *__path) __THROW; #define basename __xpg_basename这个basename函数可以返回路径最后一个路径分隔符之后的内容…...