攻防世界题目练习——Crypto密码新手+引导模式(二)(持续更新)
题目目录
- 1. 转轮机加密
- 2. easychallenge
上一篇:攻防世界题目练习——Crypto密码新手+引导模式(一)(持续更新)
1. 转轮机加密
首先了解一下轮转机加密吧。
传统密码学(三)——转轮密码机
题目内容如下:
1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <
#可以看出,上面13行应该就是13个轮子了,每行有26个字母
密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
#上面密钥应该就是13个轮子的排列顺序
密文为:NFQKSEVOQOFNP
我们把它重新按照密钥顺序排列一下:
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
13:< JZQAWSXCDERFVBGTYHNUMKILOP <
12:< LVNCMXZPQOWEIURYTASBKJDFHG <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
11:< MNBVCXZQWERTPOIUYALSKDJFHG <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
根据转轮密码机的定义,应该是第一个轮转一圈,第2个轮就会转一个字母,但是转的不到一圈的话第二个轮子也不会转,这样的周期下来,其实就和普通的密码锁随便转出来的结果是一样的我感觉。
还是有点搞不懂,但别人都是把每个轮的第一个字母转到和密码的排列一样的,然后再看哪一列是有意义的字母组合。
搞不懂,不想搞懂了,就这样记着吧:)。
脚本:
r = ["KPBELNACZDTRXMJQOYHGVSFUWI", "BDMAIZVRNSJUWFHTEQGYXPLOCK","GWTHSPYBXIZULVKMRAFDCEONJQ", "IHFRLABEUOTSGJVDKCPMNZQWXY","JZQAWSXCDERFVBGTYHNUMKILOP", "LVNCMXZPQOWEIURYTASBKJDFHG","XPLTDSRFHENYVUBMCQWAOIKZGJ", "ZWAXJGDLUBVIQHKYPNTCRMOSFE","NOZUTWDCVRJLXKISEFAPMYGHBQ", "UDNAJFBOWTGVRSCZQKELMXYIHP","RPLNDVHGFCUKTEBSXQYIZMJWAO", "MNBVCXZQWERTPOIUYALSKDJFHG","AMKGHIWPNYCJBFZDRUSLOQXVET"
]m = "NFQKSEVOQOFNP"
r2 = []
for i in range(13):index = r[i].index(m[i])#index()返回某个字符或字符串在所属字符串中第一次出现的位置r[i] = r[i][index:] + r[i][:index]
#print(r)
for i in range(26):s = ""for j in range(13):s += r[j][i]print(s.lower() + "\n")#s.lower()将所有的大写字母转成小写字母
#输出结果:
#nfqksevoqofnp
#ahgcxiusnwcbn
#ctwpcubfotuvy
#zetmdrmezgkcc
#dqhneyczuvtxj
#tgszrtqwtrezb
#rypqfawawsbqf
#xxywvsaxdcswz
#mpbxbbojczxed
#jlxygkigvqqrr
#qoiitjkdrkytu
#oczhydzljeips
#ykufhfgullzol
#hblrnhjbxmmio
#gdvlugxvkxjuq
#vmkamlpiiywyx
#sambkvlqsiaav
##fireinthehole##
##唯一一行有意义的字母##
#uzaulcdkfprst
#wvfoomsyaupka
#irdtpxrppdldm
#kncsjzfnmnnjk
#psegzphtyadfg
#bjojqqecgjvhh
#eunvaonrhfhgi
#lwjdwwymbbgmw
2. easychallenge
下载附件拿到了一个pyc文件,总记得之前在哪道题里见过,但是没找着,总之这是一个python类的文件,需要再反编译为py文件,搜到了可以在线网站解密:
python反编译 - 在线工具
这个网站提到,python文件在被import运行的时候会在同目录下编译一个pyc的文件(为了下次快速加载),这个文件可以和py文件一样使用,但无法阅读和修改。所以,再结合题目内容,我们要将它反编译为py文件再进行修改才能获得flag。
反编译后的py文件如下:
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 2.7import base64def encode1(ans):s = ''for i in ans:x = ord(i) ^ 36x = x + 25s += chr(x)return sdef encode2(ans):s = ''for i in ans:x = ord(i) + 36x = x ^ 36s += chr(x)return sdef encode3(ans):return base64.b32encode(ans)flag = ' '
print 'Please Input your flag:'
flag = raw_input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
if encode3(encode2(encode1(flag))) == final:print 'correct'
else:print 'wrong'
代码里可以看到有3个encode加密函数,这几个加密函数都挺简单的,加密过程也很简单,在原来的代码基础上把过程或者运算操作反过来就好了。
解码脚本:
import base64def decode1(ans):s = ''for i in ans:x = ord(i) - 25x = x ^ 36s += chr(x)return sdef decode2(ans):s = ''for i in ans:x = i ^ 36x = x - 36s += chr(x)return sdef decode3(ans):return base64.b32decode(ans)flag = ' '
#print 'Please Input your flag:'
#flag = raw_input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
#s1=decode3(final)
#print(s1)
print(decode1(decode2(decode3(final))))
#输出结果:
#cyberpeace{interestinghhhhh}
decode2函数本来第一步按照原来encode2函数的写法应该是x=ord(i)^36,但是这样会报错:

