Base64
概述
(见https://blog.csdn.net/local_752/article/details/121970823)
Base64是一种用64个字符表示所有二进制数据的编码方式,通过将二进制数据每6位一组的方式重新组织,刚好可以使用0~9的数字、大小写字母以及“+”和“/”总共64个字符表示从000000到111111的64种状态
它实际上是一种“二进制到文本”的编码方法
Base64是一种用64个字符(这64个字符中包括大小写字母、数字、+和/,还有用来补缺的特殊字符=)来表示任意二进制数据的方法。它是一种编码方式,而非加密方式。它通过将二进制数据转变为64个“可打印字符”,完成了数据在HTTP协议上的传输。通过将二进制数据每6位一组的方式重新组织,刚好可以使用0~9的数字、大小写字母以及“+”和“/”总共64个字符表示从000000到111111的64种状态
注意:由于base64编码用了8位字符来表示信息中的6个位,所以base64编码字符串大约比原始值扩大了33%。


变表Base64
解密脚本:
# Visit https://www.lddgo.net/string/pyc-compile-decompile for more information
# Version : Python 3.7
import base64
from string import *
def original_title():
# 原来的题目
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))
if enc_flag == str1:
print('good job!!!!')
else:
print('something wrong???')
exit(0)
def decrypt1():
# 方法1
str1 = 'yD9oB3Inv3YAB19YynIuJnUaAGB0um0='
string1 = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0123456789+/'
string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
convert_dict = {}
for i in range(len(string1)):
ch1 = string1[i]
ch2 = string2[i]
convert_dict[ch1] = ch2
str2 = ''
for i in str1:
if i not in convert_dict.keys():
str2 += i
continue
j = convert_dict[i]
str2 += j
flag = base64.b64decode(str2.encode()).decode()
print(flag)
def decrypt2():
# 方法2
str1 = 'yD9oB3Inv3YAB19YynIuJnUaAGB0um0='
string1 = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0123456789+/'
string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
flag = base64.b64decode(str1.translate(str.maketrans(string2, string1)))
print(flag.decode())
# decrypt1()
decrypt2()

浙公网安备 33010602011771号