第二届parloo杯ctf复现


parloo

MISC

时间循环的信使

题目描述:

1
某神秘组织通过时间循环传递加密信息,我们在捕获的流量日志中发现异常时间戳。日志文件显示:"在错误的时间做正确的事,在正确的时间解开谜题",flag格式为palu{xxx}

下载附件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
1745396077|start_of_cycle
1745396794|24a7ffd6
1745396047|c9de3dbe
1745394659|b9d8ae71
1745398359|8db56fff
1745395622|b4842a73
1745397297|33333333
1745397480|33333333
1745399066|dddddddd
1745399005|77777777
1745398822|00000000
1745397968|33333333
1745398761|33333333
1745398334|33333333
1745397724|33333333
1745398883|77777777
1745398517|66666666
1745398944|88888888
1745398578|cccccccc
1745398273|66666666
1745398700|ffffffff
1745398212|11111111
1745398395|44444444
1745398639|55555555
1745398456|00000000
1745397846|99999999
1745397419|77777777
1745398151|33333333
1745397785|77777777
1745397907|66666666
1745396321|66666666
1745398090|cccccccc
1745396687|55555555
1745398029|66666666
1745397175|55555555
1745394161|a1625710
1745397663|66666666
1745396565|77777777
1745397541|55555555
1745397602|ffffffff
1745397053|66666666
1745397236|ffffffff
1745396931|66666666
1745397114|55555555
1745397358|11111111
1745396992|dddddddd
1745396748|44444444
1745396626|bbbbbbbb
1745396138|00000000
1745396809|66666666
1745396870|99999999
1745396443|77777777
1745398018|fc8ed0ca
1745396382|cccccccc
1745397979|34ab068b
1745396199|66666666
1745394683|6836824f
1745396504|55555555
1745393898|28dac2ac
1745398801|d6299052
1745395162|9b1e86b7
1745396260|11111111
1745393003|0d24ea09
1745393325|760b22f2
1745393523|164fabd0
1745396077|77777777
1745396237|9d88cb0f
1745394326|ecbc8ba2
1745392873|fb621cc6
1745395817|dff1f0ab
1745397424|1aa62ae2
1745399066|end_of_cycle

按照时间戳排序,提取首字符,并将十六进制转换为ASCII

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
def extract_flag(log_path):
"""
从日志文件中提取flag
优化点:
1. 更好的错误处理
2. 验证十六进制字符
3. 处理奇数长度十六进制串
4. 更清晰的代码结构
"""
entries = []

# 1. 读取和解析文件
try:
with open(log_path, 'r') as f:
for line in f:
line = line.strip()

# 跳过无效行
if (line.startswith('start_of_cycle') or
line.startswith('end_of_cycle') or
'|' not in line):
continue

# 分割时间戳和值
try:
timestamp_str, value = line.split('|', 1)
timestamp = int(timestamp_str)
except ValueError:
continue

# 验证值是否符合要求
if (len(value) == 8 and
all(c == value[0] for c in value) and
all(c in '0123456789abcdef' for c in value.lower())):
entries.append((timestamp, value))

except FileNotFoundError:
print(f"错误: 文件 {log_path} 未找到")
return None, None
except Exception as e:
print(f"读取文件时出错: {str(e)}")
return None, None

# 2. 处理提取的数据
if not entries:
print("警告: 未找到有效数据")
return None, None

# 按时间戳排序
entries.sort(key=lambda x: x[0])

# 提取首字符并拼接
hex_str = ''.join(v[0] for _, v in entries)

# 3. 处理十六进制串
# 确保长度为偶数
if len(hex_str) % 2 != 0:
print(f"警告: 十六进制串长度为奇数({len(hex_str)}), 自动截断")
hex_str = hex_str[:-1] # 去掉最后一个字符

# 4. 解码为ASCII
try:
flag = bytes.fromhex(hex_str).decode('utf-8')
except ValueError as e:
print(f"解码十六进制时出错: {str(e)}")
return hex_str, None

return hex_str, flag


if __name__ == "__main__":
log_file = 'D:\\tmp\\timeloop.log-20250518180701-6802v7l\\timeloop.log'
hex_sequence, extracted_flag = extract_flag(log_file)

if hex_sequence is not None:
print("提取的十六进制串:", hex_sequence)

if extracted_flag is not None:
print("解码得到的 Flag:", extracted_flag)
else:
print("未能解码出有效的 Flag")

运行得到

最后flag为

1
palu{Time_1s_cycl1c@l_0x}

时间折叠(TimeFold Paradox)

题目描述:

1
某服务器系统日志中发现异常的时间戳记录,所有时间均显示为"1970-01-01 08:00:00"。技术员发现日志中存在与时间无关的二进制干扰信号,你能从被折叠的时空中找到隐藏的flag吗?

下载附件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[1970-01-01 08:00:00] System boot sequence initiated
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 00000000fe ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 10000000ef ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 20000000e2 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 30000000fb ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 40000000f5 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 50000000da ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 60000000e6 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 70000000e7 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 80000000fd ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 90000000d1 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 100000000e7 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 110000000fd ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 120000000d1 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 130000000cf ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 140000000d1 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 150000000dd ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 160000000ef ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 170000000e3 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 180000000fe ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 190000000e2 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 200000000eb ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 210000000d1 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 220000000c8 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 230000000e2 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 240000000ef ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 250000000e9 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 260000000d1 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 270000000cd ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 280000000e6 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 290000000ef ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 300000000e0 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 310000000e9 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 320000000eb ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 330000000d1 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 340000000c3 ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 350000000eb ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 360000000af ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 370000000af ns
[1970-01-01 08:00:00] SYSTEM ALERT: Time anomaly detected at 380000000f3 ns
[1970-01-01 08:00:00] System entering chronostasis mode

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import re

def extract_hidden_string(log_path):
result_bytes = []
pattern = re.compile(r"Time anomaly detected at ([0-9A-Fa-f]+) ns")

with open(log_path, 'r') as f:
for line in f:
m = pattern.search(line)
if not m:
continue
hex_str = m.group(1)

value = int(hex_str, 16)
low_byte = value & 0xFF # 取最低字节
cleared = low_byte & 0x7F # 清除高位
decoded = cleared ^ 0x0E # 与 0x0E 异或
result_bytes.append(decoded)

hidden = bytes(result_bytes).decode('utf-8', errors='replace')
return hidden

