-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolve.py
35 lines (33 loc) · 9.62 KB
/
solve.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
33
34
35
from functools import reduce
import operator
REGEXES = [
"[012345789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][012456789abcdef][0123456789abcdef][012345689abcdef][0123456789abcdef][02456789acdef][0123456789abcdef][013456789abcdef][01256789abcdef][0123456789abcde][01345679abcdef][012346789abcdef][0123456789abcdef][012356789abcdef][012356789abcdef][012345678abcdef][02346789abdef][012456789abcdef][0123456789abcdef][0123456789bcdef][0123456789abcdef][0123456789abcdef][012345689abcde][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abdef][02346789abcdef]",
"[0123456789abcdef][123456789adef][012356789abcdef][0123456789abcef][0123456789abcde][0123456789abdef][02346789abcde][012345689abcdef][0123456789abdef][012345789abdef][012345678abcdef][0123456789abcdef][0123489abcdef][023456789abcde][01345689abcdef][0123456789abcdef][123456789abcef][0123456789abcdef][0123456789abcdef][0123456789abcdef][012356789abcdef][0123456789abdef][0123456789abcdef][0123456789abcdef][01234689abcdef][023457abcdef][0123456789abcdef][0123456789abcdef][0123456789abcd][012356789bcdef][0123456789abcdef][0123456789bcdef]",
"[0123456789abcdef][0123456789abcdef][0123456789abcdef][012346789abcdf][0123456789abdef][0123456789abcdef][0123456789abcdef][0123456789acdef][0123456789abcdef][012356789bcdef][012456789abcdef][0123456789bcdef][0123456789abcdef][0123456789acef][012345789abcdef][012345678bcdef][012346789abcdef][012456789abcdef][012356789abef][012345679abcdef][0123456789abcdef][02346789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][012346789abcde][012345679abcdef][012356789abdef][012346789abcdef][01234569abcdef][0123456789abcdef]",
"[023456789abcdef][013456789abcdef][0123456789bcdef][012345679bcdef][0123456789abcdef][0123456789abcef][0123456789abcdef][0123456789abcdef][012345679abcdef][0123456789acdef][0123456789acdef][0123456789abcde][0123456789adef][12356789abcdef][0123456789abcdef][0123456789abcdef][023456789abcde][0123456789abcdef][0123456789abcdef][012345678abcde][0123456789abcdef][0123456789abcde][12345678abcdf][01235678abcdf][0123456789abcdef][012356789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef]",
"[0123456789abcdf][012345678abcdef][012345678abcef][0123456789acdef][0123456789abcdef][012356789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][02345679abcdef][023456789abcdef][013456789abcdef][0123456789abcdef][012456789bcdef][012356789abdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcef][0123456789abcde][0123456789abcdef][012345679abcdef][013456789abcdef][0123456789abcdef][0123456789abcdf][123456789abdef][0123456789adef][0123456789abcef][03456789acdef][123456789abcdef][0123456789abcdef]",
"[0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][01235789acdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcef][012345689abcdef][023456789abcdef][0123456789abcdef][0123456789abdef][0123456789abcdef][0123456789acdef][012345679abcdef][012456789abcdef][012345789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][02345678abdef][0123456789acdef][012356789abcdef][123456789bcdef][0123456789abcdef][0123456789abcde][0123456789abcde][0123456789abcdef]",
"[123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][012345678acdf][012456789abcdef][0123456789abcdef][0123456789abcdef][012346789abcef][0123456789abcdef][123456789abcdef][0123456789abdef][0123456789abcdef][012456789abcdef][0123456789abcdef][0123456789abcdef][0123456789bdef][012345678acdef][0123456789bcdef][013456789abcdf][0123456789abcdef][0123456789abcdef][0123456789abcdef][123456789abcdef][0123456789abcdef][012346789abcdef][012456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][012456789bcdef][0123456789abcde]",
"[012345679abcdef][0123456789abcde][0123456789abcdef][123456789abcdef][012356789abcdef][0123456789acdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][123456789abcdf][0123456789abcdef][0123456789abcdef][012345679abcef][023456789abcde][0123456789abcdf][123456789abcef][01345679abcdef][0123456789abcdef][0123456789acdef][0123456789abcef][0123456789abcdef][012345789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcd][012345679cdef][0123456789abcdef][012345789abcef][12345689abcdef]",
"[0123456789abcdef][012456789abcdef][0123456789abcdef][023456789abdef][012345689abcdef][0123456789abcdef][01456789abcf][012356789abcdf][0123456789abcdef][013456789abcdef][01235789abcdef][013456789abcef][012345679abcdef][0123456789abcdef][0123456789acdef][012345789abcdf][012456789abcdef][013456789abcde][0123456789abcdef][0123456789abcdef][012345689abcdef][123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcef][0123456789abcdef][0123456789abcdef][0123456789abcdf][02345678abcdef][0123456789abdef]",
"[012456789abcdef][0123456789abcdef][01345689abcdf][0123456789abcdef][12345789abcdef][13456789abcdef][0123456789abcdef][013456789abcdef][013456789abcdef][0123456789abcdef][0123456789abcdef][0123456789acdef][012345678abcdef][0123468abcdef][0123456789abcdef][01245689acdef][012345679abcdef][0123456789abcdef][0123456789acde][012345689abcdef][0123456789bcdef][012456789bcdef][012345689abcdef][012456789acdef][012345789abcdef][0123456789abcdef][0123456789abcdef][012456789abcdef][023456789abcdef][012345689abdef][0123456789abcdef][012456789abcdef]",
"[012345689acdef][02345679bcdef][0123456789abcdef][0123456789abcde][0123456789abcef][012345689abcdef][0123456789abdef][1245678abcdef][0123456789abcdef][01245679abcdef][012346789abcdef][0123456789abcdef][0123456789bcdef][0123456789abcdef][0123456789abcdef][012345679abcdef][012345678abcdef][0123456789bcdef][0123456789abcdf][0123456789abcdef][12345678abcdef][012345679acdef][03456789abcdef][012346789abcdef][0123456789abcdef][0123456789abcdef][03456789abcdf][0123456789abcdef][012345789abcdef][0123456789abcdef][0123456789abcdf][0123456789abcdf]",
"[0123456789bcdef][012346789abcef][0123456789abcdef][012456789abcdef][0123456789abcdef][02345679abcdf][0123456789abcdef][012345789abcef][0123456789abcdf][23456789abcdef][0123456789abcdef][0123456789abcdef][012456789abcdef][0123456789abcdef][012345678abcdef][0123456789abcdef][0123456789abcdef][012346789abcdef][23456789abcdef][0123456789abcdef][012346789abcdf][0123456789abcdef][012356789abcdef][012345679abcdef][0123456789abcdf][0123456789abcef][012345678acdef][0123456789abcdef][012456789abcdef][12456789abcdef][0123456789abcdef][0123456789abcdef]",
"[012345678abcef][0123456789abcdef][123456789abcdef][01234568abcdef][0234679abcdef][01234578abcdef][012345679abcdef][0123456789bdef][012356789abcdef][0123456789abcdf][0123456789abcd][012345679abcdef][0123456789abcdef][0123456789abcdef][12356789abcdef][012346789abcdef][012345689abcdef][0123456789abcdef][012346789abcdef][012456789abcdef][0123456789abcdef][0123456789abcdef][012345789abcdef][0123456789abdef][0123456789abcef][013456789abcdef][012345789bcdef][023456789abcdef][012345689abcdef][0123456789abcdef][013456789abcdef][013456789abcef]",
"[013456789abcdef][0123456789abcdf][012345789acdef][0123456789abcdef][0123456789abcdef][012346789abcde][012345678abcdef][012346789abcdef][0123456789abcde][0123456789abcdef][0123456789bcdef][0123456789abcdef][123456789abcdef][0123456789abdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][012345789abcdef][0123456789abcdef][0123456789abcdef][023456789abdef][012356789abcdef][0123456789abcdef][0123456789abcde][012456789abcdef][0123456789bcdef][012345689abcdef][01345789abcef][012345678abcdef][012345679abcdef][0123456789abcdef][01235678abcdef]",
"[012346789abcdef][012356789abcdef][0123456789abdef][013456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][023456789abcdef][012345789abcdef][0123456789abcef][0123456789abcdef][0123456789abcdef][0123456789abcdf][0123456789abcdef][0123456789abcdf][0123456789abcdef][013456789abcdef][0123456789abdef][0123456789abcdef][0123456789bcdef][0123456789abcdef][0123456789abcdef][012456789abcde][012345689bcdef][01235679abcde][0123456789abdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789acdef][0123456789abcdef]",
"[0123456789abde][0123456789abcdef][0123456789abcdef][012345789abcdef][0123456789bcdef][0123456789abcdef][123456789abcdef][0123456789abcdef][012345678abcdef][01234678abcdef][0123456789abdef][01234578abcdef][0123456789abcef][012345789abcdf][0123456789abcdef][0123456789abcdef][0123456789abcdef][02345689abcdef][012345689abcdef][0123456789abcdef][012345789abcef][013456789abcdef][012346789acef][0123456789abcdef][123456789bcdef][012456789abcdef][0123456789abcdef][012345689abcdef][012346789abcdef][0123456789abcdef][012356789abcdef][0123456789abcdef]",
"[0123456789abcdef][012345689abcdef][0124679abcde][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][012345679abcdef][012345689bcdef][0123456789abcde][0123456789abcdef][0123456789abcdef][0123456789abcdef][0123456789abcdef][023456789abcdef][013456789abcef][0123456789abcdef][0123456789abcdef][0123456789abcdef][12356789abcdef][012345679abcdef][0123458abcdef][0123456789abcdef][0123456789abcef][0123456789acdef][0123456789abcdef][0123456789abcdef][01236789abcdef][123456789abcdef][01234578abcdef][0123456789abcdef][012345789acdef]",
]
def main():
sets = []
for regex in REGEXES:
sets.append([set(i) for i in regex.replace("[", "").split("]") if i])
flag = ''
for i in range(len(sets[0])):
char_set = reduce(operator.and_, (line[i] for line in sets))
assert len(char_set) == 1
flag += char_set.pop()
print(f"ctfcup{{{flag}}}")
if __name__ == "__main__":
main()