MSB

Đề bài

Bước 1: Xác định định dạng thông tin file

1
Hình 1. Nội dung Challenge
2
Hình 2. Tải file
3
Hình 3. Xem thông tin file
4
Hình 4.1. PNG check
Hình 4.2. PNG check
5
Hình 5. Ảnh hiện thị ban đầu

Bước 2: Dùng các công cụ

Dùng stegsolve

6
Hình 6. Dùng stegsolve vẫn không ra

Dùng zsteg

7
Hình 7. Dùng zsteg vẫn không ra

Bước 3: Hướng tiếp cận khác

Script tự động:

from PIL import Image

def extract_msb_bits(image_path):
    img = Image.open(image_path)
    pixels = list(img.getdata())
    
    bitstream = ""

    for pixel in pixels:
        if isinstance(pixel, tuple):
            for channel in pixel[:3]: 
                msb = (channel & 0b10000000) >> 7
                bitstream += str(msb)
        else:
            msb = (pixel & 0b10000000) >> 7
            bitstream += str(msb)

    return bitstream

def bits_to_ascii(bitstream):
    chars = []
    for i in range(0, len(bitstream), 8):
        byte = bitstream[i:i+8]
        if len(byte) < 8:
            continue
        ascii_char = chr(int(byte, 2))
        chars.append(ascii_char)
    return ''.join(chars)

if __name__ == "__main__":
    image_path = "Ninja-and-Prince-Genji-Ukiyoe-Utagawa-Kunisada.flag.png" 
    bitstream = extract_msb_bits(image_path)
    hidden_text = bits_to_ascii(bitstream)
    print(hidden_text)

Flag

Hình 8. Kết quả Flag
picoCTF{15_y0ur_que57_qu1x071c_0r_h3r01c_3a219174}