ファイル dump.log
が与えられた。
これはテキストファイルで、各行には#
を挟んで左側には何らかの文字列、右側には16進数で書かれたデータがあった。
各行のデータは高々8バイトであった。
そこで、まず以下のプログラムを用い、各行のデータをバイナリで抽出した。
8バイト未満の行にはパディングを入れ、1行を8バイトで表した。
A file dump.log
was given.
This was a text file. In each line, there was some strings in the left of #
and a hexadecimal data in the right of #
.
Data in each lines were at most 8 bytes.
Seeing this, I used this program to express data in each lines in binary.
I added padding to lines that are less than 8 bytes and expressed each lines by 8 bytes.
次に、以下のプログラムを用い、抽出したデータについて行内の位置ごとにバイトの値の分布を調べた。
Then, I used this program to calculate the distributions of the byte values for each place in the lines.
結果、以下の分布データが得られた。
The result is:
分布データをみると、3バイト目と4バイト目 (0-origin) にASCIIの英字を表す値が多く現れていることが読み取れた。
そこで、これらの位置のデータを抽出して調べることにした。
以下のプログラムを用いることで、指定の位置のデータを抽出できる。
Seeing the data, I found the the 3rd and 4th bytes (the first byte is 0th) contains a lot of values that corresponds to ASCII English alpabets.
Therefore, I decided to extract data in the positions to investigate.
I used this program to extract data at the specified position.
4番目のバイトからは、特に興味深いデータは見つからなかった。
3番目のバイトについて、まずASCII印字可能文字以外をを消去した。
すると、PE69
の4文字が多く見られたので、これらも消去した。
さらに余計な文字が入っているようだったので、*'28M
も消去した。
すると、flagの各文字がそれぞれ大量に繰り返された文字列になった。
それぞれの文字を1個ずつ並べることで、flagが得られた。
文字の消去は以下のRecipeで行った。
I found nothing interesting in the 4th bytes.
Firstly, I removed data other than ASCII printable characters from the 3rd bytes.
After that, I found a lot of the 4 characters PE69
, so I removed them.
Then, I found there are some extra characters, so I removed *'28M
.
This resulted in a string in which each characters of the flag are repeated many times.
I obtained the flag by taking each characters once.
I used this Recipe to remove the characters:
Find / Replace, Find / Replace - CyberChef