Baby_enc-攻防世界-MISC

news/2024/12/22 13:37:52/

题目描述:

下载得到enc.py和out.txt,分别是加密算法和结果。先看enc.py:

import codecs
def enc(s, t):if t:l = list(map(ord, s))return enc(''.join(list(map(chr, [l[i]^l[i+1] for i in range(len(l)-1)]))), t-1)else:return swith open('in.txt') as f:s = enc(f.read(), 5)
with open('out.txt', 'w') as f:f.write(s)

基本上就是读取in.txt,然后将其中的每一位字符都与其后一位字符异或,如此循环5次,再写入out.txt。

如果flag在in中,那么flag格式开头必定为RCTF{,假定out中某一位是{后第一位异或5次的结果,则可以从这一位开始计算原始明文,并依次计算后续字符直到出现}为止。若过程中出现了\n或不可打印字符,说明开始位置假定有误。

然后还原计算方法,假定有一段6位长度的字符串,其前5位已知,经过5轮异或后:

0:A B C D E X

1:A^B B^C C^D D^E E^X

2:A^C B^D C^E D^X

3:A^B^C^D B^C^D^E C^D^E^X

4:A^E B^X

5:A^B^E^X

可见如果前5位已知,那么用密文中对应位置字符异或第1、2、5位即可得到明文。

接下来的步骤是,对out中的任意一位,假定其前5位是RCTF{,计算这一位的明文,然后加上这一位的明文,计算下一位的明文。若出现},停止并输出;若出\n和不可打印字符,停止,并回到最初的循环,对下一位进行假定。

写出Python代码:

out =  open('C:/Users/Administrator/Desktop/babyenc/out.txt', 'r').read()
test = list(map(ord, out))
for i in range(len(test)):lis = list(map(ord, 'RCTF{'))tmpi = ifor j in range(len(test) - i):tmp = lis[j] ^ lis[j + 1] ^ lis[j + 4] ^ test[tmpi]tmpi += 1if chr(tmp) == '}':lis.append(tmp)print(str(i) + ' results:' + ''.join(map(chr, lis)))breakelif chr(tmp) == '\n':breakelif tmp < 43:breakelse:lis.append(tmp)

运行结果中找到:

639 results:RCTF{te1l_mE_tHe_wAy_you_so1ve_thIs}

得到flag:RCTF{te1l_mE_tHe_wAy_you_so1ve_thIs}


http://www.ppmy.cn/news/1365081.html

相关文章

trie树(前缀树)

前缀树 1. 前缀树的的介绍2.前缀树的实现2.1插入功能2.2删除功能2.3查找前缀和查找单词功能2.4 哈希表版本 1. 前缀树的的介绍 在计算机科学中&#xff0c;trie&#xff0c;又称前缀树或字典树&#xff0c;是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是…

Stable Diffusion 模型分享:【Checkpoint】YesMix(动漫、2.5D)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四下载地址模型介绍 条目内容类型大模型基础模型SD 1.5来源

C语言第三十二弹---自定义类型:联合和枚举

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 目录 1、联合体 1.1、联合体类型的声明 1.2、联合体的特点 1.3、相同成员的结构体和联合体对比 1.4、联合体大小的计算 1.5、联合的⼀个练习 2、枚举类型 …

关于CSS常见选择器应用的基础教程

在网页开发中&#xff0c;CSS选择器是非常重要的一部分&#xff0c;它们用来指定你想要样式化的HTML元素。熟练掌握各种选择器的用法可以帮助你更有效地实现网页布局和设计。本文将介绍一些常见的CSS选择器&#xff0c;并演示它们的基本用法及应用场景。 一、元素选择器&#…

Android 接入指纹识别

接入指纹框架&#xff1a;https://github.com/Tencent/soter implementation com.github.Tencent.soter:soter-wrapper:2.0.91.Application中初始化 class IApplication : Application() {override fun onCreate() {super.onCreate()instance thisinitSort()}private fun in…

数仓项目6.0(二)数仓

中间的几步意义就在于&#xff0c;缓存中间处理数据样式&#xff0c;避免重复计算浪费算力 分层 ODS&#xff08;Operate Data Store&#xff09; Spark计算过程中&#xff0c;存在shuffle的操作&#xff0c;而shuffle会将计算过程一分为二&#xff0c;前一阶段不执行完&…

我的NPI项目之设备系统启动(八) -- Android14的GKI2.0开发步骤和注意事项

GKI是什么&#xff1f; Google为什么要推行GKI&#xff1f; GKI全称General Kernel Image。GKI在framework和kernel之间提供了标准接口&#xff0c;使得android OS能够轻松适配/维护/兼容不同的设备和linux kernel。 Google引入GKI的目的是将Framework和Kernel进一步的解耦。因…

IBM在闪存系统集成实时恶意软件I/O检测功能

IBM在其最新一代FlashCore Modules&#xff08;FCMs&#xff09;固件中集成了使用机器学习进行实时勒索软件和其他攻击检测的功能。这些FCMs是专用于IBM FlashSystem 5000和Storwize阵列的闪存驱动器&#xff0c;采用U.2外形尺寸及NVMe接口。现有的第三代FCMs分别提供4.8、9.6、…