二、压缩包隐写[伪加密、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

相关文章

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提

电脑提示找不到openal32.dll文件怎么办? openal32.dll丢失完美修复方法

《电脑提示找不到openal32.dll文件怎么办?openal32.dll丢失完美修复方法》openal32.dll是一种重要的系统文件,当它丢失时,会给我们的电脑带来很大的困扰,很多人都曾经遇到... 在使用电脑过程中,我们常常会遇到一些.dll文件丢失的问题,而openal32.dll的丢失是其中比较

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用

电脑提示msvcp90.dll缺少怎么办? MSVCP90.dll文件丢失的修复方法

《电脑提示msvcp90.dll缺少怎么办?MSVCP90.dll文件丢失的修复方法》今天我想和大家分享的主题是关于在使用软件时遇到的一个问题——msvcp90.dll丢失,相信很多老师在使用电脑时... 在计算机使用过程中,可能会遇到 MSVCP90.dll 丢失的问题。MSVCP90.dll 是 Mic

电脑报错cxcore100.dll丢失怎么办? 多种免费修复缺失的cxcore100.dll文件的技巧

《电脑报错cxcore100.dll丢失怎么办?多种免费修复缺失的cxcore100.dll文件的技巧》你是否也遇到过“由于找不到cxcore100.dll,无法继续执行代码,重新安装程序可能会解... 当电脑报错“cxcore100.dll未找到”时,这通常意味着系统无法找到或加载这编程个必要的动态链接库

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.