VishwaCTF 2024 – Happy Valentine’s Day

    DESCRIPTION

    My girlfriend and I captured our best moments of Valentine’s Day in a portable graphics network. But unfortunately I am not able to open it as I accidentally ended up encrypting it. Can you help me get my memories back?

    Author : Pushkar Deore

    FLAG FORMAT:

    VishwaCTF{}

    Attachments

    2가지 파일들이 존재한다.

    source.txt – png 이미지 파일을 암호화시키는 python3 스크립트
    enc.txt – 암호화된 png 이미지

    source.txt

    from PIL import Image
    from itertools import cycle
    
    def xor(a, b):
        return [i^j for i, j in zip(a, cycle(b))]
    
    f = open("original.png", "rb").read()
    key = [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]
    
    enc = bytearray(xor(f,key))
    
    open('enc.txt', 'wb').write(enc)

    암호화되지 않은 원본 이미지 파일에서 8바이트 시그니처 헤더값으로 XOR 암호화시키고 있었다.

    solve.py

    from PIL import Image
    from itertools import cycle
    
    def xor(a, b):
        return [i^j for i, j in zip(a, cycle(b))]
    
    enc = open("enc.txt", "rb").read()
    key = [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A]
    dec = bytearray(xor(enc,key))
    
    open('enc.txt.png', 'wb').write(dec)

    8바이트 png 시그니처 헤더값은 이미 알려져있기 때문에,
    그 값으로 다시 XOR 연산시키면 된다.

    FLAG

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다