day9

发布时间 2023-07-18 21:01:57作者: CPYQY

一、Nyan_Cat

1.Audacity打开,发现一个单声轨和一个立体声轨,立体声轨的其中的第一部分明显不同,先分离

image

2.简单看一下幅度值,发现后半部分呈规律性表现,高低区分较大,导出单声道,使用脚本打印一下幅度值

点击查看代码
import wavio

wav_data = wavio.read('./Nyan_Cat1.wav')
sound_data = wav_data.data
with open("./1.txt","w") as f:
    for i in sound_data:
        for j in i:
            f.write(str(j))
            f.write(" ")

3.前面的音频没发现有什么用,看一下幅度值变化高低稳定且较大的部分,发现可以使用10000作为界限分值,将大于10000置为0,小于-10000置为1,脚本跑一下

点击查看代码
import wavio

wav_data = wavio.read('./Nyan_Cat1.wav')
sound_data = wav_data.data
with open("./1.txt","w") as f:
    for i in sound_data:
        for j in i:
            if j > 10000:
                f.write("0")
            elif j < -10000:
                f.write("1")
				

4.010转二进制发现是zip包,需要密码,发现加密算法是zipcrypto,并且没有密码提示或者文件,直接使用bkcrack进行明文爆破

image

5.指令如下:

echo -n 89504E470D0A1A0A0000000D49484452  | xxd  -r -ps > png1
./bkcrack -C '/home/cpyq/Desktop/111.zip'   -c encode.png -p png1 -o 0
./bkcrack -C '/home/cpyq/Desktop/111.zip' -c encode.png -k 13555c9a b811216e 72b7e95e -d encode.png

image

6.得到解码后的encode.png,像是猫脸变换,但是没有找到key,看了佬的wp,直接用脚本进行爆破

点击查看代码
import matplotlib.pyplot as plt
import cv2
import numpy as np
from PIL import Image

it = cv2.imread('encode.png')


def arnold_decode(image, shuffle_times, a, b):
    # 1:创建新图像
    decode_image = np.zeros(shape=image.shape)
    # 2:计算N
    h, w = image.shape[0], image.shape[1]
    N = h  # 或N=w

    # 3:遍历像素坐标变换
    for time in range(shuffle_times):
        for ori_x in range(h):
            for ori_y in range(w):
                # 按照公式坐标变换
                new_x = ((a * b + 1) * ori_x + (-b) * ori_y) % N
                new_y = ((-a) * ori_x + ori_y) % N
                decode_image[new_x, new_y, :] = image[ori_x, ori_y, :]
    cv2.imwrite(f'{a}_{b}.png', decode_image, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
    return decode_image

def main():
    for a in range(101):
        for b in range(101):
            arnold_decode(it, 1, a, b)

main()

7.在a=31,b=13时,得到一张二维码

image

8.扫码得到flag

image