首页 > 其他分享 >简单的base64

简单的base64

时间:2023-11-10 21:56:10浏览次数:32  
标签:enc base64 flag 简单 print string2 string1

题目:

import base64
from string import *

str1 = 'yD9oB3Inv3YAB19YynIuJnUaAGB0um0='
string1 = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0123456789+/'
string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
flag = input('welcome to moectf\ninput your flag and I wiil check it:')
enc_flag = base64.b64encode(flag.encode()).decode()
enc_flag = enc_flag.translate(str.maketrans(string2, string1))
# str.maketrans(string2, string1) 返回一个转换表,该表将 string2 中的字符映射为 string1 中对应的字符。如果 string2 中的某个字符在 string1 中没有对应的字符,则会被忽略。
# enc_flag.translate() 函数使用上述转换表对字符串 enc_flag 进行字符映射替换操作,并返回替换后的结果
if enc_flag == str1:
    print('good job!!!!')
else:
    print('something wrong???')
    print(enc_flag)
    exit(0)

解题脚本:

from string import *
import base64

str1 = 'yD9oB3Inv3YAB19YynIuJnUaAGB0um0='
string1 = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0123456789+/'
string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
string3 = ''
for i in str1:
    for j in range(len(string1)):
        if string1[j] == i:
            string3 += string2[j]

string4 = string3 + '=='
print(string4)
string4 = base64.b64decode(string4)
# enc_flag = base64.b64encode(flag.encode()).decode()
# flag.encode() 将字符串 flag 转换为字节串(byte string)。
# base64.b64encode() 函数对字节串进行 Base64 编码,返回一个字节串。
# .decode() 将编码后的字节串转换为字符串。
print(string4)

题目比较简单,就是涉及到的几个函数我没见过,还是属于替换密码,但是这个是把明文先转换成base64编码后进行替换,然后又解码,所以要做的就是先编码,再根据替换表爆破处替换前的编码,再进行base64解码就得到了flag,刚开始写脚本,我查询后标注在了代码旁边

标签:enc,base64,flag,简单,print,string2,string1
From: https://www.cnblogs.com/lcjingyi/p/17825153.html

相关文章

  • Xposed框架简单Hook实例:窥视“时间旅行”功能
    在我们的生活中,有时候我们希望能够改变一些事情,就像电影中的主人公可以通过时间旅行改变自己的命运一样。在Android系统中,Xposed框架就提供了一种类似的机会,让我们可以通过Hook技术改变应用程序的行为。本文将通过一个简单的例子来演示Xposed框架的基本使用,让我们一起来窥视一下“......
  • Linux简单操作
    bashshell介绍和使用什么是Bashshell(壳)是一个命令解释器,就是一个软件执行就是bash,可以在里面输入命令,做交互,exit退出能干什么原来在windows上点点点完成的是,它都能做到使用Shell实现对Linux系统的大部分管理,例如:1.文件管理(文件创建,移动,复制,删除,编辑…)2.权限管......
  • 简单全面的mybatis详解
    1、前言MyBatis是一款ORM(Object-RelationalMapping)框架,其主要用于将Java对象与关系数据库之间进行映射,凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。那MyBatis为我们做了哪些事情呢?其实,总结来看主要有如下几点:SQL映射配置:MyBatis使用XML或注解配置文件来定义......
  • opencv,matplotlib,PIL,base64数据转换
    opencv,matplotlib,PIL,base64数据转换目录opencv,matplotlib,PIL,base64数据转换opencvMatplotlibPIL相互转换opencv和MatplotlibMatplotlib和PILopencv和PILopencv和base64PIL和base64​opencv格式numpy np.ndarray读取cv2.imread保存cv2.imwrite显示......
  • MPU6050使用心得(简单分享一下)
    前言选用MPU6050做倾斜检测功能。前期准备开发板:正点原子STM32F103精英版(STM32F103ZET6)模块:GY-521MPU6050其他:杜邦线若干、烧录线、FlyMcu、Keil5、正点原子开发板配套的套件(TFTLCD)例程、资料下载源自淘宝卖家:https://pan.baidu.com/share/init?surl=dNDqcp76L9QdM7iSZYfz_A密......
  • Golang锁简单使用
    golang主要有两种锁:互斥锁和读写锁互斥锁Mutex用于提供一种加锁机制(LockingMechanism),保证同一时刻只有一个goroutine在临界区运行packagemainimport( "fmt" "sync" "time")funcmain(){ varmutexsync.Mutex x:=0 gofunc(){ mutex.Lock() x=x+1......
  • 通过WebRTC简单实现媒体共享
    通过WebRTC简单实现媒体共享媒体协商在设置本地描述符(offer/answer)前,我们总是需要将媒体添加到连接中,只有这样在描述符中才能包含需要共享的媒体信息,除非你不需要共享媒体。在实际应用中,我们通常没办法让两个客户端直接通信,进行媒体协商。因此我们通常需要一个双方都可以访问......
  • 【主流技术】聊一聊 Redis 的基本结构和简单应用(一)
    目录前言一、String类型二、List类型三、Hash类型四、Set结构五、SortSet(Zset)结构六、文章小结前言Redis是目前互联网后端的热门中间件之一,在许多方面都有深度的应用,作为后端开发熟练掌握该技术是十分有必要的。Redis的五种数据类型是:1、String(字符串);2、Hash(哈希);3、L......
  • 简单查询
    计划今天要学习《06MongoDB基本操作》Mongo的连接地址格式mongodb://username:password@host[:port]/database?<options>基本操作以下都在shell环境下查看当前数据库>dbmock切换数据库>usetest查看当前表>showcollections>showtables插入一条记录>db.frui......
  • 一个简单的存储过程例子
    创建存储过程createorreplaceprocedurep_delete_dlljgas begin deletefromsys_dlljg;commit;end;创建制定执行计划(每周一22点55分执行一次)DECLAREiInteger;BEGINdbms_job.submit(i,'p_delete_dlljg;',sysdate,'TRUNC(next_day(sysdate,1))+(22*60+5......