問題文
If you know your keyboard, you know the flag
問題分からキーボードと関連することはわかるが、それはそれとして渡されたファイルはなにかのハッシュが大量に並んでいる。長さが違うものがあるので複数のアルゴリズムが使われていそう。
長さから適当にsha256だろうとあたりをつけてオンラインのHash Crackerにかけてみる。今回は https://md5decrypt.net/en/Sha256 をつかった。すると最初のハッシュは
72dfcfb0c470ac255cde83fb8fe38de8a128188e03ea5ba5b2a93adbea1062fa : L
65c74c15a686187bb6bbf9958f494fc6b80068034a659a9ad44991b08c58f2d2 : o
とわかった。このサイトレスポンス早くていいな。みじかいのはMD5で
6f8f57715090da2632453988d9a1501b : m
だった。
というわけで雑に変換用のスクリプトを書く
from hashlib import md5, sha256 table = {} for i in range(256): v = chr(i) k1 = md5(v.encode()).hexdigest() k2 = sha256(v.encode()).hexdigest() table[k1] = v table[k2] = v xs = open("submit_the_flag_is_here.txt").read().strip().split(" ") ys = [] for x in xs: ys.append(table[x]) print("".join(ys))
結果はこうなった。Lipsumが見えているしどうやらこの方針は正しかったっぽい
このあとどうすれば良いのかわからず困っていたけど、こんな感じで解けた。keyboardは……?
$ cat decoded.txt |tr . '\n' | grep { _Congratulations!_T#e_Flag_Is_F#{Y3aH_Y0u_kN0w_mD5_4Nd_Sh4256}_Donec_facilisis_turpis_vel_ex_tempus_lacinia