一、Nyan_Cat
1.Audacity打开,发现一个单声轨和一个立体声轨,立体声轨的其中的第一部分明显不同,先分离
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进行明文爆破
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
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时,得到一张二维码
8.扫码得到flag