BuuCTF crypto-classic0

一、题目概述

        crypto-classic0题目给出了一个压缩包,其中包含cipher文件、hint.txt文件和howtoencrypt.zip加密压缩包。cipher文件包含一串看似随机的字符,hint.txt则提供了密码可能与小Z童鞋的生日有关的线索。howtoencrypt.zip是一个加密的压缩包,需要密码才能打开。

933a164996b347878690e433619accaf.png33bc2c707bc34090b6b7a890a7a715ae.png

二、解题过程

        1.密码爆破

        根据hint.txt的提示,我们猜测压缩包的密码可能是小Z童鞋的生日。由于生日一般为8位数字,我们可以使用压缩包爆破工具来尝试可能的密码组合。经过尝试,我们成功爆破出密码为“19990306”,从而打开了howtoencrypt.zip压缩包。

        2.分析加密代码

        在howtoencrypt.zip中,我们找到了classic0.c文件。该文件是一个C语言程序,其中包含了一个加密过程。通过分析代码,我们可以了解到加密的具体过程:

#include<stdio.h>

char flag[25] = *** //定义一个长度为25的字符数组flag,用于存储加密前的明文。

int main()// 在main函数中,对flag数组中的每个字符进行两次操作:首先减去3,然后与0x7进行异或运算。  

{
	int i;
	for(i=0;i<25;i++)
	{
		flag[i] -= 3;
		flag[i] ^= 0x7;
		printf("%c",flag[i]);
	}
	return 0; 
}


3. 解密过程

为了还原加密前的明文,我们需要编写一个与加密过程相反的解密程序。首先定义一个与cipher文件中内容相同的字符数组cipher,然后对cipher数组中的每个字符进行与加密过程相反的操作:首先与0x7进行异或运算,然后加上3。

按照上述步骤编写解密程序后,我们成功还原了加密前的明文,得到了flag的值:flag{my_naive_encrytion}。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值