bugku-crypto-合集


  • /.-
  • 聪明的小羊
  • ok
  • [+-<>]
  • 把猪困在猪圈里
  • 你喜欢下棋吗
  • 小山丘的秘密
  • EN-气泡
  • easy_crypto
  • 你以为是md5吗
  • 散乱的密文
  • 简单加密
  • .!?
  • 一段base64 (未写)
  • 奇怪的密码
  • 这不是md5
  • 贝斯家族
  • 告诉你个秘密
  • 来自宇宙的信号
  • 进制转换
  • 抄错字符(未写)
  • Crack it
  • 一段新闻
  • 你懂我的乐谱吗?

/.-

1
..-./.-../.-/--./----.--/-../...--/..-./-.-./-.../..-./.----/--.../..-./----./...--/----./----./...../-----/....-/-----.-

morse解密,/为空格,.为短的,-为长的。 flag{d3fcbf17f9399504}


聪明的小羊

fa{fe13f590lg6d46d0d0} 普通型栅栏密码,设置两栏–》 flag{6fde4163df05d900}


ok

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
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook!
Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook!
Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook?
Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook!
Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook!
Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook?
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook?
Ook. Ook? Ook! Ook. Ook? Ook! Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook!
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook? Ook!
Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook! Ook. Ook? Ook.

Ook to text 解密 –> flag{0a394df55312c51a}


[+-<>]

1
+++++ +++++ [->++ +++++ +++<] >++.+ +++++ .<+++ [->-- -<]>- -.+++ +++.< ++++[ ->+++ +<]>+ +++.< +++++ +++[- >---- ----< ]>--- ----- ---.< +++++ ++[-> +++++ ++<]> +++.< +++++ +[->- ----- <]>-- ----- -.--. ----. --.++ +++++ +.<++ ++++[ ->+++ +++<] >++++ +.++. <++++ ++[-> ----- -<]>- ----- ----. -.<++ +++++ [->++ +++++ <]>+. ----. ++++. <++++ +++[- >---- ---<] >---- .+.<+ +++++ ++[-> +++++ +++<] >++++ +++++ ++.<

brainfuck解密->flag{0d86208ac54fbf12}


把猪困在猪圈里

给的文件前面没有base64头,加上base64(data:image/jpg;base64,)头。

http://tool.chinaz.com/tools/imgtobase/,在线网站转换。在用猪圈密码转换。http://www.metools.info/code/c90.html

flag{thisispigpassword}


你喜欢下棋吗

看到下课,想到棋盘密码,应该是polybius

1
2
3
4
5
6
7
8
9
10
11
12
13
14
num="4423244324433534315412244543"
like = [['a','b', 'c','d','e'], ['f', 'g', 'h','i/j','k'], ['l','m','n' ,'o' ,'p'],['q','r','s','t','u'],['v','w','x','y','z']]
for i in range (0,len(num),2):
a=int(num[i:i+1])
b=int(num[i+1:i+2])
# print(a,b)
print(like[a-1][b-1],end="")
# print(num[i:i+1])
# print(num[i+1:i+2])
# print(like[a-1][b-1])
# 44 23 24 43 24 43 35 34 31 54 12 24 45 43
# print(like[4][4-1])
# print(like[2][3-1])
# print(like[2][4-1])

解出来看看,thi/jsi/jspolybi/jus,自己处理一下,thisispolybius

解出来文件看到提示 一种5bit的编码。百度到博多密码

在线解密 https://www.boxentriq.com/code-breaking/baudot-code –》bugku{baud0tc0de}


小山丘的秘密

bugku的小山丘,安恒的爬坡道 https://www.cnblogs.com/pangya/p/9627216.html。都是hill

http://www.atoolbox.net/Tool.php?Id=914 有密钥,字母表自写

https://www.dcode.fr/hill-cipher 矩阵性,字母表可选(A=0,A=1)

题目提示A=1,字母表就为”ZABCDEFGHIJKLMNOPQRSTUVWXY”

