ぺんぎんさんのおうち

日本語勉強中のドイツ産ペンギンがいろんなことを書く

Kaspersky Industrial CTF Quals 2017[Write-up]

Kaspersky Industrial CTF Quals 2017にHarekazeで参加し, 2450Pで32位でした.
そのうち僕は1問解いて300P入れました.
Write-upです.

[Crypto] Security home cameras (300)
secret_encrypted.png というファイルが与えられますが, fileコマンドで得られる結果はdataだったのでどうやらpngファイルではないようです.
pngマジックナンバーである 8950 4E47secret_encrypted.png の 先頭4byteとでXORをとってみると FFFF FFFFになったので, 全てのビットを反転させているのではないかと予想しました.

短いですが以下のコードでフラグが得られました.

import struct
enc = open("secret_encrypted.png").read()
fout = open("allBitReversed.png", 'wb')

for ch in enc:
  bi = ord(ch)^0xff
  fout.write(struct.pack("B", bi))
  #print(struct.pack("B", bi), end="")

300にしては易しめだったと思います.
他の問題は全くだったのでもっと精進したいです.