题目名称:enc
题目描述:
压缩包中含两个文件:一个秘钥d.dec,一个密文flag.enc
解题过程:
Step1:这题是一个解密他题目,尝试openssl去ras解密
工具简介
在Kali Linux系统中,openssl 是一个强大的命令行工具,用于处理SSL/TLS协议。openssl pkeyutl 是 openssl 工具集中的一个命令,用于处理私钥文件。
参数解释
openssl pkeyutl:这是执行私钥操作的命令。
-decrypt:这个选项告诉 openssl 执行解密操作。
-inkey d.dec:指定用于解密的私钥文件。这里的 d.dec 是私钥文件的名称。
-in flag.enc:指定包含加密数据的文件。这里的 flag.enc 是加密数据文件的名称。
-out 1:这个参数指定了输出文件的名称。在这里,输出文件被命名为 1。
Step2:解出来后有一串乱码,所以用Mousepad打开修改编码,再次查看
Mousepad简介
Mousepad 是一个简单且轻量级的文本编辑器,它通常预装在 Kali Linux 和其他基于 Debian 的 Linux 发行版中。Mousepad 旨在提供基本的文本编辑功能,没有过多的复杂性,非常适合快速编辑或查看文本文件。
Step3:在Python中计算二进制字符串是否为8的倍数
分析
计算后得出是7的倍数,所以需要再每7位二进制数前加上0,补足8位后再转换为ASCII码
知识点补充
-
ASCII(美国标准信息交换码)是一种用于表示文本的编码系统,它为每个字符(包括字母、数字、标点符号等)分配了一个唯一的数字代码。ASCII 码表中,每个字符对应一个7位的二进制数(实际上,ASCII 码表只用到了前128个位置,所以每个字符只需要7位,但为了与后来的扩展ASCII兼容,通常使用8位表示,即一个字节)。
-
二进制是一种数制系统,它只使用两个数字:0和1。在计算机中,所有的数据,包括文本、图像、音频等,最终都会被转换成二进制形式,因为计算机的基本存储和处理单元是二进制位(bit)。
-
ASCII和二进制的关系在于,ASCII 码表中的每个字符都是用二进制数来表示的。例如,ASCII 码表中的大写字母 ‘A’ 对应的二进制数是 01000001。这个二进制数可以被计算机直接读取和处理。
Step4:编写一个脚本,目的是补足8位二进制,每7位前面补足0
# 补足8位二进制
s = "11001101101100110000111001111111011011001001100111000000010001101101001100100111010010001011011001100011011100101110100100001010001111110011110011101000011111101"
result = [chr(int("0" + s[i:i+7],2)) for i in range(0, len(s), 7)]
print(result)
# 将数组转换为字符串
s=['f', 'l', 'a', 'g', '{', '2', '3', '@', '#', '4', 'd', 't', 'E', 'Y', 'F', 'r', 't', 'B', 'G', 's', 'g', '!', '}']
>>> r=''.join(s)
>>> print(r)
相关资源
链接:https://pan.baidu.com/s/1FHvPaeMjMMWfRwf0vlefUA
提取码:200y