この大会は2016/9/10 11:00(JST)~2016/9/11 11:00(JST)に開催されました。
今回もチームで参戦ですが、結果は100点で81チーム中62位でした。
自分で解けた問題1問だけ正解という結果でしたが、その1問をWriteupとして書いておきます。
Crypto002 (Cryptography 100)
8進数が並んでいるように見えるので、それをASCIIコードとして読み込む。
with open('cipher.txt', 'r') as f: codes = f.read() codes = codes.split(' ') data = '' for code in codes: data += chr(int(code, 8)) print data
その結果以下のようになった。Brainfuck言語かな...。
+++++ +++[- >++++ ++++< ]>+++ +++++ +++.+ ++.<+ ++[-> +++<] >+.<+ +++[- >---- <]>-- .++++ +++.. +++++ +.<++ +++[- >---- -<]>- ----- --.<+ +++[- >++++ <]>++ +++.+ +++++ +.--- ----- ..+++ ++++. <+++[ ->+++ <]>++ +.--- --.-- ----. -.+++ +.<++ +++[- >---- -<]>- ----. <++++ ++[-> +++++ +<]>. <++++ [->-- --<]> .<+++ [->++ +<]>+ +.<++ +[->- --<]> ----- ..<++ +[->+ ++<]> ++.<+ ++++[ ->--- --<]> -.<++ ++[-> ++++< ]>+++ .-.<+ +++[- >---- <]>-- -.<++ +++[- >++++ +<]>+ +++.- ----- -.<++ +[->+ ++<]> +++.< +++[- >---< ]>--- .<+++ +[->+ +++<] >.<++ ++++[ ->--- ---<] >-.<+ +++[- >++++ <]>.< +++[- >+++< ]>+++ ++.<+ ++++[ ->--- --<]> ----. <++++ [->++ ++<]> +++++ .+++. ----- .<+++ +[->- ---<] >---- -.--. <++++ ++[-> +++++ +<]>+ +.--- --.+. <++++ +[->- ----< ]>--- ----- -.<++ ++[-> ++++< ]>+++ ++++. .<+++ [->++ +<]>+ +++.< +++++ [->-- ---<] >---- ----- -.<++ ++++[ ->+++ +++<] >.<++ ++[-> ----< ]>.<+ ++[-> +++<] >+++. <++++ [->-- --<]> .-.++ +++.- ----. <++++ [->++ ++<]> .++++ .<+++ [->-- -<]>- ---.+ +++++ ++.-- ----- .<+++ [->++ +<]>+ ++.-- ----- --.-- -.<++ +[->+ ++<]> +++++ .<+++ +[->- ---<] >---. <++++ [->-- --<]> ---.< +++++ [->++ +++<] >++.< +++++ [->-- ---<] >--.< +++++ [->++ +++<] >+++. ++.-- ----. ++.-- --.++ +++++ ++.++ +++++ +.<++ ++++[ ->--- ---<] >---. <++++ +[->+ ++++< ]>+++ +++++ ++.-- ----- .++++ .<+++ ++[-> ----- <]>-- ----. <++++ [->++ ++<]> ++.<+ +++[- >---- <]>-- -.+.< ++++[ ->+++ +<]>+ +++++ +.<++ ++[-> ++++< ]>.<+ ++[-> ---<] >--.+ +++++ +.<++ +[->- --<]> ----- .-.<+ +++[- >---- <]>-- -.<++ +++[- >++++ +<]>+ +++++ .---- ---.< +++[- >+++< ]>+++ .<+++ [->-- -<]>- ----. <++++ [->-- --<]> ----- .<+++ +[->+ +++<] >++++ ++.-- ----. --.<+ ++[-> +++<] >++.< +++[- >---< ]>--. <+++[ ->+++ <]>++ .--.< +++[- >---< ]>--. <++++ [->++ ++<]> +++++ +++.< ++++[ ->--- -<]>- ----. <++++ [->-- --<]> --.<+ ++[-> +++<] >++.. .<
Brainfuckオンラインツール https://sange.fi/esoteric/brainfuck/impl/interp/i.htmlで実行してみると、次のテキストになる。
KNXFMMS2GNFFMYTNMQ3WGRDDO5HG4QJVJZ5ES6KNI42XST2IIV3WGSCBGBRVIQJVMJXE2M2NPJLHQY2UNR3E23JZOVHG4SLXJ5KECNCNLAYD2===
アルファベットが全部大文字なので、Base32かも...。
https://emn178.github.io/online-tools/base32_decode.htmlでBase32デコードすると、以下のようになった。
SnV2Z3JVbmd7cDcwNnA5NzIyMG5yOHEwcHA0cTA5bnM3MzVxcTlvMm9uNnIwOTA4MX0=
今度はBase64デコードする。
$ echo 'SnV2Z3JVbmd7cDcwNnA5NzIyMG5yOHEwcHA0cTA5bnM3MzVxcTlvMm9uNnIwOTA4MX0=' | base64 -d JuvgrUng{p706p97220nr8q0pp4q09ns735qq9o2on6r09081}
http://www.geocachingtoolbox.com/index.php?lang=en&page=caesarCipherでROT13の復号をするとフラグになった。
WhiteHat{c706c97220ae8d0cc4d09af735dd9b2ba6e09081}