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

相关文章

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

【经验交流】修复系统事件查看器启动不能时出现的4201错误

方法1,取得『%SystemRoot%\LogFiles』文件夹和『%SystemRoot%\System32\wbem』文件夹的权限(包括这两个文件夹的所有子文件夹的权限),简单点说,就是使你当前的帐户拥有这两个文件夹以及它们的子文件夹的绝对控制权限。这是最简单的方法,不少老外说,这样一弄,倒是解决了问题。不过对我的系统,没用; 方法2,以不带网络的安全模式启动,运行命令行,输入“ne

Python脚本:批量解压RAR文件

所需模块: os.getcwd() #获取脚本文件路径os.system() #执行系统命令 import os#source_dir = input("Please input in source_dir:")#unzip_dir = input("Please input in unzip_dir:") source_dir = os.

3.比 HTTP 更安全的 HTTPS(工作原理理解、非对称加密理解、证书理解)

所谓的协议 协议只是一种规则,你不按规则来就无法和目标方进行你的工作 协议说白了只是人定的规则,任何人都可以定协议 我们不需要太了解细节,这些制定和完善协议的人去做的,我们只需要知道协议的一个大概 HTTPS 协议 1、概述 HTTPS(Hypertext Transfer Protocol Secure)是一种安全的超文本传输协议,主要用于在客户端和服务器之间安全地传输数据

Tomcat下载压缩包解压后应有如下文件结构

1、bin:存放启动和关闭Tomcat的命令的路径。 2、conf:存放Tomcat的配置,所有的Tomcat的配置都在该路径下设置。 3、lib:存放Tomcat服务器的核心类库(JAR文件),如果需要扩展Tomcat功能,也可将第三方类库复制到该路径下。 4、logs:这是一个空路径,该路径用于保存Tomcat每次运行后产生的日志。 5、temp:保存Web应用运行过程中生成的临时文件

ja-netfilter的前世今生和非对称加密的欺骗原理

文章目录 ja-netfilter起源官网插件插件配置文件插件的综合应用更多用法 非对称加密欺骗原理非对称加密和数字证书激活过程和欺骗手段分析代码示例第一步:生成自签名证书脚本第二步:使用自签名证书对产品激活信息进行签名 样例数据样例激活码(注:用于代码演示,直接粘贴到JetBrains 家 IDE 中无法完成激活!不用试,肯定提示无效,无法激活!!)样例power.conf(配合ja-ne

Linux加密框架设计与实现

本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:原文作者是独孤九贱大佬 原文地址:http://bbs.chinaunix.net/thread-3627341-1-1.html

Android的登陆MD5加密

1:导入代码 public class MD5Util {private static final String TAG = "MD5Util";/**** MD5加码 生成32位md5码*/public static String string2MD5(String inStr) {Log.e(TAG, "string2MD5: -------------------------");Mess

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html