说是ord() expected string of length 1, but int found。于是我们单独输出decode3之后的结果看看:

其实我并不理解输出的结果是什么类型,看到 \x 感觉是十六进制,但是又出现了字母Z,报错也说是int类型。
decode2处理的就是decode3之后的内容,既然decode3之后的内容是int类型,我们在decode2处就不需要进行ord()转整型了。
相关文章:
攻防世界题目练习——Crypto密码新手+引导模式(二)(持续更新)
题目目录 1. 转轮机加密2. easychallenge 上一篇:攻防世界题目练习——Crypto密码新手引导模式(一)(持续更新) 1. 转轮机加密 首先了解一下轮转机加密吧。 传统密码学(三)——转轮密码机 题目内容如下: …...
LeetCode【1】两数之和
题目: 代码: public int[] twoSum(int[] nums, int target) {int[] result new int[2];Map<Integer, Integer> map new HashMap<>();// for (int i 0; i < nums.length; i) { // 这么写不能防重复啊!注意这里不…...
【运维笔记】VMWare 另一个程序已锁定文件的一部分,进程无法访问
情景再现 这里使用的是VMware 17 解决办法 进入设置 点击选项,全选复制里面内容 进入文件夹,删除所有包含.lck后缀的文件和文件夹 再启动虚拟机即可...
[Springboot]统一响应和异常处理配置
背景 前后端分离情况下,后端接口通常只需要返回JSON数据。 但有时候因为某些原因可能会导致得不到正确的结果。 比如 因为登录密码错误,你不能直接返回错误信息和null,这样前端很难处理。 又比如 因为后端接口爆出了异常,也不能直…...
Redis第四五六章 持久化事务主从复制
Redis ⽀持 RDB 和 AOF 两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题, 当下次重启时利⽤之前持久化的⽂件即可实现数据恢复。 目录 第四章 持久化 4.1 RDB 4.1.1 触发机制 4.1.2 流程说明 4.1.3 RDB ⽂件的处理 4.1.4 RDB 的优…...
【强烈推荐】免费的PDF工具,包括PDF拆分/分割、转WORD等功能的免费在线软件工具,救了大命,找了半天什么pdf365、福xipdf、还有哔果pdf全是打着免费名义收费,烦死了
PDF拆分 - 图文工具箱 - imgtool.net,嘎嘎好用,主要是免费 除此之外,还有其他的功能,需要的可以去看看...
SpringMVC源码分析(二)启动过程之RequestMappingHandlerMapping分析
a、http请求中的url是如何与对应Handler的即Controller对应method映射的? 在上篇中提到在SpringMVC中,初始化9大内置组件的时候其中有一个组件就是HandlerMapping,在初始化HandlerMapping的时候会加载代码中所有标注了Controller和RequestMap…...
KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(7)
接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(6) 上一回讲到了drm_internal_framebuffer_create函数中的framebuffer_check函数。讲解了该函数的参数检查部分中的第二部分,本回对于该函数余下部分进行解析。 为了便于理解,再次贴出framebuffer_ch…...
2023 年 Arm A-Profile 架构发展
随着人工智能 (AI) 的兴起和安全威胁的加剧,计算需求不断发展,作为世界设备核心的基础计算架构也必须不断发展。这就是为什么我们的工程团队向普遍存在的 Arm 架构添加新功能和技术,然后软件团队确保软件尽可能无缝地适应这些未来的功能和技术。 Arm架构是如何开发的 Arm …...
2023年09月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
C/C++编程(1~8级)全部真题・点这里 Python编程(1~6级)全部真题・点这里 第1题:红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 时间限…...
CentOS系统/root根目录扩容(扩展逻辑卷)
具体操作步骤 1、查看本机磁盘环境挂载情况 2、添加磁盘分区 3、开始扩容 4、同步到文件系统 1、查看本机磁盘环境挂载情况 [rooticon ~]# df -lh 可以看到/dev/mapper/centos-root 路径下容量为50G,我们要给这个路径下的容量扩容:[rooticon ~]# lsblk…...
苍穹外卖(三) 员工分页及技术实现细节
2. 员工分页查询 2.1 需求分析和设计 2.1.1 产品原型 2.1.2 接口设计 2.2 代码开发 2.2.1 设计DTO类 根据请求参数进行封装 2.2.2 封装PageResult 后面所有的分页查询,统一都封装为PageResult对象。 员工信息分页查询后端返回的对象类型为: Result 2.…...
二进制部署MySQL8.0
1、下载MySQL官方包 ## 下载MySQL [rootlocalhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz2、解压并移动安装包 # 解压安装包 [rootlocalhost ~]# tar xf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz# 移动 mv…...
全力以赴,火山引擎边缘云代表团出战亚运会
END 未来,火山引擎边缘云赛事阵容将继续全力以赴,通过领先、可信赖的云和智能技术,助力游戏行业呈现更加精彩的竞技赛事。...
WPF页面向后端传参
WPF页面(前端)向后端传参 1、编写一个Button,绑定后端命令,并传递参数: <ButtonWidth"100"Command"{Binding SendCommand}"CommandParameter"{Binding ElementNameSendMessage, PathTex…...
PyTorch 入门
一、说明 深度学习是机器学习的一个分支,其中编写的算法模仿人脑的功能。深度学习中最常用的库是 Tensorflow 和 PyTorch。由于有各种可用的深度学习框架,人们可能想知道何时使用 PyTorch。以下是人们更喜欢使用 Pytorch 来完成特定任务的原因。 Pytorch…...
微信自动批量添加好友的方法
在现在的营销中微信已成为一种重要的沟通方式。微信目前是没有自动批量添加好友的功能,需要运营者一个一个手动去添加,这样太过于浪费时间,并且加频繁了还容易被封号,今天给大家介绍几种手动批量加好友的方式以及怎么借助第三方软…...
[网鼎杯 2018]Comment git泄露 / 恢复 二次注入 .DS_Store bash_history文件查看
首先我们看到账号密码有提示了 我们bp爆破一下 我首先对数字爆破 因为全字符的话太多了 爆出来了哦 所以账号密码也出来了 zhangwei zhangwei666 没有什么用啊 扫一下吧 有git git泄露 那泄露看看 真有 <?php include "mysql.php"; session_start(); if(…...
生态兼容性进一步提升!白鲸开源 WhaleStudio 与火山引擎ByteHouse完成产品互认
数据作为新型生产要素,已快速融入生产、分配、流通、消费和社会服务管理等各环节,深刻改变着生产方式、生活方式和治理方式。越来越多企业也在尝试充分利用数据要素,开辟全新发展路径,进一步实现业务价值提升。 在数字化转型的大…...
iOS 内存管理和优化
对内存管理和拓展有独特的描述 iOS学习-内存管理 比较详细说明内存的关系 iOS 内存管理机制与原理 iOS 内存泄漏排查方法及原因分析 对weak的实现原理描写详细 【iOS】—— weak的基本原理 iOS copy & mutableCopy iOS 深拷贝与浅拷贝 对iOS的浅复制和深复制的深入解释…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
【java】【服务器】线程上下文丢失 是指什么
目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失? 直观示例说明 为什么上下文如此重要? 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程,代码应该如何实现 推荐方案:使用 ManagedE…...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
