当前位置: 首页 > news >正文

攻防世界题目练习——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 上一篇&#xff1a;攻防世界题目练习——Crypto密码新手引导模式&#xff08;一&#xff09;&#xff08;持续更新&#xff09; 1. 转轮机加密 首先了解一下轮转机加密吧。 传统密码学(三)——转轮密码机 题目内容如下&#xff1a; …...

LeetCode【1】两数之和

题目&#xff1a; 代码&#xff1a; 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) { // 这么写不能防重复啊&#xff01;注意这里不…...

【运维笔记】VMWare 另一个程序已锁定文件的一部分,进程无法访问

情景再现 这里使用的是VMware 17 解决办法 进入设置 点击选项&#xff0c;全选复制里面内容 进入文件夹&#xff0c;删除所有包含.lck后缀的文件和文件夹 再启动虚拟机即可...

[Springboot]统一响应和异常处理配置

背景 前后端分离情况下&#xff0c;后端接口通常只需要返回JSON数据。 但有时候因为某些原因可能会导致得不到正确的结果。 比如 因为登录密码错误&#xff0c;你不能直接返回错误信息和null&#xff0c;这样前端很难处理。 又比如 因为后端接口爆出了异常&#xff0c;也不能直…...

Redis第四五六章 持久化事务主从复制

Redis ⽀持 RDB 和 AOF 两种持久化机制&#xff0c;持久化功能有效地避免因进程退出造成数据丢失问题&#xff0c; 当下次重启时利⽤之前持久化的⽂件即可实现数据恢复。 目录 第四章 持久化 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&#xff0c;嘎嘎好用&#xff0c;主要是免费 除此之外&#xff0c;还有其他的功能&#xff0c;需要的可以去看看...

SpringMVC源码分析(二)启动过程之RequestMappingHandlerMapping分析

a、http请求中的url是如何与对应Handler的即Controller对应method映射的&#xff1f; 在上篇中提到在SpringMVC中&#xff0c;初始化9大内置组件的时候其中有一个组件就是HandlerMapping&#xff0c;在初始化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&#xff0c;我们要给这个路径下的容量扩容&#xff1a;[rooticon ~]# lsblk…...

苍穹外卖(三) 员工分页及技术实现细节

2. 员工分页查询 2.1 需求分析和设计 2.1.1 产品原型 2.1.2 接口设计 2.2 代码开发 2.2.1 设计DTO类 根据请求参数进行封装 2.2.2 封装PageResult 后面所有的分页查询&#xff0c;统一都封装为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 未来&#xff0c;火山引擎边缘云赛事阵容将继续全力以赴&#xff0c;通过领先、可信赖的云和智能技术&#xff0c;助力游戏行业呈现更加精彩的竞技赛事。...

WPF页面向后端传参

WPF页面&#xff08;前端&#xff09;向后端传参 1、编写一个Button&#xff0c;绑定后端命令&#xff0c;并传递参数&#xff1a; <ButtonWidth"100"Command"{Binding SendCommand}"CommandParameter"{Binding ElementNameSendMessage, PathTex…...

PyTorch 入门

一、说明 深度学习是机器学习的一个分支&#xff0c;其中编写的算法模仿人脑的功能。深度学习中最常用的库是 Tensorflow 和 PyTorch。由于有各种可用的深度学习框架&#xff0c;人们可能想知道何时使用 PyTorch。以下是人们更喜欢使用 Pytorch 来完成特定任务的原因。 Pytorch…...

微信自动批量添加好友的方法

在现在的营销中微信已成为一种重要的沟通方式。微信目前是没有自动批量添加好友的功能&#xff0c;需要运营者一个一个手动去添加&#xff0c;这样太过于浪费时间&#xff0c;并且加频繁了还容易被封号&#xff0c;今天给大家介绍几种手动批量加好友的方式以及怎么借助第三方软…...

[网鼎杯 2018]Comment git泄露 / 恢复 二次注入 .DS_Store bash_history文件查看

