Asian Cheetah
与えられたファイルを解凍すると、jarファイルと下画像のPNGファイルが得られます。misc
We have hidden a message in png file using jar file. Flag is hidden message. Flag is in this format:
SharifCTF{flag}

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










