首页 > 其他分享 >文件修复

文件修复

时间:2023-04-24 11:48:01浏览次数:40  
标签:文件 修复 32 range 文件格式 编码方式 PNG

文件损坏原因

1、文件的编码方式出错(file -i查看文件编码)

2、文件格式出错(file -i查看文件格式)

3、文件签名有问题

 

修复文件的方式

针对文件损坏的原因采取对应的修复方案:

  编码方式出错:

    普通文本文件:文件另存为->选择编码方式

    文档文件:文件另存为->web选项->选择编码方式

    图片:图片的编码方式有文本、二进制、base64,根据需求对原来的文件进行编码/解码

  文件格式出错:重命名,修改后缀名

  文件签名出错:十六进制编辑器修改文件签名

 

1、文件签名(文件头)修复

file_repair.zip,文件地址链接:https://pan.baidu.com/s/1CSVN2OMvXF3izyAusxl3pw 密码:ok1z

解压得到名为pic的文件

查看文件类型,属于二进制文件

  

HxD打开,发现IHDR数据块

  

IHDR是PNG文件格式中的一个数据块,它是文件头数据块,包含了PNG文件中存储的图像数据的基本信息,如宽度、高度、位深度、颜色类型等。它必须作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个IHDR数据块。

因此该文件是PNG文件,添加文件头(在头部插入89504E47)如下:

  

另存为pic.png,成功还原图片

  

 

2、图片宽高修复

 上面得到的图片并不完整,高度的值应该比现在的大

  

PNG格式图片的高度值存储在IHDR数据块的9-12个字节,用四个字节表示。

快速定位高度值:把十进制的"680"转为十六进制‘0x2A8’,对应的四个字节表示为:"00 00 02 A8",HxD搜索可知

  

修改成比000002A8大的十六进制值,可以改成与高度同等大小的"00 00 04 7B"

另存为pic2.png,可以看到flag

  

 

3、CRC校验修复

每个文件都有唯一的CRC32校验码,改变文件内容,校验码也会发生变化,文件大小比较小的文本文件可碰撞还原出文件内容。

bugku:好多压缩包

共有68个压缩包。每个压缩包都有名为"data.txt"的文本文件,且文件大小为4字节。使用CRC碰撞可还原出文本文件内容。

  

#!/usr/bin/env python3

import zipfile
import binascii

def get_content(crc):
    for z in range(32, 127):
        for j in range(32, 127):
            for k in range(32, 127):
                for m in range(32, 127):
                    test_str = chr(z) + chr(j) + chr(k) + chr(m)
                    if (binascii.crc32(test_str.encode()) & 0xFFFFFFFF) == crc:     ##为什么要&0xFFFFFFFF:binascii.crc32返回的是一个有符号整数,即返回值可能是负数,这时需将其转为正数。而且可以保证计算出的CRC32是32位
                        return test_str

result = ''
for i in range(68):
    filename = 'out' + str(i) + '.zip'
    f = zipfile.ZipFile(filename, mode = 'r')
    zip_info = f.getinfo("data.txt")
    crc = zip_info.CRC
    result += get_content(crc)
    print(result)

爆破得到文本内容:

  

 

标签:文件,修复,32,range,文件格式,编码方式,PNG
From: https://www.cnblogs.com/jimmy-hwang/p/17348010.html

相关文章

  • Nginx命令(查询nginx配置文件)
    Nginx命令(查询nginx配置文件)个人博客地址:https://note.raokun.top拥抱ChatGPT,国内访问网站:https://www.playchat.topNginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发......
  • windows和Linux文件系统区别
    windows和Linux文件系统区别 一、用户操作系统单用户操作系统:指一台计算机在同一时间 只能由一个用户 使用,一个用户独自享用系统的全部硬件和软件资源WindowsXP 之前的版本都是单用户操作系统多用户操作系统:指一台计算机在同一时间可以由 多个用户 使用,多个用户......
  • hibernate.cfg.xml配置文件简介
    1.Hibernate核心配置文件,也即hibernate.cfg.xml,还可以是hibernate.properties格式。包含了数据库连接的相关信息以及映射文件的基本信息。通常情况下,该配置文件默认放在项目的src目录下,当项目发布后,该文件会在项目的WEB-INF/classes路径下。2.常用的模板<?xmlversion="......
  • docker部署gitlab CI/CD (二)终篇:部署gitlab runner和添加gitlab-ci.yml文件 终极踩坑版
    网上教程很多,但断断续续,先不说大部分都是只截取片段,让人云里雾里,不会的看不懂,懂的不需要看,根据步骤跑不起来不说,改了一堆,完全不解释为什么,也分不清是官方要求还是作者自己夹带的私货。痛定思痛,抛弃任何教程,根据报错实时改进,于2023年4月24日完成此篇。官方文档:https://docs.g......
  • Java-Day-14( 枚举 + 注解 + 自设头文件 )
    Java-Day-14枚举(enumeration,enum)若是创建春夏秋冬四季的信息,如果按传统方法创建,无法固定信息,可以随时调改,所以要用枚举,做到只读且不能改枚举一组常量的集合——属于一种特殊的类,里面只包含一组有限的特定的对象实现方式自定义类实现枚举构造器私有化......
  • scn增量备份恢复dataguard从库(出现gap后主库有添加新的数据文件)
    环境:OS:Centos7DB:19.3.0.0 1.正常同步情况下的scn主从是一致的主库查询:SQL>selectSEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE#,APPLIED,STATUSfromv$archived_logtwherename='tnsslavea';SEQUENCE#FIRST_CHANGE#NEXT_CHANGE#APPLIEDSTATUS-----------------......
  • electron-builder 打包依赖文件放入指定目录
    1.C:\Users\Liper\AppData\Local\electron-builder\Cache2.nsis-resources-3.4.1.7z3.nsis-3.0.4.1.7z4.winCodeSign-2.6.0......
  • Word在试图打开文件时遇到错误
    Word在试图打开文件时遇到错误。请尝试下列方法:检查文档或驱动器的文件权限。确保有足够的内存和磁盘空间。用文本恢复转换器打开文件。如图所示: 解决办法:1.文件安全性问题,可以打开Word或ppt,依次点击“文件→选项→信任中心→信任中心设置→受保护的视图”,取消受保护的......
  • 手动拷贝文件至nextcloud中并扫描(docker)
    出于不能在nextcloud的web页面手动上传,需要写脚本实现自动上传文件至nextcloud的目的,直接在服务器上将文件手动拷贝到nextcloud目录:dockercp/data/filesnextcloud:/var/www/html/data/账号名/files但是一般人不这么做,一般挂载到-v卷岂不更好在nextcloud目录中我们可以这么扫......
  • 36-挂起修复
    挂起修复序列检测器的设计和任意进制计数器的设计都需要检查是不是能自启动,是不是有挂起状态,如果有挂起如何进行修复挂起状态,实现自启动例11.画出状态转换真值表2.检查挂起状态......