一些CTF雜項MISC解題指令碼

B1u3Buf4發表於2020-12-13

總結髮布一些簡單CTF中MISC常用的解題指令碼,基於python3。目前有二維碼解碼、mp3隱寫、畫素提取。

二維碼解碼

通過pip安裝zxing庫。

def qr_decode():
    """
    二維碼解碼

    :return:
    """
    import zxing

    reader = zxing.BarCodeReader()
    barcode = reader.decode('/home/QR_code.png')
    print(barcode.parsed)

多程式解密mp3隱寫

主要針對MP3Stego需要暴力列舉密碼的情況,題目限定密碼是1-30000的數字。

import multiprocessing
import os


# 切換到工作目錄下
os.chdir('D:/tester/MP3Stego_1_1_19/MP3Stego')


def cmdCall(num):
    """
    cmd執行MP3Stego的破解 生成對應的數字臨時檔案和對應的結果txt

    :param num:
    :return:
    """
    import subprocess
    cmd = f"Decode.exe -X -P {num} svega_stego.mp3 {num} {num}"
    subprocess.call(cmd, shell=True)


if __name__ == '__main__':
    for i in range(30000):
        pool = multiprocessing.Pool(4)
        pool.apply_async(cmdCall, [i, ])
        pool.close()

讀取圖片中的畫素

讀取圖片中的部分畫素,原題是左對角線的一些畫素值組成的字元。

def readImageValue():
    """
    讀取圖片的畫素值指令碼。
    """
    from PIL import Image

    img = Image.open("/home/out.png")
    # print(img.size)
    result = []
    for i in range(0, 42): 
        data = (img.getpixel((i, i)))  # 每個畫素點RGBA的值(r,g,b,alpha)
        # print(data)
        result.append(chr(data[2]))
    print(''.join(result))

相關文章