抄错的字符

##解题思路

看题目描述就是得爆破,比如Q能变成Qq9,Z能变成Zz2,每一种可能列举,最后可能得出的flag为一串可读字符

抄错的字符_第1张图片

但是我不会脚本,所以用的笨方法,尝试base64,每4个字符为一组进行手工,发现Aman为作者的名称,后面夸它帅

抄错的字符_第2张图片

不过说完了笨方法,也应该说说好方法了,那就是写脚本爆破,我刚好python环境坏了,我就不装了

这是大佬的帖子↓

bugku抄错的字符bugku抄错的字符-CSDN博客

import base64
 
# 密文
m = 'QWIHBLGZZXJSXZNVBZW='
# 解密映射字典
d = {
    'Q': ['Q', 'q', '9'], 'W': ['W', 'w'], 'I': ['I', 'i', '1'],
    'H': ['H', 'h'], 'B': ['B', 'b', '8'], 'L': ['L', 'l', '1'],
    'G': ['G', 'g', '9'], 'Z': ['Z', 'z', '2'], 'X': ['X', 'x'],
    'J': ['J', 'j'], 'S': ['S', 's', '5'], 'N': ['N', 'n'],
    'V': ['V', 'v'],'=':['=']
}
 
# 用于存储有效的base64解码结果
v = []
 
# 递归函数,尝试递归所有可能性并base64解码
def f(i, c):
    # 当前索引超出密文长度,尝试解码
    if i == len(m):
        try:    # 尝试base64解码
            b = base64.b64decode(c)
            s = b.decode('utf-8')
            #解码成功,则记录结果
            if s.isprintable():
                v.append(s)
        except: # 解码失败,忽略这个组合
            pass
        return
 
    # 获取当前密文字符对应的所有可能字符
    p = m[i]
    r = d[p]
 
    # 遍历可能的字符,并递归处理
    for a in r:
        f(i + 1, c + a)
 
# 递归解码
f(0, '')
 
# 打印结果
print("结果:")
for e in v:
    print(e)

你可能感兴趣的:(CTF,python,CTF,安全,CRYPTO,BUGKU)