我らがショタ、xrekkusu くんからの新年問題が出ていて、名指しで解いてろって言われてしまったので解きました。
問題「a34522e2009192570c840f931e4c3c0a」はこちらで確認してください。
まずは問題の
[code]U2FsdGVkX18pBpu6aX45TQiSj/V7TVOqdG/RolWb6Mc/D2s5gEvq51By4gwOMMjlmCeSy42V2PncFoMS3AWBTHwxlObtb6j4DKQYnYrgEKaA7musmCEmR1Dn38A5HFuS9Ix1CZ9a01FOL7/0OAODkU823wzF3k7cba0GxIc5dv1mBqjYSHydvghrijvCNv169JrItM07rRrEMJ7wbamZEtT9XGU5Z7v6PW8pnE7q2Q+HyAXy1LkE/xG3ZIj3F64cP20+j+hpt6YW/oKMoc+XQlXsAtFZMlOLnfdVmO/5euovk72QPHgH7QSNSr/BOvqkcPuEcbJX75E4duJojLzjIVzgTTjB4lGlxrbpFuQaC+vtKBU9Yre5ctiAiE4lfEyjLQLRpuSihyJ/MszaAy+LWRD0+gEHbtXRnF9GgDff05jOSVk5b6s5BD/L7D6jabk0N2JOSuTlRTi5m7wzNAKc2PRisEeFA7oOFTFXEe/ANLn8TU9p7+L1Qm8stci5sA935dhRoumW//S1gXoLVdgw5IKAEGU2J/ts179w2hHGq4si4Q3VsNvqGG0szVvzierGydbLpLB3S3Djrk+cul1tss1Oqj6UlFzeDjIhiRwNC6dMPHVajecnf1j9r8VjWAfywoih8KiIW2ufeGNL/GBXwwaRJ6KKR5BLuzTjakU/AoEimNcIfh/NSZTfVESdCMlVW7bkgNijisNqTBaDS8OOKEQGtVU9HymDymFgwrwvdMTj0sEXpVjaj0L01s0NqY7RMongT6YGltBuNFdxxwmsbuspTgLs+r9J0qCYlLz5KUXioYHck7/kK73TJjNYhtgb1iH9FQ1ZeR8lJSry3PwWsh+xU7JllEW5qRdS8denR2ILnvsVms49n4aUbwM3ewqfLZtBKaS3GEQyVYOlm5iPf3577wsV4JKUzJroJoOltIHJzN9AF4+nTXsetn7WtoqeAP2HKW93RGMFHzdfknEYA1qL1xYG0DXhl6z0vNgOFlNVm1CJodxX2acU0W4iRlnv3NJv+SA0SGRh70xxyR3qBNuUm0YwqdvZ37EAzcg4Io+ONp75bUfQJqRe44LpBGoocJYNhA41bheyuPnlNLDwj/WHfP4l7PBk/SFmBMwcKjcgOipC4txN5eWxVMdI+fNipNnJmxL4oV5vSn1DUV4ziskOSGYwrXcKsIhgZTiH+Z/SwUXXjrTrRxIfgzESt8ptFPy09Od9XvnCqo7rsc+TI8FazOC8LuR/SUHegDPC+ASJvcNYbbcOubTxk1h9CBVKwPqXlau/ijzu16Re1BtoMPAd5fMylx/qfvLk3BnIbDICzL569JBAYsOypOUeemenTlrzSh5UZgaHWR7gGWzJLji6TDqiX3LKZ23Xn1B3TP2iILVXpelhO29jBol5aRsZF0ri8ns7W2KNOsD4VAjlFWswtCvrhWbtl6jdHFkc9webo8axmgAv3yAKXLx9jQGk60ro7FUszhxeDTQvt0RGhCNuK5m0PeGRmUYa2BBvKP+KhrvDIr4gfYSSniz/uoWV03Tcn+d8tz84Ln+ppOZwRI/EXQVtFxyUS8q7goUp3OVMMvKWhI0Jzc/bg7oagYP32E0eucPsp6UIYrMjU6rIEEaTky23tOntK7NFXYlK1njjOTR+qYERhO1OXp1P6wCXlOX1lpM9HACR4ccPYbzVatL/ODJC6+PpRHOjZ4MzS564nJAeVEQ2yXgsDsH4ZJDJjwaOLQdLqDlpDo2sB64sB74smPSHw22xe7g9KvZ6VI3U/20LhdnAvsr3TqdiayKT7rFKMWKqD1OlMeTnsVH54k5ZiHR5xcIWb4VudHxdSHy1UWEYClKEJCXNY0KikRMudhW5M0+3tcmfFVS0Kd9L5vyD8aG3Ty/E6RKtc/eioS2lzpOzAsq1QreAiIwRPPBIBAfeMmF2lNGg6xunWW2gQdLyhlC+P1MhZRLKrw1mbPaxwNTP2RUWoOU1UITXMvXuSBVHF5srM0iFOPvRuIpY0DKyfh1ddx5lqLh8OTqtDiM3He/mUU4x52QAaJGtH4CFWWLMpAK583ItnkyVnaCxHAED8WKZwKGbKjpUEWKPSQ/LGFlaHpauStYmKpyz/JnUyMUxgFyU2rfQAVfvueFgdaX50E84neIWdWvHet+G873/QgOa+D3Ywr50QsI7kocdyofV590TIB5ptcvZv5a4fZBIiFUaaSXWDdNMn0hALS7i/vWnOSa9IcmfxbhQjP0tZ7a0xVpjCpiPrUDg9WecvnOXpffKEW174cio3yadSMk=
[/code]
ですが、どうみてもBase64なので、
base64 -D -i file -o output
で output に書き出します。
すると、先頭が「Salted__)」で始まるバイナリが出てくるので何かしらSaltを使ったハッシュか暗号データだと気づきます。もしくは塩味のポテチか何かか。
僕は
-aes-128-cbc -aes-128-cfb -aes-128-cfb1 -aes-128-cfb8 -aes-128-ecb -aes-128-ofb -aes-192-cbc -aes-192-cfb -aes-192-cfb1 -aes-192-cfb8 -aes-192-ecb -aes-192-ofb -aes-256-cbc -aes-256-cfb -aes-256-cfb1 -aes-256-cfb8 -aes-256-ecb -aes-256-ofb
をとりあえず順番に試してみましたww
openssl enc -aes-256-cbc -d -in rekkusu-decode64
こういう感じです。
これの鍵は、タイトルの「a34522e2009192570c840f931e4c3c0a」が文字数と文字列からすぐにMD5ハッシュだと気づきますので、MD5 rainbow tableのサイト(今回は http://jp.freemd5.com/ を使いました)で、検索すると「happynewyear」だということがわかります。
これをAESのパスワードとして入力すると復号でき
+9[1>1+7<1-1]1>1+2.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.2-2.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.1<1+9[1>1+1<1-1]1>1+6.1<1+9[1>1-1<1-1]1>1-8.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.1<1+9[1>1-2<1-1]1>1-6.1<1+9[1>1+2<1-1]1>1+4.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.1<1+9[1>1+2<1-1]1>1+3.1<1+9[1>1-2<1-1]1>1-5.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.1<1+9[1>1+4<1-1]1>1+6.1<1+9[1>1-4<1-1]1>1-8.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.1+8.1<1+9[1>1-1<1-1]1>1-1.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.2<1+9[1>1-4<1-1]1>1.1-1.1-1.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.1<1+9[1>1+4<1-1]1>1+7.1<1+9[1>1-5<1-1]1>1.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.1<1+9[1>1+4<1-1]1>1+8.1<1+9[1>1-5<1-1]1>1-1.1<1+9[1>1+1<1-1]1>1+5.1-2.1<1+9[1>1-1<1-1]1>1-3.1<1+9[1>1+4<1-1]1>1+2.1<1+9[1>1-2<1-1]1>1-4.1<1+9[1>1-1<1-1]1>1-5.1+4.1-6.1<1+9[1>1+1<1-1]1>1+5.1<1+9[1>1-2<1-1]1>1-5.1<1+9[1>1+1<1-1]1>1.1<1+9[1>1+5<1-1]1>1+8.1<1+9[1>1-5<1-1]1>1-8.1+2.1-1.1-1.1<1+9[1>1+1<1-1]1>1+5.1<1+9[1>1-2<1-1]1>1-5.1<1+9[1>1+1<1-1]1>1.1<1+9[1>1+5<1-1]1>1+8.1<1+9[1>1-5<1-1]1>1-8.1+2.1-1.1
が出力されます。
一旦、ここから先に進めなくなったのですが、記号・数字、記号・数字の順に並んでいることから、数字の分だけ記号に置き換えて展開することにしました。
これは brain fuck なので、「Javascript Brainfuck Interpreter / Debugger」(http://www.iamcal.com/misc/bf_debug/)でこのコードを実行します。
しばらく時間がかかりますが、
AOMAgQCCAOMAgQCRAOMAgQC+AOMAgQCXAOMAgQCmAOMAgQCKAOMAggCBAOMAgQCnAOMAgQCoAOMAgQCGAO8AvACBAO8AvACB
という文字列が出てきます。
これを再度 Base64 decode します。
echo -n 'AOMAgQCXAOMAgQCmAOMAgQCKAOMAggCBAOMAgQCnAOMAgQCoAOMAgQCGAO8AvACBAO8AvACB' | base64 -D -i - | hexdump -C
そうすると
00000000 00 e3 00 81 00 97 00 e3 00 81 00 a6 00 e3 00 81 |................| 00000010 00 8a 00 e3 00 82 00 81 00 e3 00 81 00 a7 00 e3 |................| 00000020 00 81 00 a8 00 e3 00 81 00 86 00 ef 00 bc 00 81 |................| 00000030 00 ef 00 bc 00 81 |......| 00000036
こういったものが出力されるので、しばらく Sn0wNight くんと悩みましたが ucq 大先生の助言により 00 がゴミだとわかりました。
バイナリエディタの0xEDで00を削ると
00000000 e3 81 82 e3 81 91 e3 81 be e3 81 97 e3 81 a6 e3 |................| 00000010 81 8a e3 82 81 e3 81 a7 e3 81 a8 e3 81 86 ef bc |................| 00000020 81 ef bc 81 |....| 00000024
になるので、これをcatすれば
「あけましておめでとう!!」
が出力されてクリアです。