if __name__ == "__main__":
log_file = 'D:\\tmp\\timefold.log-20250518180758-h9knw8w\\timefold.log' # 请根据实际路径修改
hidden_flag = extract_hidden_string(log_file)
print("提取到的隐藏字符串:", hidden_flag)

运行得到

不写脚本的话,可以直接赛博厨子一把梭

最后flag为

1
palu{This_is_A_Sample_Flag_Change_Me!!}

时空交织的密语

题目描述:

1
我们在暗网服务器中发现了一个神秘文件,据说是某个黑客组织的「时空密钥」,文件内容似乎由大量时间戳构成。情报显示,只有将时间维度与二进制低语结合才能解开秘密。线索隐藏在时空的起点与终点之间。

下载附件,timestream.bin

每四个字节是一组,且前28位(4*7=28)完全相同,提取出不一样的字符为一整串:

1
770616c757b54696d655f31735f42316e6172795f7576869737065727dd

赛博厨子一把梭

根据题目提示“隐藏在时空的起点与终点之间”,数据开头和结尾可能存在填充字符,去除开头的7,得到前半段flag

最后flag为

1
palu{Time_1s_B1nary_Whisper}

量子迷宫

题目描述:

1
未来量子实验室的AI将机密数据加密成了量子迷宫,每一行代表一个量子比特操作。只有通过逆向坍缩观测,才能还原出被量子噪声掩盖的密钥。实验室遗留的日志文件似乎隐藏着关键线索(flag格式:palu{32位md5})

下载附件

1
QB^`oRD3YvpQ#|?hLRvyAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU66P)JWyPfj`@GBi0d!mtWaRYFNrd@<smsUYHpk|0<hM`3hj3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY&n=NKaHxPC6htFf}>CunJLCLP=D7G2)-8AmWCSAX*?tVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_JLGd9Ao3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6=;-9G?;)aqSSs+JYbY&n=NKaHxPC6hkGc+^8unJLCLP=D7G2)-8AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRvyAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_MTGBm=l3Q<);NmP6>;-9G?;)aqSS|CSZbY&n=NKaHxPC6htI5aiFunJLCLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_YUGd9Ao3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0_jM`3hjAW%q8R8LMiATu*FIKr?BQB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_bSGcdxi3Q<);NmP6>;-9G?;)aqSSRhAXbY&n=NKaHxPC6hqG&D5AunJLCLP=D7G2)-8AmWCSAX*?tVRU66P)JWyPfj`@H#0Lb!mtWaRYFNrd@<smsUYHpk|0_jM`3hjAW%q8R8LMiATl^GGQzM5QB^`oRD3bwpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_VRIW@wt3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hjAW%q8R8LMiATlyGFv743QB^`oRD3YvpQ#|?hLRv!AV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_JMI5ons3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hjAW%q8R8LMiAT~ENH^Q(AQB^`oRD3YvpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_VPGBv`m3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hjAW%q8R8LMiATcvAIKr?BQB^`oRD3bwpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_JNGcdxi3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY&n=NKaHxPC6htH8DBDunJLCLP=D7Fyf!7AmWCSAX*?tVRU5*QB^`oRD3bwpQ#|?hLRvyAV*<zWeQPMLP=D7G2)-8AmWCSAXp$rVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU5*QB^`oRD3YvpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_AMI5EPo3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@$mlsUYHpk|0_jM`3hjAW%q8R8LMiAT=^JH^Q(AQB^`oRD3YvpQ#|?hLRv!AV*<zWeQPMLP=D7G2)-8AmWCSAX*?tVRU5*QB^`oRD3bwpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_ALH#owu3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSs+JYbY&n=NKaHxPC6hoF*!5BunJLCLP=D7G2)-8AmWCSAXy+sVRU66P)JWyPfj`@H#j*r!mtWaRYFNrd@$mlsUYHpk|0_jM`3hj3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0_jM`3hjAW%q8R8LMiATu^KHNvn8QB^`oRD3bwpQ#|?hLRvyAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRvzAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU5*QB^`oRD3YvpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_VRH8H}l3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0?iM`3hjAW%q8R8LMiATuyBHo~w9QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_ALG&RDo3Q<);NmP6>;-9G?;)aqSS|CSZbY&n=NKaHxPC6hnF)%s8unJLCLP=D7Fyf!7AmWCSAX*?tVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_PUHZj7m3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSs+JYbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSSs+JYbY&n=NKaHxPC6hnI5{!GunJLCLP=D7Fyf!7AmWCSAX*?tVRU66P)JWyPfj`@Gc__c!mtWaRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0_jM`3hjAW%q8R8LMiATT#DFv743QB^`oRD3YvpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_GKFgC)l3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0?iM`3hjAW%q8R8LMiAT=~GGs3V6QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7G2)-8AmWCSAXp$rVRU66P)JWyPfj`@H83$U!mtWaRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY&n=NKaHxPC6hoIWalHunJLCLP=D7Fyf!7AmWCSAXy+sVRU5*QB^`oRD3bwpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_VTF*(Ap3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0?iM`3hjAW%q8R8LMiAT%&CHo~w9QB^`oRD3bwpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_DQH8R4m3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSs+JYbY%)rRYFNrd@$mlsUYHpk|0_jM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY&n=NKaHxPC6hrIWRH8unJLCLP=D7G2)-8AmWCSAXy+sVRU5*QB^`oRD3bwpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_JRIWoeq3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0_jM`3hjAW%q8R8LMiAT%^HIl{0CQB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXy+sVRU5*QB^`oRD3bwpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_JLIXJ?w3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hjAW%q8R8LMiAUQBJIKr?BQB^`oRD3bwpQ#|?hLRv!AV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU66P)JWyPfj`@Fg7zY!mtWaRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0<hM`3hjAW%q8R8LMiAUHQNGs3V6QB^`oRD3YvpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_MSHZsDn3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0_jM`3hj3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@<smsUYHpk|0?iM`3hjAW%q8R8LMiATu~IGs3V6QB^`oRD3bwpQ#|?hLRvyAV*<zWeQPMLP=D7Fyf!7AmWCSAX*?tVRU5*QB^`oRD3YvpQ#|?hLRvyAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU66P)JWyPfj`@IWsUY!mtWaRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6>;-9G?;)aqSS|CSZbY&n=NKaHxPC6hkF*P~DunJLCLP=D7Fyf!7AmWCSAX*?tVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU66P)JWyPfj`@IWRXj!mtWaRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0<hM`3hjAW%q8R8LMiATTvJGs3V6QB^`oRD3YvpQ#|?hLRv!AV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU5*QB^`oRD3bwpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_bPG&aJp3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6>;-9G?;)aqSSs+JYbY&n=NKaHxPC6hkFgZBFunJLCLP=D7Fyf!7AmWCSAXy+sVRU5*QB^`oRD3YvpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_GIF*m}n3Q<);NmP6>;-9G?;)aqSSs+JYbY&n=NKaHxPC6hkF)%p7unJLCLP=D7G2)-8AmWCSAX*?tVRU5*QB^`oRD3YvpQ#|?hLRv!AV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXy+sVRU5*QB^`oRD3bwpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_VNHaEhs3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6>;-9G?;)aqSSs+JYbY%)rRYFNrd@<smsUYHpk|0?iM`3hjAW%q8R8LMiAT~KSGs3V6QB^`oRD3YvpQ#|?hLRvyAV*<zWeQPMLP=D7G2)-8AmWCSAX*?tVRU5*QB^`oRD3YvpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_DMH88@k3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0<hM`3hj3Q<);NmP6>;-9G?;)aqSSs+JYbY&n=NKaHxPC6hoH#0KAunJLCLP=D7Fyf!7AmWCSAX*?tVRU66P)JWyPfj`@HaRpf!mtWaRYFNrd@<smsUYHpk|0<hM`3hjAW%q8R8LMiATcpAGs3V6QB^`oRD3bwpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_AGGcv-k3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0<hM`3hjAW%q8R8LMiAT~ELFv743QB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU66P)JWyPfj`@FgQ0g!mtWaRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY&n=NKaHxPC6hsH842BunJLCLP=D7G2)-8AmWCSAXy+sVRU5*QB^`oRD3bwpQ#|?hLRv!AV*<zWeQPMLP=D7G2)-8AmWCSAXp$rVRU66P)JWyPfj`@IXF2q!mtWaRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY&n=NKaHxPC6hrHZ?KAunJLCLP=D7G2)-8AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_VPFf_uj3Q<);NmP6=;-9G?;)aqSSs+JYbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0_jM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0<hM`3hjAW%q8R8LMiATl*IFv743QB^`oRD3bwpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_SUIWWSo3Q<);NmP6>;-9G?;)aqSSs+JYbY&n=NKaHxPC6hsFgY^9unJLCLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3bwpQ#|?hLRvyAV*<zWgt*UPgGA%Iv_ALH#Ner3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@$mlsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hjAW%q8R8LMiAUQQTFv743QB^`oRD3YvpQ#|?hLRvyAV*<zWeQPMLP=D7G2)-8AmWCSAX*?tVRU5*QB^`oRD3bwpQ#|?hLRvyAV*<zWeQPMLP=D7Fyf!7AmWCSAX*?tVRU5*QB^`oRD3YvpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_SQHaWtu3Q<);NmP6=;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0?iM`3hjAW%q8R8LMiAU85FFv743QB^`oRD3YvpQ#|?hLRvyAV*<zWeQPMLP=D7G2)-8AmWCSAX*?tVRU66P)JWyPfj`@G&C_W!mtWaRYFNrd@<smsUYHpk|0<hM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@<smsUYHpk|0_jM`3hj3Q<);NmP6=;-9G?;)aqSS|CSZbY&n=NKaHxPC6hsG&eTFunJLCLP=D7G2)-8AmWCSAXp$rVRU5*QB^`oRD3YvpQ#|?hLRvyAV*<zWeQPMLP=D7Fyf!7AmWCSAXy+sVRU66P)JWyPfj`@GdDLj!mtWaRYFNrd@<smsUYHpk|0<hM`3hjAW%q8R8LMiAUHBIH^Q(AQB^`oRD3bwpQ#|?hLRvyAV*<zWeQPMLP=D7Fyf!7AmWCSAX*?tVRU5*QB^`oRD3YvpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_YSHaWtu3Q<);NmP6>;-9G?;)aqSSs+JYbY&n=NKaHxPC6hqH8D5BunJLCLP=D7G2)-8AmWCSAXy+sVRU5*QB^`oRD3YvpQ#|?hLRv!AV*<zWeQPMLP=D7Fyf!7AmWCSAXy+sVRU5*QB^`oRD3bwpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_JOI5@(v3Q<);NmP6>;-9G?;)aqSS|CSZbY&n=NKaHxPC6hsH#9WDunJLCLP=D7Fyf!7AmWCSAXy+sVRU66P)JWyPfj`@I5ILb!mtWaRYFNrd@<smsUYHpk|0?iM`3hjAW%q8R8LMiATlsDH^Q(AQB^`oRD3YvpQ#|?hLRvzAV*<zWeQPMLP=D7Fyf!7AmWCSAXp$rVRU5*QB^`oRD3YvpQ#|?hLRv!AV*<zWgt*UPgGA%Iv_bWGB(1n3Q<);NmP6=;-9G?;)aqSS|CSZbY&n=NKaHxPC6hrGd4HEunJLCLP=D7G2)-8AmWCSAX*?tVRU66P)JWyPfj`@H8?Xe!mtWaRYFNrd@<smsUYHpk|0<hM`3hjAW%q8R8LMiATu#CF~YD4QB^`oRD3YvpQ#|?hLRvyAV*<zWeQPMLP=D7G2)-8AmWCSAXy+sVRU66P)JWyPfj`@Ffuhb!mtWaRYFNrd@$mlsUYHpk|0_jM`3hj3Q<);NmP6=;-9G?;)aqSSRhAXbY%)rRYFNrd@$mlsUYHpk|0_jM`3hj3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSS|CSZbY%)rRYFNrd@<smsUYHpk|0?iM`3hj3Q<);NmP6>;-9G?;)aqSSs+JYbY&n=NKaHxPC6hrI5RTBunJLCLP=D7Fyf!7AmWCSAXy+sVRU5*QB^`oRD3bwpQ#|?hLRvzAV*<zWgt*UPgGA%Iv_AKGBU!j

一把梭得到

