[华为杯] my_lcg

一周参加培训,看见群里这个附件,后来问了大姥,此题确实有问题。在整理后终于明白怎么加事。

原题通过一个3参2变量的LCG对flag进行加密(每次两字符),但给出的是完整32位,并给出其中一个seed值,经运算这个给出的值不正确。不过由于给出的是完整的32位结果,所以可以直接算出参数。

加密是通过flag每4字节再来seed右移16位得到(密文前两字节可直接得到)

from Crypto.Util.number import*
from secret import flagassert(flag[0:5]==b"flag{" )
assert(flag[-1:]==b"}" )
flag = flag[7:-1]
print(len(flag))class LCG:def __init__(self):self.a = getRandomNBitInteger(32)self.b = getRandomNBitInteger(32)self.c = getRandomNBitInteger(32)self.m = getPrime(32)self.seed1 = getRandomNBitInteger(32)self.seed2 = getRandomNBitInteger(32)def next(self):tmp = self.seed2self.seed2 = (self.a*self.seed1+self.b*self.seed2 +self.c) % self.mself.seed1 = tmp#return self.seed2 >> 16return self.seed2   #从给出的T来看,是32位的def output(self):print("m = {}".format(self.m))print("self.seed1= {}".format(self.seed1))print("self.seed2= {}".format(self.seed2))L = LCG()
T = [0]#这里需要经过k次叠代,原题未给出叠代过程
for k in range(random(10)):T.append(L.next())#L.output()   在经过k次叠代后输出,并不重要,没有意思,但显然并不是第1次的结果for i in range(9):tmp = bytes_to_long(flag[i*4:i*4+4])tt = L.next()T.append(tt)print(tmp^(tt>>16))  #由于给出的tt并不是16位而是完整的32位,加密时使用的应该是16位
print(T[:6])
print("Have a good time!")'''
m = 3533156827
seed1 = 2970464585
seed2 = 3350124366
enc = [909619317, 912378641, 761422938, 841844503, 1701111746, 1701194992, 959752815, 892545567, 1667598316]
T = [0,3180180532,86337434,1850726346,2970464585,3350124366]
'''

这题由于给出了seed1,seed2所以显得很难理解,如果加上前部叠代次数就很正常了

由于给出6个完整的结果,可以直接算出参数a,b,c再通过叠代k次得到加密序列

m = 3533156827
seed1 = 2970464585
seed2 = 3350124366
enc = [909619317, 912378641, 761422938, 841844503, 1701111746, 1701194992, 959752815, 892545567, 1667598316]
T = [0,3180180532,86337434,1850726346,2970464585,3350124366]
T = T[1:]#先用groebner_basis求参
#这里还用不到seed1,seed2 
P.<a,b,c,s1,s2>=GF(m)[]
F = []
#F.append(s1 - seed1)  #从原题看这里不是seed1,seed2
#F.append(s2 - seed2)
for i in range(len(T)):s1,s2 = s2, a*s1 + b*s2 + c F.append(s2 - T[i])I = Ideal(F).groebner_basis()
print(I)
# 求解参数a b c
res=[x.constant_coefficient() for x in I]
a = -res[0]%m
b = -res[1]%m 
c = -res[2]%m 
#a,b,c = 3222280379, 2578155191, 3272724155

然后可以用这个seed1,seed2算后边的加密序列,从而解密

from Crypto.Util.number import long_to_bytes as l2b#使enc^^T[n]为UUID
s1,s2 = seed1,seed2 
flag = b''
for i in range(9):s1,s2 = s2,a*s1 + b*s2 + c  print(s2)flag += l2b(enc[i]^^(int(s2)>>16))print(flag)
#flag{67456ac9-b362-11ed-aef7-94085339ce84}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146246.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

大数据Flink(九十):Lookup Join(维表 Join)

文章目录 Lookup Join(维表 Join) Lookup Join(维表 Join) Lookup Join 定义(支持 Batch\Streaming):Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维表 Join。…

“童”趣迎国庆 安全“童”行-柿铺梁坡社区开展迎国庆活动

“金秋十月好心境&#xff0c;举国欢腾迎国庆。”国庆节来临之际&#xff0c;为进一步加强梁坡社区未成年人爱国主义教育&#xff0c;丰富文化生活&#xff0c;营造热烈喜庆、文明和谐的节日氛围。9月24日上午&#xff0c;樊城区柿铺街道梁坡社区新时代文明实践站联合襄阳市和时…

[异构图-论文阅读]Heterogeneous Graph Transformer

这篇论文介绍了一种用于建模Web规模异构图的异构图变换器(HGT)架构。以下是主要的要点: 摘要和引言 (第1页) 异构图被用来抽象和建模复杂系统,其中不同类型的对象以各种方式相互作用。许多现有的图神经网络(GNNs)主要针对同构图设计,无法有效表示异构结构。HGT通过设计…

暴力破解及验证码安全

1.暴力破解注意事项 1、破解前一定要有一个有郊的字典&#xff08;Top100 TOP2000 csdn QQ 163等密码&#xff09; https://www.bugku.com/mima/ 密码生成器 2、判断用户是否设置了复杂的密码 在注册页面注册一个,用简单密码看是否可以注册成功 3、网站是…

KNN(上):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

283. 多边形,《算法竞赛进阶指南》,

