首先,拿到了一个server.py文件,我们先来分析代码:这次引用的包和之前的不太一样这个类先定义了很多量子操作门,Z,X,H,CNOT具体的量子电路效果前两篇文章有过相关解释接下来定义了单比特投影测量,投影测量分为了两个基,X基和Z基,简单来讲的话:X基:+态测得0,-态测得1Z基:0态测得0,1态测得1其中+为0经过H门变成的叠加态(|0>+|1>)/根号2 -为0经过H门变成的叠加态(|0>-|1>)/根号2这个函数就是输入不同的基态可以获得不同的投影算符从上面的函数中按照要求获取投影算符然后用张量积连接起来(即为不同的线路)调用上面的projector函数获取连接好的投影算符对量子态进行测量
里面有个encoder,用来映射的。其中basis(d, k)中d表示维度,k为基态索引。那么也就是说basis(2,0)就表示0态所以映射关系为: 00 -- |0>态和Z基 01 -- |1>态和Z基 10 -- |+>态和X基 11 -- |->态和X基把每个字节转为8位二进制串,然后再把二进制串2个2个分组比如输入:b'\x02'则转化为00000010再分组为['00','00','00','10']输入bits使用刚才的encoder进行映射编码,给q0线路q1线路和q2线路初始态都是0态再使用张量积tensor三条线路表示整个3qbit电路的初始状态然后再使用如下几个门后状态如下:只不过下图的q0不一定是0态作为初态而是编码后得到的这个是往电路里面添加门的函数,我们这次可以使用三种门Z,X,H把flag.txt文件转化为bit,对于每一个bit搞一个刚才的电路,也就是encode之后给q0,会给我们encode的基是Z或者X,然后施加电路并且对q0和q1进行以Z基测量告诉我们测量结果。接下来我们可以加门然后对q2指定测量基并且测量。
所以如果我们可以通过他给出的信息:
1.encode的基是Z或者X2.q0和q1进行以Z基测量3.我们的操作和对q2的指定基测量通过上面三个信息逆向出来flag最初的bit是00到11中的哪一个即可还原flagX和H门往期见过了,这次介绍一下Z门
它用来做相位反转,然后+和-两个态分别对应:
登录后可查看完整内容
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289643.htm
[原创]量子安全 quantum ctf (3) Flagportation Hack the box
136 浏览
2 回复
图片丢了 麻烦补下
Editor
图片丢了 麻烦补下
好的,已经补充啦
图片丢了 麻烦补下
好的,已经补充啦