得到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate PHOTON: 2492°
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → X Gate PHOTON: 9059°
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Y Gate PHOTON: 3236°
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Y Gate PHOTON: 0343°
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate PHOTON: 4924°
QUBIT|1⟩ → Z Gate PHOTON: 9845°
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate PHOTON: 8636°
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → Z Gate PHOTON: 3338°
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Y Gate PHOTON: 9330°
QUBIT|1⟩ → X Gate PHOTON: 6444°
QUBIT|1⟩ → Z Gate PHOTON: 7332°
QUBIT|1⟩ → Z Gate PHOTON: 2802°
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate PHOTON: 7495°
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Z Gate PHOTON: 2260°
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Y Gate PHOTON: 3385°
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate PHOTON: 6747°
QUBIT|0⟩ → Z Gate PHOTON: 7225°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate PHOTON: 1308°
QUBIT|1⟩ → Y Gate PHOTON: 3430°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → Z Gate PHOTON: 9519°
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate PHOTON: 0681°
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → Z Gate PHOTON: 5267°
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → X Gate PHOTON: 0578°
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate PHOTON: 4193°
QUBIT|1⟩ → Y Gate PHOTON: 7897°
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Z Gate PHOTON: 3655°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate PHOTON: 7451°
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate PHOTON: 3026°
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate PHOTON: 0545°
QUBIT|1⟩ → Z Gate PHOTON: 3109°
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate PHOTON: 5961°
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Y Gate PHOTON: 3891°
QUBIT|0⟩ → Z Gate PHOTON: 3526°
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Z Gate PHOTON: 0700°
QUBIT|0⟩ → Y Gate PHOTON: 2206°
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate PHOTON: 5413°
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → X Gate PHOTON: 5012°
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → X Gate PHOTON: 4919°
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → X Gate PHOTON: 7619°
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate PHOTON: 4026°
QUBIT|1⟩ → Y Gate PHOTON: 1952°
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → X Gate PHOTON: 7901°
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate PHOTON: 3892°
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Z Gate PHOTON: 4439°
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Z Gate PHOTON: 3298°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate PHOTON: 9048°
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate PHOTON: 0633°
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → X Gate PHOTON: 8723°
QUBIT|0⟩ → X Gate PHOTON: 4862°
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate PHOTON: 3813°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate PHOTON: 9300°
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Z Gate PHOTON: 0159°
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate PHOTON: 9077°
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → X Gate PHOTON: 0583°
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → X Gate PHOTON: 9046°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Y Gate PHOTON: 0098°
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate PHOTON: 2017°
QUBIT|1⟩ → Y Gate PHOTON: 0108°
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → X Gate PHOTON: 7067°
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → Y Gate PHOTON: 6973°
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Z Gate PHOTON: 1550°
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Y Gate PHOTON: 4732°
QUBIT|0⟩ → Z Gate PHOTON: 6940°
QUBIT|1⟩ → X Gate PHOTON: 1123°
QUBIT|1⟩ → Z Gate PHOTON: 0032°
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate PHOTON: 6720°
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate PHOTON: 0875°
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate PHOTON: 8508°
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → X Gate PHOTON: 9894°
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate PHOTON: 7651°
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Z Gate PHOTON: 7204°
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → X Gate PHOTON: 2550°
QUBIT|1⟩ → X Gate PHOTON: 6890°
QUBIT|1⟩ → Y Gate PHOTON: 8092°
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → X Gate PHOTON: 0575°
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate PHOTON: 9590°
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Z Gate PHOTON: 6469°
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → Y Gate PHOTON: 7200°
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate PHOTON: 4411°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Z Gate
QUBIT|0⟩ → Z Gate PHOTON: 8476°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Y Gate PHOTON: 3776°
QUBIT|1⟩ → X Gate PHOTON: 8227°
QUBIT|1⟩ → X Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate PHOTON: 8469°
QUBIT|1⟩ → Y Gate PHOTON: 6517°
QUBIT|1⟩ → Y Gate
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate PHOTON: 3588°
QUBIT|1⟩ → Z Gate PHOTON: 8744°
QUBIT|0⟩ → Y Gate PHOTON: 8223°
QUBIT|1⟩ → Y Gate PHOTON: 2057°
QUBIT|0⟩ → Y Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Z Gate PHOTON: 9726°
QUBIT|0⟩ → Z Gate PHOTON: 7367°
QUBIT|1⟩ → Z Gate PHOTON: 5832°
QUBIT|1⟩ → X Gate PHOTON: 3121°
QUBIT|0⟩ → X Gate
QUBIT|1⟩ → Y Gate PHOTON: 0258°
QUBIT|0⟩ → Z Gate
QUBIT|0⟩ → X Gate
QUBIT|0⟩ → Z Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → Z Gate
QUBIT|1⟩ → Y Gate
QUBIT|1⟩ → Y Gate PHOTON: 7832°
QUBIT|0⟩ → Y Gate
QUBIT|1⟩ → Y Gate PHOTON: 0422°

提取所有的01

1
0111000001100001011011000111010101111011011000010110010101100001001101000011001100110111011000110011000100110010011000100011000100110100001110010011011100110101001100000011001100111000001100110110011001100101001101010011011000110111001100100011011101100101011000110011010100110011001101000011010001111101

二进制,八位一组转ascll

最后flag为

1
palu{aea437c12b149750383fe56727ec5344}

TopSecret

题目描述:

1
你从某机密设施偷取了一份文件,但你被发现了,最后只收到一份乱码,你能从中提取到有用的信息吗?

下载附件

在37页找到base编码

python提取所有的字符串

借用大佬脚本

第二届帕鲁杯TopSecret-CSDN博客

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import fitz  # PyMuPDF

def extract_text_from_pdf(pdf_path, txt_path):
# 打开PDF文件
pdf_document = fitz.open(pdf_path)

# 初始化一个空列表来存储所有页面的文本
all_text = []

# 遍历每一页
for page_num in range(len(pdf_document)):
page = pdf_document.load_page(page_num) # 加载页面
text = page.get_text("text") # 提取文本
all_text.append(text) # 将文本添加到列表中

# 关闭PDF文件
pdf_document.close()

# 将所有文本合并成一个字符串,并写入TXT文件
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write('\n'.join(all_text))

# 使用函数
pdf_path = 'D:\\tmp\\TopSecret.pdf-20250518181207-df0lanx\\TopSecret.pdf'
txt_path = 'D:\\tmp\\TopSecret.pdf-20250518181207-df0lanx\\TopSecret.txt'
extract_text_from_pdf(pdf_path, txt_path)

print(f"Text extracted from {pdf_path} and saved to {txt_path}")

运行得到txt文件,查看文件

base解密

最后flag为

1
palu{You_re_a_real_50w}