283. 多边形 - AcWing题库 “多边形游戏”是一款单人益智游戏。 游戏开始时&#xff0c;给定玩家一个具有 N 个顶点 N 条边&#xff08;编号 1∼N&#xff09;的多边形&#xff0c;如图 1 所示&#xff0c;其中 N4 每个顶点上写有一个整数&#xff0c;每个边上标有一个运算符…

Python语言:函数的使用

按我的理解&#xff0c;编程世界中的函数就是一个模块&#xff1a;提前写好一个特动功能&#xff0c;方便以后直接调用且实现其功能&#xff0c;可以大大提高工作效率。 今天我们通过一个python语言的函数使用小案例来进一步加深对函数的理解。案例名字为S的银行之行。S是一个吝…

什么是DevOps

文章目录 一、概念二、地位三、目标四、要求五、具体手段 一、概念 是一组过程、方法与系统的统称&#xff0c;有助于打破开发、测试、运维、交付部门之间的壁垒&#xff0c;提高部门间的沟通协助能力。 二、地位 应成为公司的一种理念、文化、哲学。 三、目标 实现更加高…

【前段基础入门之】=>你不知道的 CSS 选择器的进阶使用!

导语&#xff1a; 在上一章节中&#xff0c;我们了解了 CSS 的一些基本语法概念&#xff0c;那么在这一章节中我们就带来 CSS 选择器知识的分享&#xff0c;选择器这一章的知识点有一点多&#xff0c;不过我们只要认真去理解&#xff0c;学习它也是没什么问题的&#xff0c;还有…

STM32之DMA

简介 • DMA &#xff08; Direct Memory Access &#xff09;直接存储器存取 &#xff08;可以直接访问STM32内部存储器&#xff0c;如SRAM、程序存储器Flash和寄存器等&#xff09; •DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&a…

解决内网拉取企微会话存档代理问题的一种办法

问题&#xff1a;客户的服务都是内网的&#xff0c;不能直接访问外网&#xff1b;访问外网的话需要走kong网关才能出去。 会话存档官网说可以使用socket5、http方式拉取会话存档&#xff1b;我这边尝试了直接使用kong网关的ip和端口配置进去&#xff0c;是访问不了的 我后面就…

Unity之Hololens如何实现3D物体交互

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

《三国志》游戏的MySQL数据设计与管理

在任何成功的游戏背后,都有一个精心设计和管理的数据系统。这不仅决定了游戏的运行效率,还直接影响到玩家的游戏体验。 本文将深入探讨著名游戏《三国志》中的数据设计和管理。本文将讲解游戏中核心的数据元素、数据管理方法,以及开发团队在数据方面所做的工作。 文章目录 …

【CFD小工坊】浅水方程的离散及求解方法

【CFD小工坊】浅水方程的离散及求解方法 前言基于有限体积法的方程离散界面通量与源项计算干-湿网格的处理数值离散的稳定性条件参考文献 前言 我们模型的控制方程&#xff0c;即浅水方程组的表达式如下&#xff1a; ∂ U ∂ t ∂ E ( U ) ∂ x ∂ G ( U ) ∂ y S ( U ) U…

matlab 计算数组中所有值的均值

目录 一、概述1、算法概述2、主要函数3、输入参数4、输出参数二、代码实现三、结果展示四、参考链接本文由CSDN点云侠翻译,放入付费专栏只为防不要脸的爬虫。专栏值钱的不是本文,切勿因本文而订阅。 一、概述 1、算法概述 矩阵元素的平均值或均值。 2、主要函数<

【kubernetes】kubernetes中的Deployment使用

1 Why need Deployment? K8S中Pod是用户管理工作负载的基本单位&#xff0c;Pod通常通过Service进行暴露&#xff0c;因此&#xff0c;通常需要管理一组Pod&#xff0c;RC和RS主要就实现了一组Pod的管理工作&#xff0c;其中&#xff0c;RC和RS的区别在于&#xff0c;RS提供更…

Golang的性能优化

欢迎&#xff0c;学习者们&#xff0c;来到Golang性能优化的令人兴奋的世界&#xff01;作为开发者&#xff0c;我们都努力创建高效、闪电般快速的应用程序&#xff0c;以提供出色的用户体验。在本文中&#xff0c;我们将探讨优化Golang应用程序性能的基本技巧。所以&#xff0…

uniapp h5 端 router.base设置history后仍有#号

manifest.json文件设置&#xff1a; "h5": { "router": { "base": "./", "mode": "history" }, }按相对路径发行时路由模式强制为hash模式&#xff0c;不支持history模式&#xff08;两者相悖&#xff09;…

提取PDF数据:Documents for PDF ( GcPdf )

在当今数据驱动的世界中&#xff0c;从 PDF 文档中无缝提取结构化表格数据已成为开发人员的一项关键任务。借助GrapeCity Documents for PDF ( GcPdf )&#xff0c;您可以使用 C# 以编程方式轻松解锁这些 PDF 中隐藏的信息宝藏。 考虑一下 PDF&#xff08;最常用的文档格式之一…

Spark性能监测+集群配置

spark-dashboard 参考链接 架构图 Spark官网中提供了一系列的接口可以查看任务运行时的各种指标 运行 卸载docker https://blog.csdn.net/wangerrong/article/details/126750198 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest…