AeroCTF 2019|Crypto warmup

#AeroCTF2019

https://ctftime.org/task/7767

Again, these memes, we have even stopped talking to them. Just look at it, they seem to be crazy.

次のファイルが与えられる

kappa_pride pepe kappa 
look_at_this_dude kappa trollface 
look_at_this_dude kappa_pride look_at_this_dude 
look_at_this_dude kappa_pride trollface 
look_at_this_dude look_at_this_dude pepe 
kappa_pride trollface kappa 
pepe look_at_this_dude kappa_pride 
kappa_pride trollface kappa_pride 
trollface look_at_this_dude look_at_this_dude 
trollface look_at_this_dude look_at_this_dude 
pepe look_at_this_dude look_at_this_dude 
pepe look_at_this_dude look_at_this_dude 
look_at_this_dude kappa kappa_pride 
pepe look_at_this_dude pepe 
trollface look_at_this_dude look_at_this_dude 
kappa_pride trollface trollface 
pepe look_at_this_dude look_at_this_dude 
kappa_pride kappa kappa 
look_at_this_dude kappa kappa_pride 
pepe look_at_this_dude kappa_pride 
look_at_this_dude kappa kappa_pride 
look_at_this_dude kappa trollface 
kappa_pride kappa kappa 
kappa_pride trollface kappa_pride 
kappa_pride kappa look_at_this_dude 
trollface look_at_this_dude pepe 
pepe look_at_this_dude pepe 
kappa_pride kappa look_at_this_dude 
look_at_this_dude kappa trollface 
look_at_this_dude kappa trollface 
kappa_pride kappa kappa 
pepe look_at_this_dude look_at_this_dude 
pepe look_at_this_dude pepe 
pepe look_at_this_dude look_at_this_dude 
kappa_pride trollface kappa_pride 
pepe look_at_this_dude look_at_this_dude 
kappa_pride trollface kappa 
trollface kappa kappa kappa

数えてみる

21 kappa

22 kappa_pride

38 look_at_this_dude

17 pepe

17 trollface

5進数とかだろうか。それぞれに0-4を割り当てるとして、総数は5!程度なので小さいしやってみる

from itertools import permutations


with open("challenge.txt") as f:
    lines = f.read().strip().replace("kappa_pride", "x").split("\n")

words = ["kappa", "x", "look_at_this_dude", "pepe", "trollface"]

for ws in permutations(words):
    s = ""
    for l in lines:
        l2 = l.replace(' ', '')
        for i, w in enumerate(ws):
            l2 = l2.replace(w, str(i))
        s += chr(int(l2, 5))
    print(s)

itertools.permutationsをきれいに使ってかけた。Haskellなんかをつかうともっとうまくかけるのかな。

出力結果からフラグを探すと見つかった。

$ python3 solve.py | grep -i Aero
Aero{7a911ccfb18c2fafe2960b6ee2cbc9c7}