چند روز پیش مسابقه TJCTF 2016برگزار شد.

مسابقه دبیرستانی بود و سوالاش از سطح پایین شروع میشد که برای ما تازه‌کارا مناسب بود. :)

راه‌حل چندتاشونو که حل کردم تو وبلاگ قرار میدم.


Basic Images - Forensics - 65 pt

Description :

Check out my shades! If you want the flag, I guess you should be basic like me. Good luck!

تصویر زیر داده شده بود و پرچم رو میخواستن :


کدهای RGB هر پیکسل عکس یکسانه :



در ادامه من با پایتون کدی نوشتم که مقدار RGB هر پیکسل رو بخونه و به کاراکتر تبدیلش کنه (Ascii Table) :from PIL import Image

f = Image.open('Shades.png')
(h,w) = f.size
new = []

for y in range(w):
for x in range(h):
rgb = f.convert('RGB')
r , g , b = rgb.getpixel((x,y))
new.append(chr(r))


g = open('Shades-out.txt', 'w')
g.write("\n".join(map(lambda x: str(x), new)))
g.close()


قسمتی از خروجی برنامه :


به نظر میرسه Base64 باشه، با دیکد کردنش به  یه تصویر png دیگه میرسیم :


مثل تصویر اول عملیات قبل رو روش انجام میدیم و به همین ترتیب به تصاویر دیگه‌ای میرسیم که در ادامه میبینیم :












این تصویر آخری رو که به برنامه بدیم، خروجیش میشه :
IHRqY3Rme2FzYzExX2MwbDByX2luYzNwdDFvbn0K
که با دیکد کردنش داریم :
tjctf{asc11_c0l0r_inc3pt1on}
که همون پرچم مورد نظرمون هست.