ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

七月是十八号日寄

2022-07-18 21:02:48  阅读:170  来源: 互联网

标签:bytearray 七月 十八号 plt import x00 data png


复现了几道古早题

[鹏城杯]Misc_water

两个文件,一个加密的压缩包和一张png

                              

自然解压密码应该从png入手

010打开发现后面跟了一png,foremost分离

题目叫misc_water,那肯定和水印有关,可这两张熊猫头的分辨率不一样

陷入盲区,遂上网WP

010查看原始图片,在两张png数据的中间有一段逆序的jpg,将它提取再逆序

with open('C:\\Users\\VucLe\\Desktop\\Misc_water\\1', 'rb') as f:
    with open('C:\\Users\\VucLe\\Desktop\\Misc_water\\flag.jpg', 'wb') as g:
        g.write(f.read()[::-1])

傅里叶盲水印

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('C:\\Users\\VucLe\\Desktop\\output_Mon_Jul_18_14_55_57_2022\\png/flag.jpg', 0) #直接读为灰度图像,不过此题已经是灰度图片了
f = np.fft.fft2(img)            #做频率变换
fshift = np.fft.fftshift(f)     #转移像素做幅度谱
s1 = np.log(np.abs(fshift))#取绝对值:将复数变化成实数取对数的目的为了将数据变化到0-255
plt.subplot(121)
plt.imshow(img, 'gray')
plt.title('original')
plt.subplot(122)
plt.imshow(s1,'gray')
plt.title('center')
plt.show()

压缩包密码:ZC4#QaWbW

解压得到jpg

010看了下是png的头,改后缀

再010打开报错,应该是长宽被修改过

修复CRC

#coding=utf-8
import zlib
import struct
#读文件
file = 'C:\\Users\\VucLe\\Desktop\\Misc_water\\show/1.png'  #注意,1.png图片要和脚本在同一个文件夹下哦~
fr = open(file,'rb').read()
data = bytearray(fr[12:29])
crc32key = eval(str(fr[29:33]).replace('\\x','').replace("b'",'0x').replace("'",''))
#crc32key = 0xCBD6DF8A #补上0x,copy hex value
#data = bytearray(b'\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xF1\x08\x06\x00\x00\x00')  #hex下copy grep hex
n = 4095 #理论上0xffffffff,但考虑到屏幕实际,0x0fff就差不多了
for w in range(n):#高和宽一起爆破
    width = bytearray(struct.pack('>i', w))#q为8字节,i为4字节,h为2字节
    for h in range(n):
        height = bytearray(struct.pack('>i', h))
        for x in range(4):
            data[x+4] = width[x]
            data[x+8] = height[x]
            #print(data)
        crc32result = zlib.crc32(data)
        if crc32result == crc32key:
            print(width,height)
            #写文件
            newpic = bytearray(fr)
            for x in range(4):
                newpic[x+16] = width[x]
                newpic[x+20] = height[x]
            fw = open(file,'wb')#保存副本
            fw.write(newpic)
            fw.close

 

标签:bytearray,七月,十八号,plt,import,x00,data,png
来源: https://www.cnblogs.com/vuclw/p/16491576.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有