二、压缩包隐写[伪加密、CRC32碰撞、已知明文攻击、RAR压缩包修复]

2024-03-30 03:20

本文主要是介绍二、压缩包隐写[伪加密、CRC32碰撞、已知明文攻击、RAR压缩包修复],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、压缩包加密

1.压缩包伪加密

原理:ZIP压缩包的头固定为05 4B 03 04,其中还有一个叫压缩源文件目录区的固定头为50 4B 01 02,其中对于正常压缩而言,压缩包的头05 4B 03 04 XX XX 00 00,压缩源文件目录区的头为50 4B 01 02 XX XX XX XX 00 00;加密压缩的为缩包的头05 4B 03 04 XX XX 01 00,压缩源文件目录区的固定头为50 4B 01 02 XX XX XX XX 01 00,它们关键就在于里面最后四位0000为正常压缩;0100为加密压缩

伪加密:压缩包的头:05 4B 03 04 XX XX 00 00;压缩源文件目录区的头:50 4B 01 02 XX XX XX XX 09 00,这时就能发现,压缩包头和压缩源文件目录区的头最后四位不一致,此时就产生了伪加密

解决伪加密的办法:

  1. 使用010editor去手动修改
  2. 使用360压缩,直接无视伪加密

在这里插入图片描述

2.压缩包暴力破解

工具:ARCHPR
下载地址:https://wwz.lanzoul.com/iduDK0c666ef(密码:52pj)

二、CRC32碰撞

工具:WinRAR(下载地址:https://www.win-rar.com/fileadmin/winrar-versions/sc/sc20231013/rrlb/winrar-x64-624sc.exe;授权文件:https://developer.aliyun.com/article/297800)

解释:当压缩包被加密,密码又很难破解出来时;同时被加密的文本文档大小很小(CTF里面一般4KB),可以采取CRC32碰撞,碰撞成功后,该文件的原文将会被破解出来

代码:

# 原理上采用暴力破解,下面的例子只适用于CRC是4比特的情况,如果为6比特写6个for循环
# 参数crc 为压缩包里面文件CRC32的值
import string
import binasciidic = string.ascii_letters + string.digits + '+/='
crc = 0x0BB21560for a in dic:for b in dic:for c in dic:for d in dic:s = a+b+c+dencoded_s = s.encode('utf-8')  # 编码后的 sif binascii.crc32(encoded_s) & 0xffffffff == crc:print(s)exit(0)

读取文件获取CRC32值

import string
import binascii
import zipfiledic = string.ascii_letters + string.digits + '+/='def crash_CRC32(crc):for a in dic:for b in dic:for c in dic:for d in dic:s = a + b + c + dencoded_s = s.encode('utf-8')  # 编码后的 sif binascii.crc32(encoded_s) & 0xffffffff == crc:return sreturn 0def get_CRC32(zip_file_name):# 打开 zip 文件with zipfile.ZipFile(zip_file_name, 'r') as zip:# 使用字典来存储文件名与其 CRC32 值的映射crc_values = {}# 遍历 zip 文件中的每一个条目for zip_info in zip.infolist():# 将文件名和对应的 CRC32 值存入字典crc_values[zip_info.filename] = zip_info.CRCreturn crc_valuesbase = 'D:\工作\安全\Misc\zip'
str = ''
for i in range(0, 68):# 此处有68个文件,文件名为out0.zip-out67.zipzip_file_name = base + f'\\out{i}.zip'crc_list = get_CRC32(zip_file_name)# 遍历每一个压缩文件里面的每一个文件的CRCfor j in crc_list.items():# 将获取的CRC32放入函数进行破解,然后将值进行拼接crc = j[1]crc = crash_CRC32(crc)if crc == 0:print('发生未知错误')exit(0)str += crcprint(str)
print(str)

三、压缩包已知明文攻击

解释:压缩包里面包含文件A和文件B,但此时,已经得到了文件A,我们就可以通过已知明文攻击去获取文件B

示例:

  1. 获取压缩包,里面包含A和B;同时获取A(未被加密)

在这里插入图片描述
2. 先压缩已知明文文件logo.png,压缩完后查看里面CRC32与flag.zip的logo.png的CRC32数值是否相同
在这里插入图片描述
3. 使用ARCHPR工具的明文攻击

在这里插入图片描述

注意点:无需等待得出密钥(太慢),即使有时没有恢复密码(长时间没有解出来就停止),也可以使用明文攻击,最后点保存还是能得到压缩包里内容的。

四、RAR压缩包修复

解释:缺少RAR4标头时,在010Editor插入52 61 72 21 1A 07 00;缺少RAR5标头时,在010Editor插入52 61 72 21 1A 07 01 00

补充:

  1. RAR4中的HEAD_TYPE

    HEAD_TYPE = 0x72 - MARK_HEAD(标记块)
    HEAD_TYPE = 0x73 - MAIN_HEAD(压缩文件头)
    HEAD_TYPE = 0x74 - FILE_HEAD(文件头)
    HEAD_TYPE = 0x75 - COMM_HEAD(旧风格的注释头)
    HEAD_TYPE = 0x76 - AV_HEAD(旧风格的授权信息块/用户身份信息块)
    HEAD_TYPE = 0x77 - SUB_HEAD(旧风格的子块)
    HEAD_TYPE = 0x78 - PROTECT_HEAD(旧风格的恢复记录)
    HEAD_TYPE = 0x79 - SIGN_HEAD(旧风格的授权信息块/用户身份信息块)
    HEAD_TYPE = 0x7A - NEWSUB_HEAD(子块)
    HEAD_TYPE = 0x7B - ENDARC_HEAD(结束块)
    
  2. RAR5中的HEAD_TYPE

      0x01 - 压缩文档头。0x02 - 文件头。0x03 - 服务头。0x04 - 压缩文档加密头。0x05 - 结尾块。
    

文件头修复:对于某文件的文件头损坏,很可能就是HEAD_TYPE被修改。对RAR4而言,里面如果压缩了多个文件,每个文件当中会间隔HEAD_CRC(2位) HEAD_TYPE;对RAR5而言,里面如果压缩了多个文件,每个文件当中会间隔HEAD_CRC(4位) HEAD_SIZE HEAD_TYPE,正常情况下HEAD_TYPE取值为0x74(RAR4)或0x02(RAR5)此时如果想修复文件头损坏就将HEAD_TYPE修改成正确的值即可

在这里插入图片描述

这篇关于二、压缩包隐写[伪加密、CRC32碰撞、已知明文攻击、RAR压缩包修复]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/860352

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

电脑提示Winmm.dll缺失怎么办? Winmm.dll文件丢失的多种修复技巧

《电脑提示Winmm.dll缺失怎么办?Winmm.dll文件丢失的多种修复技巧》有时电脑会出现无法启动程序,因为计算机中丢失winmm.dll的情况,其实,winmm.dll丢失是一个比较常见的问... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

Java 压缩包解压实现代码

《Java压缩包解压实现代码》Java标准库(JavaSE)提供了对ZIP格式的原生支持,通过java.util.zip包中的类来实现压缩和解压功能,本文将重点介绍如何使用Java来解压ZIP或RA... 目录一、解压压缩包1.zip解压代码实现:2.rar解压代码实现:3.调用解压方法:二、注意事项三、总

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL