Bogo Solve

TCPサーバの接続情報と、サーバのプログラム main.py が与えられた。
main.py は、0から9999までの整数の順列を生成し、無限ループで以下の操作を受け付けるものだった。

あるビットが立っている添字を全部入力することで、添字のそのビットが立っている整数のリストを得ることができる。
これを繰り返すことで、それぞれの整数の添字のそれぞれのビットを得ることができる。
これらを組み合わせることでそれぞれの整数の添字を得ることができ、これを用いて順列を得ることができる。
そこで、これを行う以下のプログラムを作成した。

Information to connect to a TCP server and a server program main.py were given.
The main.py firstly generates a permutation of integers from 0 to 9999, and then accepts these operations in an infinite loop:

By selecting a bit and sending a list of all indice the bit of that is `1`, we can obtain a list of integers the bit of whose indice is `1`.
Repeating this, we can obtain each bits for the indice of each integers.
We can obtain the indice of each integers by combining the bits, and this can be useful to reconstruct the permutation.
I created this program to perform this process:

solve.pl

このプログラムで指定のサーバに接続することで、flagが得られた。

I obtained the flag by having this program connect to the specified server.

flag{alg0r1thms_ar3_s0_c00l!}

K3RN3L CTF