由题意可知,这是改进的base64,直接对密文解密
txt = input('密文:').strip()
dict = {0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}
dict1 = {y:x for x,y in dict.items()}
txt = txt.rstrip('=')#删除末尾指定字符
Bin = ''
for i in txt:
Bin += bin(dict1[i])[2:].zfill(6)
Bin = Bin[:(len(Bin)//8)* 8]
m = ''
for i in range(0,len(Bin),8):
m += chr(int(Bin[i:i+8],2))
print(m)
得到:BJD{D0_Y0u_kNoW_Th1s_b4se_map}
将BJD改为flag即可