-
30/08/2016
-
319
-
448 bài viết
Writeup WhiteHat GrandPrix 2016 - Bánh Xèo
Sau cuộc thi WhiteHat GrandPrix 2016 đã kết thúc, mình xin chia sẻ cách giải bài Bánh Xèo - Crypto 100.
Sau khi mở file, chúng ta nhận được một file Matrix.txt với một "rừng" các con số. Trong đó có nhiều số được lặp đi lặp lại nhiều lần,
Mình thử tìm các số nào lặp đi lặp lại nhiều lần, thì vô tình thấy có vẻ tác giả đã sắp xếp các con số để tạo thành một hình gì đó .
Ta thấy được giá trị cao nhất là "0377" và thấp nhất là "0". Thử convert "0377" sang các kiểu khác thì phát hiện ra.
Dãy số 0377(8) -> 255(10) đây chính là màu đen trong bảng màu. Lúc này thì nhớ đến writeup bên IceCTF.
Nên mình đã thử theo cách đó và........ thành công.
Scan và submit flag !!
Sau khi mở file, chúng ta nhận được một file Matrix.txt với một "rừng" các con số. Trong đó có nhiều số được lặp đi lặp lại nhiều lần,
Mình thử tìm các số nào lặp đi lặp lại nhiều lần, thì vô tình thấy có vẻ tác giả đã sắp xếp các con số để tạo thành một hình gì đó .
Ta thấy được giá trị cao nhất là "0377" và thấp nhất là "0". Thử convert "0377" sang các kiểu khác thì phát hiện ra.
Dãy số 0377(8) -> 255(10) đây chính là màu đen trong bảng màu. Lúc này thì nhớ đến writeup bên IceCTF.
Nên mình đã thử theo cách đó và........ thành công.
HTML:
from PIL import Image
img = Image.new( 'RGB', (1050,1050),'white')
pixels = img.load()
k = 0
f = open("Matrix.txt","r").read().split("\n")
for i in f:
i = i.split(" ")
temp = ''
for j in range(len(i)-1):
temp += str(format(int(i[j],8),'08b')) # convert to binary
for j in range(len(temp)):
if ord(temp[j]) == ord('0'):
pixels[k,j] = (255, 255, 255) # convert to black
elif ord(temp[j]) == ord('1'):
pixels[k,j] = (0, 0, 0) # convert to white
k+=1
img.show()
img.save("result.jpg")
Scan và submit flag !!