screenshot

题目描述:

1
有个笨比截图flag的时候不小心发到群里了,细心和反回撤的群友已经偷偷记录下来了

下载附件

stegsolve查看通道

最后flag为

1
palu{why_you_spy_me}

几何闪烁的秘密

题目描述:

1
我们找到了一张神秘的GIF图片,里面似乎隐藏着重要信息。仔细观察,你会发现四个几何体在不同时刻闪现出一些奇怪的字符。你能从中提取出完整的Flag吗?

下载附件

gif分离帧,提取字符串

1
2
3
4
5
6
7
圆形:cGFsXttcFsdXtcGFdXtt

正方形:YXN0XJfYN0ZXfYXNZXJf

三角形:b2Zf2VvbZfZ2vb2ZZ2Vv

五边形:bWV0nl9bV0cn9bWVcnl9

直接解密发现不行

base加密flag头部palu

第五位加一个字母d

1
cGFsdXttYXN0dXJfb2Zfd2VvbWV0dnI9

base解密

根据题目名的英文修改

最后flag为

1
palu{master_of_geometry}

CRYPTO

循环锁链

题目描述:

1
密文中的每个字节都被锁在了一个无尽的循环中,只有找到起点才能解开。已知flag以palu{开头,你能利用这个线索解开链条吗?答案隐藏在flag.enc中。

下载附件,用记事本打开发现乱码,010查看

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def decrypt_flag(ciphertext_hex, known_prefix="palu{"):
ciphertext_bytes = bytes.fromhex(ciphertext_hex)
plaintext = []

# 已知 flag 的前缀
for i in range(len(known_prefix)):
plaintext.append(ord(known_prefix[i]))

# 解密剩余部分
for i in range(len(known_prefix), len(ciphertext_bytes)):
next_char = plaintext[i - 1] ^ ciphertext_bytes[i - 1]
plaintext.append(next_char)

# 转换为字符串
flag = ''.join(chr(c) for c in plaintext)
return flag

# 给定的密文
ciphertext_hex = "110d190e122a7442312b2500070c163927210300280d2720262c19000c3b0439221952440d"

# 解密并打印 flag
flag = decrypt_flag(ciphertext_hex)
print("Flag:", flag)

运行得到

最后flag为

1
palu{iC7uDoJJMAWnIhkkCNiIoCZZVmiPrk9}

轮回密码

题目描述:

1
在佛经残卷中发现神秘密文,据传加密者用"六道轮回"之法将真言藏于时空循环中。

下载附件

encode.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import base64


def samsara_encrypt(text, key_word):
cycle_step = len(key_word) % 6 + 1

phase1 = bytes([(c >> cycle_step) | ((c << (8 - cycle_step)) & 0xFF) for c in text])

phase2 = base64.b85encode(phase1)

phase3 = bytes([(c >> cycle_step) | ((c << (8 - cycle_step)) & 0xFF) for c in phase2])

return bytes([phase3[i] ^ key_word[i % len(key_word)] for i in range(len(phase3))])


if __name__ == "__main__":
flag = b"palu{********}" # 可替换flag
key = b""
cipher = samsara_encrypt(flag, key)

# 修复点:使用latin-1编码处理二进制数据
print("轮回密文:", cipher.decode('latin-1')) # 输出示例:¨×èÄÅÉØÛÚ

flag.txt

1
轮回密文: y¦_›6>X¬y–!,!n¡mSaÜñüë—9¼6™

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import base64

def rotate_right(byte, step):
return ((byte >> step) | ((byte << (8 - step)) & 0xFF)) & 0xFF

def rotate_left(byte, step):
return ((byte << step) | (byte >> (8 - step))) & 0xFF

def samsara_decrypt(cipher, key_word):
cycle_step = len(key_word) % 6 + 1

# 逆向异或
phase3 = bytes([cipher[i] ^ key_word[i % len(key_word)] for i in range(len(cipher))])

# 逆向循环位移
phase2 = bytes([rotate_left(c, cycle_step) for c in phase3])

# Base85 解码(处理可能的填充问题)
try:
phase1 = base64.b85decode(phase2)
except Exception as e:
print("Base85 解码失败:", e)
return None

# 逆向循环位移
plain = bytes([rotate_left(c, cycle_step) for c in phase1])
return plain

if __name__ == "__main__":
cipher_bytes = b"y\xa6\x81_\x9b6\x19>X\xacy\x96!,!n\xa1mS\x1fa\xdc\xf1\xfc\xeb\x15\x18\x979\xbc\x116\x99\r"
key = b"Bore"

flag = samsara_decrypt(cipher_bytes, key)
if flag:
print("解密结果:", flag.decode())

运行得到

最后flag为

1
palu{reincarnation_cipher}

RSA_Quartic_Quandary

题目描述:

1
简单的RSA

下载附件

generate.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from Crypto.Util.number import getPrime, bytes_to_long
import math

FLAG = b'**************'


def generate_parameters(bit_length=512):
p = getPrime(bit_length)
q = getPrime(bit_length)
n = p * q
e = 65537
phi = (p - 1) * (q - 1)
d = pow(e, -1, phi)
s = p ** 4 + q ** 4
return n, e, d, s, p, q


def main():
n, e, d, s, p, q = generate_parameters()
c = pow(bytes_to_long(FLAG), e, n)

with open('output.txt', 'w') as f:
f.write(f"n = {n}\n")
f.write(f"e = {e}\n")
f.write(f"c = {c}\n")
f.write(f"s = {s}\n")

print("[+] Parameters saved to output.txt")


if __name__ == "__main__":
main()

output.txt

1
2
3
4
n = 125997816345753096048865891139073286898143461169514858050232837657906289840897974068391106608902082960171083817785532702158298589600947834699494234633846206712414663927142998976208173208829799860130354978308649020815886262453865196867390105038666506017720712272359417586671917060323891124382072599746305448903
e = 65537
c = 16076213508704830809521504161524867240789661063230251272973700316524961511842110066547743812160813341691286895800830395413052502516451815705610447484880112548934311914559776633140762863945819054432492392315491109745915225117227073045171062365772401296382778452901831550773993089344837645958797206220200272941
s = 35935569267272146368441512592153486419244649035623643902985220815940198358146024590300394059909370115858091217597774010493938674472746828352595432824315405933241792789402041405932624651226442192749572918686958461029988244396875361295785103356745756304497466567342796329331150560777052588294638069488836419744297241409127729615544668547101580333420563318486256358906310909703237944327684178950282413703357020770127158209107658407007489563388980582632159120621869165333921661377997970334407786581024278698231418756106787058054355713472306409772260619117725561889350862414726861327985706773512963177174611689685575805282

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import math
from gmpy2 import iroot
from Crypto.Util.number import inverse, long_to_bytes

def recover_primes(s, n):
# 1. 计算 p^2 + q^2 = T
A = s + 2 * n * n
T = iroot(A, 2)[0]
assert T * T == A, "T is not a perfect square"

# 2. 计算 p + q = S
B = T + 2 * n
S = iroot(B, 2)[0]
assert S * S == B, "S is not a perfect square"

# 3. 计算 |p - q| = D
D2 = S * S - 4 * n
D = iroot(D2, 2)[0]
assert D * D == D2, "D is not a perfect square"

# 4. 恢复 p 和 q
p = (S + D) // 2
q = (S - D) // 2
assert p * q == n, "p and q are incorrect"
return p, q

# 给定参数
s = 35935569267272146368441512592153486419244649035623643902985220815940198358146024590300394059909370115858091217597774010493938674472746828352595432824315405933241792789402041405932624651226442192749572918686958461029988244396875361295785103356745756304497466567342796329331150560777052588294638069488836419744297241409127729615544668547101580333420563318486256358906310909703237944327684178950282413703357020770127158209107658407007489563388980582632159120621869165333921661377997970334407786581024278698231418756106787058054355713472306409772260619117725561889350862414726861327985706773512963177174611689685575805282
n = 125997816345753096048865891139073286898143461169514858050232837657906289840897974068391106608902082960171083817785532702158298589600947834699494234633846206712414663927142998976208173208829799860130354978308649020815886262453865196867390105038666506017720712272359417586671917060323891124382072599746305448903
e = 65537
c = 16076213508704830809521504161524867240789661063230251272973700316524961511842110066547743812160813341691286895800830395413052502516451815705610447484880112548934311914559776633140762863945819054432492392315491109745915225117227073045171062365772401296382778452901831550773993089344837645958797206220200272941

# 恢复 p 和 q
p, q = recover_primes(s, n)

# RSA 解密
phi = (p - 1) * (q - 1)
d = inverse(e, phi)
plaintext = pow(c, d, n)
print(long_to_bytes(plaintext))

运行得到

最后flag为

1
palu{This_is_a_fake_flag_change_it_for_real_use}

欧几里得

题目描述:

1
你知道欧几里得是谁吗?

下载附件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import random
import os
from Crypto.Util.number import *
from gmpy2 import lcm, gcd
def exgcd(a, b):
if b == 0: return 1, 0
x, y = exgcd(b, a%b)
return y, x - a//b*y


def get_k():
while True:
p = getPrime(512)
q = getPrime(512)
phi = (p - 1) * (q - 1)
if gcd(p * q, phi) == 1:
break
n = p * q
while True:
g = random.randint(1, n * n)
if gcd((g - 1) // n, n) == 1:
break
return (n, g), (p, q)


def Paillier_encode(m, g, n):
while True:
r = random.randint(1, n - 1)
if gcd(r, n) == 1:
break
return (pow(g, m, n * n) * pow(r, n, n * n)) % (n * n)


def Paillier_decode(c, p, q, g, n):
lam = lcm(p - 1, q - 1)
mi = exgcd((pow(g, lam, n * n) - 1) // n, n)[0] % n
return (pow(c, lam, n * n) - 1) // n * mi % n


pk, sk = get_k()
n, g = pk
p, q = sk
m1 = bytes_to_long(flag)
m2 = bytes_to_long(os.urandom(2) * 35)
c1 = Paillier_encode(m1, g, n)
c2 = Paillier_encode(m2, g, n)
print(f'c = {Paillier_decode(c1 * c2, p, q, g, n)}')

# c = 1426774899479339414711783875769670405758108494041927642533743607154735397076811133205075799614352194241060726689487117802867974494099614371033282640015883625484033889861

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import itertools
from Crypto.Util.number import long_to_bytes

c = 1426774899479339414711783875769670405758108494041927642533743607154735397076811133205075799614352194241060726689487117802867974494099614371033282640015883625484033889861

# 计算m2的系数 (1 + 256^2 + 256^4 + ... + 256^68)
coeff = sum(256 ** (2 * i) for i in range(35))

# 暴力破解m2
for m2_part in range(65536): # 遍历所有2字节的可能值
m2 = m2_part * coeff
if m2 > c: # 确保m2不会大于c
continue
m1 = c - m2
flag = long_to_bytes(m1)

# 检查flag格式
try:
flag_str = flag.decode()
if flag_str.startswith('palu{') and flag_str.endswith('}'):
print(f"Found flag: {flag_str}")
print(f"m2_part: {hex(m2_part)}")
break
except UnicodeDecodeError:
continue

运行得到

易如反掌

题目描述:

1
有办法获得e吗?

下载附件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import gmpy2
from Crypto.Util.number import getPrime
import hashlib

primes = [(getPrime(1024), getPrime(1024)) for _ in range(4)]
N = [p * q for p, q in primes]
PHI = [(p**2 - 1) * (q**2 - 1) for p, q in primes]
d = getPrime(800)
flag = "palu{" + hashlib.md5(str(d)[].encode()).hexdigest() + "}"
E = [int(gmpy2.invert(d, PHI[i])) for i in range(4)]
print(N)
print(E)
# [23796646026878116589547283793150995927866567938335548416869023482791889761195291718895745055959853934513618760888513821480917766191633897946306199721200583177442944168533218236080466338723721813833112934172813408785753690869328477108925253250272864647989241887047368829689684698870160049332949549671046125158024445929082758264311584669347802324514633164611600348485747482925940752960745308927584754759033237553398957651216385369140164712159020014009858771182426893515016507774993840721603911101735647966838456333878426803669855790758035721418868768618171692143354466457771363078719423863861881209003100274869680348729, 19552522218179875003847447592795537408210008360038264050591506858077823059915495579150792312404199675077331435544143983146080988327453540449160493126531689234464110427289951139790715136775261122038034076109559997394039408007831367922647325571759843192843854522333120187643778356206039403073606561618190519937691323868253954852564110558105862497499849080112804340364976236598384571278659796189204447521325485338769935361453819608921520780103184296098278610439625935404967972315908808657494638735904210709873823527111315139018387713381604550946445856087746716671838144925662314348628830687634437271225081272705532826343, 20588310030910623387356293638800302031856407530120841616298227518984893505166480372963166394317326422544430837759332223527939420321960057410073228508230111170414845403161052128790464277007579491219950440477721075788978767309211469555824310913593208232853272958011299985202799390532181335087622499894389777412111445377637396650710486263652440053717323053536700098339137819966260269752816515681602936416736576044630343136577023173210517247609888936337876211461528203642347119434700140264859102502126842250671976238033270367185358966766106988830596616311824691409766437473419074865115209866730272194297815209976737570183, 18468380817178794606027384089796802449939260582378979728469492439450780893746976934315768186829245395964644992296264093276556001477514083927556578752836255491334765496791841945178275793885002188397918857222419803612711637177559554489679414049308077300718317502586411333302434329130562745942681716547306138457088216901181646333860559988117376012816579422902808478175975263110581667936249474308868051767856694498210084853797453949193117835061402537058150493808371384063278793041752943930928932275052745657700368980150842377283198946138726219378646040515809994704174471793592322237777371900834531014326150160506449286179]
# [229904181453273080302209653709086531153804577507365859149808244958841045687064628362978517491609413507875726243121473678430010600891588643092042173698830147997497783886459583186019270582236955524620567373560535686287255124958954671737097645556109314142383275516997850786599322033792080045303427363366927030304214333894247469120513426641296678531965795930756543043851154646310114366477311633838078242963665452936523438928643273392454483600446242320078010627755587492056369779661382734170244060951095344418599686788550312205964136120979823565225768814898285224838691541122088693411388097496320157113230752327025862802020421665288007529320920942060329299409362236414929126050037144149017275031336018100081931062647888329912802477032857776085190828105602067426203163344931483638271679183910241511044338001446584634203146294743522375846913845041274967653508735863706778364499099286484552570083394223973734909997825522191349543295855925973354640349809770822075226834555111927586299176453943116511915434890643239957459427390624136283086434711471863737451011157026905191204496081860277138227247744470804087252965368757930797560277881668806206419629425126031049566579233056222579590529869798537893505779097868221221068867624660759084762471141, 374749619911728044650812367560174497001343067563440477135516664935394734686391543012901514676044211541958613458868769659861216149364768233000844624035620893309356372294598009760824255187442531508754966566917198975934706398309982525100772311586501118200858124845012643495006029930202324305874402291277845166060497038915773767003006049720519011634861166208163030159519901867416488082395270295488885724507937683469910251316231210838654273986152493722244271430422693265608430755620420680629979226285393465423870727975987787149515374769359243334743541460110042872587610309611770320600248289328406805995688596910226273861759369388105641549933915686192055533242723330981192183310876306968103333706140401422550917946410378174896274789619184565321544130428008804628699594759946577979319393247067750024729672029363433673084437510430506410293512293930056667971242862448029841846596288648691077795207341975907335202945548990662460491169957175452745622341245617265849042542964819126377775749222973138584978725470886059043251544634105653274564085280013340679259157119014619894553239015777411757887293044706448625760604242512494466386343040583010961386979963779928616733980046763291988848903515836247301007113187121999960487508948748354549628160741, 111738429639840672983162926852338651562094139707285850255632987705635459657893186493838711733560515475806567653354737245246745810892238414756414117557971683747269900627524702653772058841085258035513296218047505149691384287812041721130367506731427022265277885965948486359682023555050085264531256406043361391744086539522028829421284667293339869140564699750714145488199268791908205712660933607330454849730499840287271163350865799682565216636393526339218836244889719975150503253630419647851422620890082315396457329065508602521784001607236788620811397449483104884860551374031790663030220424841642241965983726516537123807061999084476076850833658360594525986997125319941689903869138176347916707622148840226672408554102717625456819726220575710494929111642866840516339713870850732638906870325693572445316904688582043485093120585767903009745325497085286577015692005747499504730575062998090846463157669448943725039951120963375521054164657547731579771203443617489609201617736584055562887243883898406182052632245189418568410854530995044542628531851356363297989653392057214167031332353949367816700838296651167799441279086074308299608106786918676697564002641234952760724731325383088682051108589283162705846714876543662335188222683115878319143239781, 185935167438248768027713217055147583431480103445262049361952417166499278728434926508937684304985810617277398880507451351333771783039360671467147075085417403764439214700549777320094501151755362122677245586884124615115132430034242191429064710012407308619977881929109092467325180864745257810774684549914888829203014922855369708286801194645263982661023515570231007900615244109762444081806466412714045462184361892356485713147687194230341085490571821445962465385514845915484336766973332384198790601633964078447446832581798146300515184339036127604597014458389481920870330726947546808739829589808006774479656385317205167932706748974482578749055876192429032258189528408353619365693624106394913101463023497175917598944803733849984703912670992613579847331081015979121834040110652608301633876167262248103403520536210279949844194696898862249482809107840303473964914083996538912970715834110371196970613332286296427286356036576876121010776933023901744994067564045429384172315640135483480089769992730928266885675143187679290648773060781987273082229827156531141515679114580622348238382074084270808291251400949744720804368426414308355267344210055608246286737478682527960260877955900464059404976906697164610891962198768354924180929300959036213841843941]

连分数攻击

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import gmpy2
import hashlib

N_list = [
23796646026878116589547283793150995927866567938335548416869023482791889761195291718895745055959853934513618760888513821480917766191633897946306199721200583177442944168533218236080466338723721813833112934172813408785753690869328477108925253250272864647989241887047368829689684698870160049332949549671046125158024445929082758264311584669347802324514633164611600348485747482925940752960745308927584754759033237553398957651216385369140164712159020014009858771182426893515016507774993840721603911101735647966838456333878426803669855790758035721418868768618171692143354466457771363078719423863861881209003100274869680348729,
19552522218179875003847447592795537408210008360038264050591506858077823059915495579150792312404199675077331435544143983146080988327453540449160493126531689234464110427289951139790715136775261122038034076109559997394039408007831367922647325571759843192843854522333120187643778356206039403073606561618190519937691323868253954852564110558105862497499849080112804340364976236598384571278659796189204447521325485338769935361453819608921520780103184296098278610439625935404967972315908808657494638735904210709873823527111315139018387713381604550946445856087746716671838144925662314348628830687634437271225081272705532826343,
20588310030910623387356293638800302031856407530120841616298227518984893505166480372963166394317326422544430837759332223527939420321960057410073228508230111170414845403161052128790464277007579491219950440477721075788978767309211469555824310913593208232853272958011299985202799390532181335087622499894389777412111445377637396650710486263652440053717323053536700098339137819966260269752816515681602936416736576044630343136577023173210517247609888936337876211461528203642347119434700140264859102502126842250671976238033270367185358966766106988830596616311824691409766437473419074865115209866730272194297815209976737570183,
18468380817178794606027384089796802449939260582378979728469492439450780893746976934315768186829245395964644992296264093276556001477514083927556578752836255491334765496791841945178275793885002188397918857222419803612711637177559554489679414049308077300718317502586411333302434329130562745942681716547306138457088216901181646333860559988117376012816579422902808478175975263110581667936249474308868051767856694498210084853797453949193117835061402537058150493808371384063278793041752943930928932275052745657700368980150842377283198946138726219378646040515809994704174471793592322237777371900834531014326150160506449286179
]
E_list = [
229904181453273080302209653709086531153804577507365859149808244958841045687064628362978517491609413507875726243121473678430010600891588643092042173698830147997497783886459583186019270582236955524620567373560535686287255124958954671737097645556109314142383275516997850786599322033792080045303427363366927030304214333894247469120513426641296678531965795930756543043851154646310114366477311633838078242963665452936523438928643273392454483600446242320078010627755587492056369779661382734170244060951095344418599686788550312205964136120979823565225768814898285224838691541122088693411388097496320157113230752327025862802020421665288007529320920942060329299409362236414929126050037144149017275031336018100081931062647888329912802477032857776085190828105602067426203163344931483638271679183910241511044338001446584634203146294743522375846913845041274967653508735863706778364499099286484552570083394223973734909997825522191349543295855925973354640349809770822075226834555111927586299176453943116511915434890643239957459427390624136283086434711471863737451011157026905191204496081860277138227247744470804087252965368757930797560277881668806206419629425126031049566579233056222579590529869798537893505779097868221221068867624660759084762471141,
374749619911728044650812367560174497001343067563440477135516664935394734686391543012901514676044211541958613458868769659861216149364768233000844624035620893309356372294598009760824255187442531508754966566917198975934706398309982525100772311586501118200858124845012643495006029930202324305874402291277845166060497038915773767003006049720519011634861166208163030159519901867416488082395270295488885724507937683469910251316231210838654273986152493722244271430422693265608430755620420680629979226285393465423870727975987787149515374769359243334743541460110042872587610309611770320600248289328406805995688596910226273861759369388105641549933915686192055533242723330981192183310876306968103333706140401422550917946410378174896274789619184565321544130428008804628699594759946577979319393247067750024729672029363433673084437510430506410293512293930056667971242862448029841846596288648691077795207341975907335202945548990662460491169957175452745622341245617265849042542964819126377775749222973138584978725470886059043251544634105653274564085280013340679259157119014619894553239015777411757887293044706448625760604242512494466386343040583010961386979963779928616733980046763291988848903515836247301007113187121999960487508948748354549628160741,
111738429639840672983162926852338651562094139707285850255632987705635459657893186493838711733560515475806567653354737245246745810892238414756414117557971683747269900627524702653772058841085258035513296218047505149691384287812041721130367506731427022265277885965948486359682023555050085264531256406043361391744086539522028829421284667293339869140564699750714145488199268791908205712660933607330454849730499840287271163350865799682565216636393526339218836244889719975150503253630419647851422620890082315396457329065508602521784001607236788620811397449483104884860551374031790663030220424841642241965983726516537123807061999084476076850833658360594525986997125319941689903869138176347916707622148840226672408554102717625456819726220575710494929111642866840516339713870850732638906870325693572445316904688582043485093120585767903009745325497085286577015692005747499504730575062998090846463157669448943725039951120963375521054164657547731579771203443617489609201617736584055562887243883898406182052632245189418568410854530995044542628531851356363297989653392057214167031332353949367816700838296651167799441279086074308299608106786918676697564002641234952760724731325383088682051108589283162705846714876543662335188222683115878319143239781,
185935167438248768027713217055147583431480103445262049361952417166499278728434926508937684304985810617277398880507451351333771783039360671467147075085417403764439214700549777320094501151755362122677245586884124615115132430034242191429064710012407308619977881929109092467325180864745257810774684549914888829203014922855369708286801194645263982661023515570231007900615244109762444081806466412714045462184361892356485713147687194230341085490571821445962465385514845915484336766973332384198790601633964078447446832581798146300515184339036127604597014458389481920870330726947546808739829589808006774479656385317205167932706748974482578749055876192429032258189528408353619365693624106394913101463023497175917598944803733849984703912670992613579847331081015979121834040110652608301633876167262248103040352053621027994984419469689886224948280910784030347396491408399653891297071583411037119697061333228629642728635603657687121010776933023901744994067564045429384172315640135483480089769992730928266885675143187679290648773060781987273082229827156531141515679114580622348238382074084270808291251400949744720804368426414308355267344210055608246286737478682527960260877955900464059404976906697164610891962198768354924180929300959036213841843941
]

def get_convergents_pq(x, y):
P_m2, P_m1 = 0, 1
Q_m2, Q_m1 = 1, 0
temp_x, temp_y = x, y
while temp_y != 0:
a = temp_x // temp_y
P = a * P_m1 + P_m2
Q = a * Q_m1 + Q_m2
yield (P, Q)
P_m2, P_m1 = P_m1, P
Q_m2, Q_m1 = Q_m1, Q
temp_x, temp_y = temp_y, temp_x % temp_y

N0 = N_list[0]
E0 = E_list[0]
M0 = N0 * N0
found_d = None

print(f"Calculating convergents for E0 / (N0^2)")
for k_candidate, d_candidate in get_convergents_pq(E0, M0):
if d_candidate == 0:
continue
if d_candidate.bit_length() > 800:
break
if d_candidate.bit_length() == 800:
if gmpy2.is_prime(d_candidate):
print(f"Prime candidate d found: {d_candidate}")
found_d = d_candidate
break

if found_d:
print(f"\nSuccessfully found d: {found_d}")
d_str = str(found_d)
md5_hash = hashlib.md5(d_str.encode('utf-8')).hexdigest()
flag = "palu{" + md5_hash + "}"
print(f"The flag is: {flag}")
else:
print("\nCould not find d matching the criteria.")

运行得到

最后flag为

1
palu{b1fc01a38bae760451bcffe777e51b1d}

文章作者: yiqing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yiqing !
  目录