首页 > 其他分享 >day9

day9

时间:2023-07-18 21:12:55浏览次数:47  
标签:day9 image wav decode ori import data

一、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

标签:day9,image,wav,decode,ori,import,data
From: https://www.cnblogs.com/120211P/p/17560422.html

相关文章

  • vue-day9--事件修饰符
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>Document</title><script......
  • 算法练习-day9
    栈和队列232.用栈实现队列题意:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)实现MyQueue类:voidpush(intx):将元素x推到队列的末尾intpop():从队列的开头移除并返回元素intpeek():返回队列开头的元素booleanempty():如果......
  • 小灰灰深度学习day9——多线程读取小批量数据(这里运行的时候报错了,目前还不会解决,
    在这里先把代码放上来importtorchimporttimeimportnumpyasnpimporttorchvisionfromtorch.utilsimportdatafromtorchvisionimporttransformsfromd2limporttorchasd2ld2l.use_svg_display()#利用svg显示图片importosos.environ["KMP_DUPLICATE_LIB_OK......
  • 闲话 Day9
    闲话Day3:所以,就不得不功利化一点了。而实际上呢。。。这是什么,有意思,研究一下。这是什么,好优秀,实现一下。这是什么,计数题,绿的,不会,下一个。这是什么,计数题,黄的,不会,下一个。。。。。。我终于意识到了做事凭兴趣这一点是很难改变的。所以这几天又去仔细参悟了一下分治与......
  • 【安全学习之路】Day9
    今天nss的题估计不会做了,晚点看看ciscn以前的题(萌新第一次参赛,看看强度)......
  • 代码随想录Day9|
    28.实现strStr() 在一个串中查找是否出现过另一个串,这是KMP的看家本领说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP KMP主要应用在字符串匹配上。KMP的主要思想是当......
  • MySQL学习基础篇Day9
    6.事务6.1事务简介事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。就比如:张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。这一组操......
  • Day9
      3.代码示例#include<iostream>usingnamespacestd;intmain(){inta[10]={2,3,4,5,6,7,8,9,12,18};inti;for(i=0;i<10;i++){cout<<a[i]<<"";}cout<<endl;intx,l,r,mid;cin>>......
  • 代码随想录Day9-Leetcode28. 实现 strStr(),459.重复的子字符串
    28.实现strStr()这题之前写过,而且印象深刻的是细节很多,所以这边是看完以前的代码,再写的(几乎是在背代码了hhh)甚至这样,next[0]=-1,和j开始匹配子串是没初始化成......
  • day9记录_idea上传文件接口调用
    day9_idea上传文件接口调用,如下图,调用成功注:pom文件需要增加以下代码:<dependencies><dependency><groupId>org.testng</groupId><artifactId>testng</artif......