隐写题--暴力破解和明文攻击

题目有需要的话可以自行下载
链接:https://pan.baidu.com/s/1GYDgklr2Abl3X6HF4IKQ_g
提取码:2333

在这里插入图片描述

如图所示,我们会发现需要密码,尝试弱密码,失败了。这种压缩包隐写题需要密码的,无非是暴力破解,zip伪加密,难度不大,这里给出两种解题方法

方法一–暴力破解

暴力破解很费时间,而且不确定因素很大,当然在题目缺少hunt的情况下,暴力破解确实是个好方法。而这题的一种解法确实是暴力破解,破解后的密码是十一位。这里给出一个能够暴力破解和明文攻击的工具。

链接:https://pan.baidu.com/s/1smeaMwOap_9UYeEtTGop2w 提取码:2333
暴力破解不多做解释,这里也不做详细的介绍了。

方法二–明文攻击

这里介绍一下明文攻击

有一种破解方法叫做Known plaintext attack。市面上的密码破解软件几乎都带有这个功能。操作方法就是找到加密压缩包中的任意一个文件,用同样的压缩软件同样的压缩方式压缩成一个不加密的包,然后把这两个压缩包进行比较,这样就能把整个加密的压缩包全部还原成未加密的形式。
原理是这样的:你输入的密码,首先被转换成3个32bit的key,所以可能的key的组合是2^96,这是个天文数字,如果用暴力穷举的方式是不太可能的,除非你的密码比较短或者有个厉害的字典。压缩软件用这3个key加密所有包中的文件,这也就是说,所有文件的key是一样的,如果我们能够找到这个key,就能解开所有的文件。如果我们找到加密压缩包中的任意一个文件,这个文件和压缩包里的文件是一样的,我们把这个文件用同样的压缩软件同样的压缩方式进行无密码的压缩,得到的文件就是我们的Known plaintext。用这个无密码的压缩包和有密码的压缩包进行比较,分析两个包中相同的那个文件,抽取出两个文件的不同点,就是那3个key了,如此就能得到key。两个相同文件在压缩包中的字节数应该相差12个byte,就是那3个key了。虽然我们还是无法通过这个key还原出密码,但是我们已经可以用这个key解开所有的文件。(这没什么用)

以上是大佬总结,具体哪一篇我找找。

在这一题中,没有给我们相应的可以发现给定的压缩包中有JUS_Bangor_May2009.pdf这个文件,我立马想到了明文攻击,但是题目没有给我们JUS_Bangor_May2009.pdf,这个文件,所以我们只能自己去找个文件了(这个需要自己去找,还能找得到的,这里不提供网址),找到后压缩文件(明文文件要和加密文件的格式相同,所以这里需要压缩–这里一定要注意我们的压缩方式要相同)。如下图

在这里插入图片描述
在这里插入图片描述
然后运用工具
在这里插入图片描述

这里我没有解出来,不知到为什么,

在这里插入图片描述

在选定的档案中没有匹配的文件。如果您想要仅使用文件的一部分执行明文攻击,请修改档案,使每个档案中只包含一个文件。

No matching files in selected archives.if you’d like to run plaintext attack using only part of the file,please modify the archives so each of them will contain one file only.

原因:可能是文件的压缩方式与加密文件不同,尝试更换压缩方式。
待破解文件中要包含一个未加密的已知文件,如果加密文件中没有已知文件,只能ARCHPR暴力破解.

查了很多资料都说是压缩软件的问题,但是我用WinRAR、Bandizip、7z、360压缩等等都不行。。。但是,这里最后的提示是明文攻击是一种解法,方向没有错。

最后还是用暴力破解解决的。。。

RSA计时攻击是一种利用加密过程时间差异来破解公钥密码系统的技术。它的基本思想是通过多次加密相同的明文,并测量每次操作的时间,找出解密速度最快的那个,从而推断出较短的私钥指数。以下是实施流程的一个简化描述: 1. **准备**:选择一个固定长度的明文,如一小段随机字符串或特定数值。 2. **加密**:对选定的明文使用公钥进行多次加密,记录每次加密所需的时间。 3. **分析**:计算平均加密时间并找出其中最短的那一次,这可能是由于使用的私钥指数较小导致的。 4. **尝试猜测**:基于这个最短时间,开始尝试将可能的私钥指数代入解密算法,看是否能得到接近原始明文的结果。 5. **验证**:检查解密后的结果是否与预期相符,如果匹配,那么找到的私钥很可能就是正确的。 请注意,实际应用中会需要大量的时间和计算资源,而且在安全设置良好的环境中,这种攻击的成功率通常很低,因为现代加密库通常会对这类尝试进行防护。 下面是一个简单的C语言代码片段,用于演示RSA加密过程(非完整版,只包含加密部分,不含计时攻击): ```c #include <openssl/bn.h> #include <openssl/pem.h> #include <openssl/rsa.h> void rsa_encrypt(int *time_taken) { RSA *rsa = ... // 加载已知的RSA公钥 int plaintext = ...; // 明文数据 BIGNUM * ciphertext; BN_CTX *ctx; ctx = BN_CTX_new(); ciphertext = BN_new(); clock_t start_time = clock(); RSA_public_encrypt(sizeof(plaintext), &plaintext, ciphertext, rsa, RSA_PKCS1_OAEP_PADDING); clock_t end_time = clock(); *time_taken = (end_time - start_time) / CLOCKS_PER_SEC; // 计算加密时间 // ...后续处理 ciphertext 和 cleanup } //
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值