Z=0,A=1,B=2。再把棋盘译出来,1-2-3-0-1-4-5-6-0。用字母表转掉就是A-B-C-Z-A-D-E-F-Z。abczadefz

这一步应该就是把矩阵转成了密钥。然后就直接可以带到在线网站了。填上去解密即可

解出答案为whatahill , bugku{whatahill}


EN-气泡

在线解不出来,写脚本吧

中文-气泡翻译bubble,可能是bubblepy

且密文开头为x,每5个字符中间以-来分隔。

bubblepy 算法信息 http://wiki.yak.net/589/Bubble_Babble_Encoding.txt

1
2
3
4
5
6
7
8
9
from bubblepy import BubbleBabble
#导入包bubblepy
str='xivak-notuk-cupad-tarek-zesuk-zupid-taryk-zesak-cined-tetuk-nasuk-zoryd-tirak-zysek-zaryd-tyrik-nisyk-nenad-tituk-nysil-hepyd-tovak-zutik-cepyd-toral-husol-henud-titak-hesak-nyrud-tarik-netak-zapad-tupek-hysek-zuned-tytyk-zisuk-hyped-tymik-hysel-hepad-tomak-zysil-nunad-tytak-nirik-copud-tevok-zasyk-nypud-tyruk-niryk-henyd-tityk-zyral-nyred-taryk-zesek-corid-tipek-zysek-nunad-tytal-hitul-hepod-tovik-zurek-hupyd-tavil-hesuk-zined-tetuk-zatel-hopod-tevul-haruk-cupod-tavuk-zesol-ninid-tetok-nasyl-hopid-teryl-nusol-heped-tovuk-hasil-nenod-titek-zyryl-hiped-tivyk-cosok-zorud-tirel-hyrel-hinid-tetok-hirek-zyped-tyrel-hitul-nyrad-tarak-hotok-cuvux'
#str是待解密字符
Str=BubbleBabble().decode(str).decode('utf-8')
print(Str)
result=BubbleBabble().decode(Str).decode('utf-8')
result1=BubbleBabble().decode(result).decode('utf-8')
print(result1)

解出flag为bugku{th1s_1s_A_Bubb13}


easy_crypto

0和1一般都是morse了。可能是因为有unicode,所以有的网站会转不出来。所以自己写了个

1
2
3
4
5
..-. .-.. .- --. ----.-- -- ----- .-. ... . ..--.- -.-. --- -.. . ..--.- .---- ... ..--.- .. -. - . .-. . ... - .---- -. ----. -.-.-- -----.-

--.- -.-- -. ..- ....-.. .. ..... -.- --- - --..-. .-.- ... .-- - --..-. -.... --- --..-. -- .- . - -.- - --- . -.... .- ....- .-.-.. .....-.

0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0 000 1 01111 10 11110 101011 1111101

http://ctf.ssleye.com/morse.html

http://tool.bugku.com/mosi/

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
str="0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0 000 1 01111 10 11110 101011 1111101"
code = {
'!': '-.-.--',
'$': '...-..-',
"'": '.----.',
'(': '-.--.',
')': '-.--.-',
',': '--..--',
'-': '-....-',
'.': '.-.-.-',
'/': '-..-.',
'0': '-----',
'1': '.----',
'2': '..---',
'3': '...--',
'4': '....-',
'5': '.....',
'6': '-....',
'7': '--...',
'8': '---..',
'9': '----.',
':': '---...',
';': '-.-.-.',
'>': '.-.-.', #<AR>
'<': '.-...', # <AS>
'{': '....--', #<HM>
'&': '..-.-', #<INT>
'%': '...-.-', #<SK>
'}': '...-.', #<VE>
'=': '-...-', #<BT>
'?': '..--..',
'@': '.--.-.',
'A': '.-',
'B': '-...',
'C': '-.-.',
'D': '-..',
'E': '.',
'F': '..-.',
'G': '--.',
'H': '....',
'I': '..',
'J': '.---',
'K': '-.-',
'L': '.-..',
'M': '--',
'N': '-.',
'O': '---',
'P': '.--.',
'Q': '--.-',
'R': '.-.',
'S': '...',
'T': '-',
'U': '..-',
'V': '...-',
'W': '.--',
'X': '-..-',
'Y': '-.--',
'Z': '--..',
'\\': '.-..-.',
'_': '..--.-',
'~': '.-.-',
' ': '_',
'\n':'_',
'{':'----.--', #%u7b转
'}':'-----.-', #%u7d转
}
a=str.replace("0",".")
a=a.replace("1","-")
list=a.split(" ")
print(list)
for i in range(0,len(list)):
for key,value in code.items(): #遍历字典键和值
if(value==list[i]):
print(key.lower(),end="")

