攻防世界题目练习——Crypto密码难度1(一)

news2024/11/26 22:39:56

题目目录

    • 1. base64
    • 2. Caesar
    • 3. Morse
    • 4. Broadcast
    • 5. hidden key
    • 6. [简单] 初识RSA
    • 7. 简单的LFSR
    • 8. baigeiRSA

1. base64

下载文件,打开是一个txt文件,解密工具base64解码,如图:
在这里插入图片描述

2. Caesar

打开文件看到字符如下:

oknqdbqmoq{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz}

联想到上一题拿到的flag的格式,可以看出是比较规律的一串字符。
上一题flag的格式为cyberpeace{xx_xx_xx_xx},因此猜测本题{}前面的内容为cyberpeace。
题目名字Caesar就是恺撒密码,也就是把每个字母移动相同的位数变成另一个字母,观察比较cyberpeace和oknqdbqmoq也看得出,字母相同的位置变化后的字母也相同,于是数一下移动的位数。

oknqdbqmoq
↓
cyberpeace
c->o后移12位
y->k后移12位
因此要解密就将密文每个字母向前移12位,可以参照前面cyberpeace对应的字母:
{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz}
kag->you
tmhq->have
xqmdzqp->learned
omqemd->caesar
qzodkbfuaz->encryption

得到flag:
cyberpeace{you_have_learned_caesar_encryption}

3. Morse

看到标题名字,大概是摩斯密码,打开文件内容如下:

11 111 010 000 0 1010 111 100 0 00 000 000 111 00 10 1 0 010 0 000 1 00 10 110

摩斯密码在线解密在线摩斯密码翻译器

解密结果:
MORSECODEISSOINTERESTING
转换为小写flag:
cyberpeace{morsecodeissointeresting}

4. Broadcast

题目提示说留下了明文。
解压下载的文件,打开task.py,直接看到flag:
在这里插入图片描述
不懂,这和密码有啥关系

5. hidden key

打开文件,代码如下:

from Crypto.Util.number import *
from secret import flag
import  random
import hashlib
import os

key=os.urandom(8)
#os.urandom(n)函数用来获取一个指定长度的bytes对象
#返回一个长为n个bytes的string
#本代码中返回一个8个字节的字符串

def rand(rng):
    return rng - random.randrange(rng)
#random.randrange([start,] stop [,step]),
#start -- 指定范围内的开始值,包含在范围内。如果 start 参数未传入参数,则采用默认值 0(零)。
#stop -- 指定范围内的结束值,不包含在范围内。
#step -- 指定递增基数。该参数是可选的,如果参数中没有传入宽度参数,则取默认值1
#也就是说,只有一个参数的话,就是stop值,本代码中就是在[0,rng)之间产生随机的整数值

m=[]
random.seed(int(hashlib.md5(key).hexdigest(), 16))
#设置随机种子后,是每次运行test.py文件的输出结果都一样,而不是每次调用随机函数生成的结果一样
#想要每次运行随机函数生成的结果都一样,可以在每个随机函数前都设置一模一样的随机种子

for i in range(len(flag)):
    rand(256)
    xor=flag[i]^rand(256)
    # 把flag的每一个字符和rand出来的值做异或
    m.append(xor)
print(m)
print(bytes_to_long(key)>>12)

# [140, 96, 112, 178, 38, 180, 158, 240, 179, 202, 251, 138, 188, 185, 23, 67, 163, 22, 150, 18, 143, 212, 93, 87, 209, 139, 92, 252, 55, 137, 6, 231, 105, 12, 65, 59, 223, 25, 179, 101, 19, 215]
# 2669175714787937

参考博客:
Python——os.urandom生成随机加密字符
Python random randrange()用法及代码示例
【python】random.seed()用法详解
Crypto中常用的数据类型互转方式

知道了输出结果,反过来尝试写解码的脚本:

# coding=gbk
# vscode里把编码改成了gbk,但是因为默认编码环境是utf-8,所以要在第一行加上coding=
from Crypto.Util.number import *
# from secret import flag
import random
import hashlib

