Asian Cheetah

misc

We have hidden a message in png file using jar file. Flag is hidden message. Flag is in this format:
SharifCTF{flag}

Download

与えられたファイルを解凍すると、jarファイルと下画像のPNGファイルが得られます。
AsianCheetah1

このJAVAプログラムを使ってPNG画像にメッセージを埋め込んでいると思われます。それでは、このJAVAプログラムの動作を確認するため、解凍してできたHide.jarファイルをデコンパイルしてみます。まず、Hide.zipにリネームして解凍します。Hide.classファイルができるので、JAVAのデコンパイラ「JD-GUI」で開きます。

no title
 

このJAVAプログラムの動作を解析すると、元になるメッセージを1文字ずつ先頭ビットから順に処理し、画像の左上(0,0)から右方向に1ピクセルを対応させています。メッセージのビットが1の場合、そのピクセルのRGB値を奇数にし、0の場合、偶数にしています。

それでは、動作が分かりましたので、画像からピクセルの色情報を読み取ってメッセージを復元するRubyプログラムを書いてみます。

require "RMagick"
include Magick

def get_rgb_arry(file)
  img = ImageList.new(file)
  str = ""
  cnt = 0
  for y in 0...img.rows
    ch = 0
    for x in 0...img.columns
      src = img.pixel_color(x, y) # 元画像のピクセルを取得
      if src.blue % 2 == 1
        ch = ch + 1
      end
      cnt = cnt + 1
      if cnt >= 8
        str = str + ch.chr
        ch = 0
        cnt = 0
      end
      ch = ch << 1
    end
  end
  return str
end

pic1 = "AsianCheetah1.png"
print get_rgb_arry(pic1)

実行すると、次の出力が得られます。

43:SharifCTF{e8e12db2fc654f3b50f3da4901ab986e}S�ワ?眥vkハ匣 斜1T<・カ�セdsT・.~・・ェン    イ・体・﨏・Qチ/wムKc、キf{i當2K・躬・zモホ介ニァ"クED/^_合7閾レM| ホKン0棊・フ:ーH

見事フラグを得ることができました。

フラグは、

e8e12db2fc654f3b50f3da4901ab986e

です。