首先我们看到账号密码有提示了 我们bp爆破一下 我首先对数字爆破 因为全字符的话太多了 爆出来了哦 所以账号密码也出来了 zhangwei zhangwei666 没有什么用啊 扫一下吧 有git git泄露 那泄露看看 真有 <?php include "mysql.php"; session_start(); if(…...

生态兼容性进一步提升!白鲸开源 WhaleStudio 与火山引擎ByteHouse完成产品互认

数据作为新型生产要素&#xff0c;已快速融入生产、分配、流通、消费和社会服务管理等各环节&#xff0c;深刻改变着生产方式、生活方式和治理方式。越来越多企业也在尝试充分利用数据要素&#xff0c;开辟全新发展路径&#xff0c;进一步实现业务价值提升。 在数字化转型的大…...

iOS 内存管理和优化

对内存管理和拓展有独特的描述 iOS学习-内存管理 比较详细说明内存的关系 iOS 内存管理机制与原理 iOS 内存泄漏排查方法及原因分析 对weak的实现原理描写详细 【iOS】—— weak的基本原理 iOS copy & mutableCopy iOS 深拷贝与浅拷贝 对iOS的浅复制和深复制的深入解释…...

常见工具指令【Vim | GIT | ZIP | UNZIP | IDEA】

VIM 快捷键说明Ctrl U (up)向上翻动半页Ctrl B (back)向上翻动一页Ctrl D (down)向下翻页半页Ctrl F (forward)向下翻动一页 GIT 指令解释git init 使用指定目录作为Git仓库git add filename向资源库添加文件filenamegit rm file从资源库中删除文件git branch 分支名称创…...

中国人民大学与加拿大女王大学金融硕士——顺势而为,掌握人生的方向盘

在这个快速发展的时代&#xff0c;每个人在不断面临全新挑战的同时&#xff0c; 也在时刻接收着各种机会。有人抓住时代红利&#xff0c;实现更新迭代&#xff1b;有人却只能作为旁观者&#xff0c;眼看时代发展&#xff0c;而自己被逐渐淘汰。时代从不会抛下任何一个人&#x…...

Apache Ranger:(二)对Hive集成简单使用

1.Ranger Hive-plugin安装 进入 Ranger 编译生成的目录下 找到 ranger-2.0.0-hive-plugin.tar.gz 进行解压 tar -zxvf ranger-2.0.0-hive-plugin.tar.gz -C /opt/module/ 2.修改配置文件 vim install.properties #策略管理器的url地址 POLICY_MGR_URLhttp://[ip]:6080#组件…...

【angular】实现简单的angular国际化(i18n)

文章目录 目标过程运行在TS中国际化参考 目标 实现简单的angular国际化。本博客实现中文版和法语版。 将Hello i18n!变为中文版&#xff1a;你好 i18n!或法语版:Bonjour l’i18n !。 过程 创建一个项目&#xff1a; ng new i18nDemo在集成终端中打开。 添加本地化包&#…...

Redis之主从复制,哨兵模式,集群

Redis之主从复制&#xff0c;哨兵模式&#xff0c;集群 1、主从复制1.1主从复制概述1.2Redis主从复制作用1.3Redis主从复制流程1.4部署Redis 主从复制 2、哨兵模式2.1哨兵模式原理2.2哨兵模式的作用2.3哨兵模式的结构2.4故障转移机制2.5搭建Redis 哨兵模式 3、Redis集群模式3.1…...

掌动智能浅析Web自动化测试的重要性

在现代Web开发中&#xff0c;确保Web应用程序的质量和稳定性至关重要。Web自动化测试工具成为了开发团队的关键资源&#xff0c;帮助他们自动化测试流程、减少手动劳动&#xff0c;提高测试覆盖率和效率。本文将介绍Web自动化测试的重要性是什么! Web自动化测试的重要性&#x…...

JTS: 12 Descriptions 图形覆盖

这里写目录标题 版本代码Intersection 交集Union 并集Difference 差集SymDifference 补集 版本 org.locationtech.jts:jts-core:1.19.0 链接: github 代码 /*** 图形覆盖操作* author LiHan* 2023年10月12日 19:34:09*/ public class GeometryDescriptions {private final Ge…...

业务安全五重价值:防攻击、保稳定、助增收、促合规、提升满意度

目录 防范各类威胁攻击 保障业务的连续性和稳定性 保障业务的合规性 提升企业营收和发展 提升企业满意度和品牌知名度 2023年暑假被“票贩子”和“黄牛”攻陷。他们利用各种手段抢先预约名额&#xff0c;然后加价出售给游客&#xff0c;导致了门票供不应求的局面&#xff…...

shiro反序列化和log4j

文章目录 安装环境shiro漏洞验证log4j 安装环境 进入vulhb目录下的weblogic&#xff0c;复现CVE-2018-2894漏洞&#xff1a; cd /vulhub/shiro/CVE-2010-3863查看docker-compose的配置文件&#xff1a; cat docker-compose.yml如图&#xff0c;里面有一个镜像文件的信息和服…...

『Linux项目自动化构建工具』make/Makefile

前言 如题可知,make/Makefile为在Linux下的项目自动化构建工具; 在上一篇文章『Linux - gcc / g』c程序翻译过程 中讲解了C/C程序的翻译过程; 而make/Makefile即可以看成,是Makefile在使用gcc/g使在Linux环境下能够更好的高效率的进行项目构建; 在此之前首先要对make/Makefile…...