key1 = 2669175714787937 << 12
# 由于低12位未知,所以需要低12位遍历每一个值循环爆破

m = [
    140, 96, 112, 178, 38, 180, 158, 240, 179, 202, 251, 138, 188, 185, 23, 67,
    163, 22, 150, 18, 143, 212, 93, 87, 209, 139, 92, 252, 55, 137, 6, 231,
    105, 12, 65, 59, 223, 25, 179, 101, 19, 215
]


def rand(rng):
    return rng - random.randrange(rng)


for k in range(1 << 12):
    key = long_to_bytes(key1 + k)
    random.seed(int(hashlib.md5(key).hexdigest(), 16))
    flag = []
    for i in range(len(m)):
        rand(256)
        xor = m[i] ^ rand(256)
        flag.append(xor)
    if all(ch < 256 for ch in flag):
        flag = bytes(flag)
        if (flag.startswith(b'flag')):
            print("key=", bytes_to_long(key))
            print(flag)

运行结果:
key= 10932943727771392887
b'flag{e319a58c-4dd6-4e6a-a3fb-f4b0d339faba}'

Non-UTF-8报错解决方法、append函数、bytes函数、bytes串参考博客如下:
Python出现报错:SyntaxError: Non-UTF-8 code starting with ‘\xa1‘ in file…
Python 列表 append()函数使用详解
python内置函数bytes()用法详解
Python bytes 字节串类型及用法

————待更新————————————————————

6. [简单] 初识RSA

7. 简单的LFSR

8. baigeiRSA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/993018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

道一云·七巧对接打通金蝶云星空查询七巧表单接口与供应商新增接口

道一云七巧对接打通金蝶云星空查询七巧表单接口与供应商新增接口 数据源平台:道一云七巧 道一云七巧拥有强大的自定义表单设计工具&#xff0c;并配置工作流程&#xff0c;通过流程智能流转&#xff0c;打通各个业务场景中的审批、协作环节&#xff0c;包含数据采集单、任务单…

strlen函数使用与模拟实现【进阶版】

strlen函数使用与模拟实现 1.strlen函数介绍 资源来源于cplusplus网站 翻译过来的大致意思就是&#xff1a; 获取字符串长度 2.strlen的使用 int main() { //strlen - 求字符串长度的 //字符串的结束标志是\0 //strlen统计的是\0之前出现的字符的个数 //基本功能 char arr[]…

【送书活动】全网超50万粉丝的Linux大咖良许,出书了!

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

母婴品牌的小红书投放策略有哪些,投放总结

最近有很多人想知道达人投放的一些相关知识&#xff0c;我们立马捕捉到了大家对这一干货内容的感兴趣程度&#xff0c;今天就来为大家分享下&#xff0c;母婴品牌的小红书投放策略有哪些&#xff0c;投放总结&#xff01; 什么是达人投放? 达人投放是一种常用于社交媒体营销的…

异步FIFO项目 UVM验证

文章目录 前言一、异步FIFO仿真过程1、异步FIFO设计2、UVM验证 二、脚本文件编写三、编译错误 前言 2022.11.15 记录自己开始使用UVM仿真异步FIFO项目 一、异步FIFO仿真过程 1、异步FIFO设计 首先对编写的异步FIFO设计代码进行验证&#xff0c;写了一个test.v文件 &#xff…

docker概念、安装与卸载

第一章 docker概念 Docker 是一个开源的应用容器引擎。 Docker 诞生于2013年初&#xff0c;基于 Go 语言实现&#xff0c;dotCloud 公司出品&#xff0c;后改名为 Docker Inc。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发…

Python的命名空间和作用域

所谓作用域就是指变量名/对象名在多大范围内是可见的/有效的&#xff0c;一个变量名既不能作用域太大&#xff0c;这样会引发广泛的命名冲突&#xff0c;也不能太小&#xff0c;这样很难实现变量的共享&#xff0c;所以一般都有多层次的作用域。一个层次的作用域&#xff0c;在…

