暗号化プログラム (ELFファイル) encrypter
と、暗号文secret
が与えられた。
encrypter
をmain
関数があった。
An encryption program (ELF file) encrypter
and a encrypted file secret
were given.
Decompiling encrypter
via main
:
暗号化は、1個4バイトの乱数を上位バイトから順にxorすることによって行われていた。
乱数生成器も逆コンパイル結果に含まれており、最初の乱数がわかれば続きもわかる仕様だった。
暗号文の最初がflagの最初ract
を暗号化したものであると仮定すると、
暗号文とこのflagの最初の部分をxorすることで最初の乱数がわかる。
この値を利用し、以下のプログラムでxorする値の残りの部分を求めた。
The encryption is done by calculating exclusive-or of the plaintext and random values.
The random values are 4 bytes each and used from the high byte.
Assuming that the first part of the ciphertext is the first part of the flag ract
with encrypted,
we can retrieve the first value of the random values by calculating exclusive-or of the ciphertext and the first part of the flag.
I calculated the left part of the random values via this program using the value:
得られた乱数列と暗号文を
I obtained the flag by calculating XOR of the random sequence and ciphertext via