flag{m0rse_code_1s_interest1n9!}


你以为是md5吗

了解一下md5组成https://www.cnblogs.com/second-tomorrow/p/9129043.html

加密完成后都是16进制的。故把题中的非16进制字符删除

bc177a7a9c7df69c248647b4dfc6fd84解密得到–》666666666666


散乱的密文

描述说:lf5{ag024c483549d7fd@@1} 一张纸条上凌乱的写着2 1 6 5 3 4

开头应该是flag{开头的,判断可能位置是215643,置换密码写个脚本跑一下

分6组,每组取215643,-1是因为有0位

1
2
3
4
5
6
7
8
9
str="lf5{ag024c483549d7fd@@1}"
list=[]
for i in range(0,len(str),6):
list.append(str[i:i+6])
# print(int(len(list)))
for j in range(0,int(len(list))):
# print(list[j])
print(list[j][1],list[j][0],list[j][4],list[j][5],list[j][3],list[j][2],end="")

flag{52048c453d794df1} 最后面的@应该要自行去掉


简单加密

最后两位是AA,考虑ascii码-4为=,base64编码。所有字符转成数字-4在转成ascii码。在base64解密

1
2
3
4
5
6
7
8
import base64
a=""
str1="e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA"
for i in range(0,len(str1)):
a=a+chr(ord(str1[i])-4)
print(chr(ord(str1[i])-4),end="")
print("\n")
print(base64.b64decode(a).decode('utf-8'))

最后得到答案 key{68743000650173230e4a58ee153c68e8}


.!?

这题没想到会是Ook!,毕竟以为Ook一定要有Ook。这里面没含有。但给的附件中文件只含有.!? 有点像 Ook.Ook!Ook?

直接找个Ook!的直接解

1
2
3
4
5
6
7
8
9
..... ..... ..... ..... !?!!. ?.... ..... ..... ..... .?.?! .?... .!...
..... ..... !.?.. ..... !?!!. ?!!!! !!?.? !.?!! !!!.. ..... ..... .!.?.
..... ...!? !!.?. ..... ..?.? !.?.. ..... .!.?. ..... ..... !?!!. ?!!!!
!!!!! !?.?! .?!.? ..... ....! ?!!.? ..... ...?. ?!.?. ..... !.?.. .....
!?!!. ?!!!! !!?.? !.?!! !!!!! !!!!. ..... ...!. ?.... ...!? !!.?. .....
?.?!. ?..!. ?.... ..... !?!!. ?!!!! !!!!? .?!.? !!!!! !!!!! !!!.? .....
..!?! !.?.. ....? .?!.? ....! .!!!. !!!!! !!!!! !!!!! !!.?. ..... .!?!!
.?... ...?. ?!.?. ..... !.!!! !!!!! !.?.. ..... ..!?! !.?.. ..... .?.?!
.?... ..... !.?.

flag{bugku_jiami}


一段base64

多重套套套套套娃=。=


奇怪的密码

给了一串密文。看样式像是flag的形式,但最后多了一位,对比一下ascii可以发现。每一位相应的减去1 2 3 4就是flag。写个脚本跑一下

1
2
3
str1="gndk€rlqhmtkwwp}z"
for i in range(0,len(str1)):
print(chr(ord(str1[i])-(i+1)),end="")

这不是md5

给了一串字符,看着像16进制,直接拿去解。解出来就是flag

1
2
3
4
import binascii
str="666c61677b616537333538376261353662616566357d"
print(binascii.a2b_hex(str))
#b'flag{ae73587ba56baef5}'

贝斯家族

base家族挺大的,可以看看这篇文章 base编码家族
base91最终尝试出来

1
2
3
4
#py2
import base91
print(base91.decode("@iH<,{bdR2H;i6*Tm,Wx2izpx2!"))


告诉你个秘密

给的一串像是16进制,拿去转,转完像base64,解出来。

1
2
3
4
5
6
import binascii,base64
str="636A56355279427363446C4A49454A7154534230526D684356445A31614342354E326C4B4946467A5769426961453067"
a=binascii.a2b_hex(str)
b=base64.b64decode(a)
print(b)
#t o n g y u a n

解出来下面一串,键盘密码,围在中间。写出来就是tongyuan,大小写尝试,大写成功提交。

1
b'r5yG lp9I BjM tFhBT6uh y7iJ QsZ bhM '

来自宇宙的信号

提到宇宙,又是图片。对照了一下,发现银河字母中的字母跟图片比较相似。
直接照着图片翻译就可。flag{nopqrst}
Snipaste_2021-05-15_10-05-05.png


进制转换

给了一串字符串,根据题目看如果是进制转换的。就要转换成一样的,在输出

1
d87 x65 x6c x63 o157 d109 o145 b100000 d116 b1101111 o40 x6b b1100101 b1101100 o141 d105 x62 d101 b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e

可知b为2进制,o为8进制,d为10进制,x为16进制。
写脚本转换,直接split之后存列表里。这样就能一个一个取了。然后在判断每一个的第一位是什么,之后在转成相应进制,%c输出格式化字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# b 二进制    o 八进制   d 十进制    x 十六进制 
import binascii
zfc="d87 x65 x6c x63 o157 d109 o145 b100000 d116 b1101111 o40 x6b b1100101 b1101100 o141 d105 x62 d101 b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e"
temp=""
a=zfc.split(" ")
for i in range(0,len(a)):
if(a[i][0])=="x":
b=int(a[i][1:],16)
print("%c"%b,end="")
if(a[i][0])=="d":
b=int(a[i][1:])
print("%c"%b,end="")
if(a[i][0])=="o":
b=int(a[i][1:],8)
print("%c"%b,end="")
if(a[i][0])=="b":
b=int(a[i][1:],2)
print("%c"%b,end="")

抄错字符


Crack it

linux下的shadow口令。直接用john破解就可以了
Snipaste_2021-05-16_09-46-23.png


一段新闻

就给了一个txt文件,但中间有一大段空白,一开始没看出来是零宽字符隐写,后来看了wp。发现了是隐藏字符加密。其实隐藏字符加密就是零宽字符隐写。

vim打开文件即可看到200b,200c,200d
Snipaste_2021-05-31_19-39-11.png

解密之后发现是核心价值观,找个网站解密,解出最后的flag为

1
2
3
4
5
6
7
公正公正公正友善公正公正民主公正法治法治诚信民主法治法治公正爱国法治敬业平等友善敬业公正自由和谐富强公正诚信自由法治自由平等诚信平等法治敬业公正诚信平等法治平等平等诚信平等法治自由法治文明法治敬业平等诚信平等法治自由和谐富强平等诚信平等法治平等公正友善爱国公正自由公正平等法治文明法治和谐法治自由公正民主公正诚信自由公正自由平等诚信平等法治和谐公正友善敬业公正和谐公正敬业公正民主和谐民主公正敬业法治和谐公正友善法治和谐诚信平等法治诚信和谐





flag{why_d0nt_you_try_t0_understand_socia1ism?}

你懂我的乐谱吗?

不太懂了。。开局一张五线谱,剩下全靠猜
把乐谱按照给的对照图翻译出来
乐谱.png
yp-1.png
yp-2.png

按图写下
yp-3.png

在把音符排列出来
yp-4.png

排列完了之后,把排完的图和对照的图对照起来得出flag,大写提交

1
2
FLAGISEMARKCISSOACHHLG
flag is EMARKCISSOACHHLG

affine


affine