WebGL 同时使用多幅纹理

目录 前言 ​编辑 示例代码 颜色矢量的分量乘法来计算两个纹素最终的片元颜色 注册事件响应函数&#xff1a;loadTexture&#xff08;&#xff09;&#xff0c;最后一个参数是纹理单元编号。 请求浏览器加载图像&#xff1a; 配置纹理&#xff1a;loadTexture&#xff0…

linux 安装Docker

# 1、yum 包更新到最新 yum update # 2、安装需要的软件包&#xff0c; yum-util 提供yum-config-manager功能&#xff0c;另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3、 设置yum源 yum-config-manager --add-repo h…

基于SSM的汽车养护管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

谈论浏览器内核

浏览器内核是指浏览器使用的渲染引擎&#xff0c;用于解析并显示网页的内容。主要有以下几种浏览器内核&#xff1a; Trident&#xff08;IE内核&#xff09;&#xff1a;由Microsoft开发&#xff0c;被用于Internet Explorer浏览器。目前已经被Edge取代。 Gecko&#xff1a;…

并发内存池(C++)

项目简介 这个项目是实现了一个高效的并发内存池。它的原型的goggle的一个开源项目tcmalloc&#xff0c;即thread-cache malloc&#xff08;线程缓存的malloc&#xff09;&#xff0c;实现了高效多线程的内存管理&#xff0c;可实现对系统提供的内存分配函数malloc和free的替代…

调教 文心一言 生成 AI绘画 提示词(Midjourney)

文章目录 第一步第二步第三步第四步第五步第六步第七步第八步 文心一言支持连续对话 我瞎玩的非专业哈哈 第一步 你好&#xff0c;今天我们要用扩散模型创建图像。我会给你提供一些信息。行吗? 第二步 这是Midjourney的工作原理:Midjourney是另一个基于ai的工具&#xff0c;能…

web学习 之了解

本文的学习资源来自b站

Dos窗口设置环境变量的方法

1.Win R 打开运行窗口输入&#xff1a;cmd 2.在窗口中输入:set path%path%;[配置的绝对路径] 温馨提示:替换路径的时候记得将[配置的绝对路径]全部替换~

啪啪打脸,中国移动紧急回应,继续销售iPhone

针对近期媒体平台纷纷传出三大运营商停售iPhone的消息&#xff0c;日前中国移动紧急回应多家媒体的报道指将会继续与苹果合作销售iPhone&#xff0c;并且最新款的iPhone15也将同步发售&#xff0c;显然这是对那群特殊人群的有力回击。 iPhone已成为中国高端消费者的优先选择&am…

【杂】环形时钟配色笔记

配色网站笔记 coolorsflatuicolorscolordrophttps://www.webdesignrankings.com/resources/lolcolors/ 配色2

Python之设计模式

一、设计模式_工厂模式实现 设计模式是面向对象语言特有的内容&#xff0c;是我们在面临某一类问题时候固定的做法&#xff0c;设计模式有很多种&#xff0c;比较流行的是&#xff1a;GOF&#xff08;Goup Of Four&#xff09;23种设计模式。当然&#xff0c;我们没有必要全部学…

kafka实战报错解决问题

需求 在一个在线商城中&#xff0c;用户下单后需要进行订单的处理。为了提高订单处理的效率和可靠性&#xff0c;我们使用Kafka来实现订单消息的异步处理。当用户下单后&#xff0c;订单信息会被发送到Kafka的一个Topic中&#xff0c;然后订单处理系统会从该Topic中消费订单消…

企业架构LNMP学习笔记29

Nginx负载均衡配置&#xff1a; 架构分析&#xff1a; 1&#xff09;用户访问请求Nginx负载均衡服务器&#xff1b; 2&#xff09;Nginx负载均衡服务器再分发请求到Web服务器。 实际配置负载均衡&#xff0c;只需修改作为负载均衡服务器的Nginx即可&#xff0c;当前架构中的…