每周一题-解密
字数 946 2025-08-18 11:37:12

国际密码解密教学文档

题目分析

  1. 题目描述

    • 创建国际密码,结合了古今中外的密码技术。
    • 加密文件为多层Base64编码,最终需解码为flag。
  2. 关键信息

    • 国际密码、从古至今、合体密码。
    • 加密文件通过百度云提供(链接已失效,但解题方法仍适用)。

解题步骤

第一步:Base64多层解码
  1. 初始文件:文件内容为Base64编码,但解码后仍是Base64,需多次解码。
  2. 工具推荐
  3. 解码结果
    D3C9BFDAD6D0gD3C9BFDACEB4gB2DDB7F2gD3C9BFDAC8CBgD3C9D6D0C8CBgB7F2D3C9gB2DDCEB4gCDF5CEB4gD3C9D3C9D6D0gCDF5CDF5gB2DDB7F2gD3C9D6D0B4F3
    
第二步:密文预处理
  1. 分隔符识别
    • 小写字母g作为分隔符,将密文分割为多个部分。
    • 替换g为空格后:
      D3C9BFDAD6D0 D3C9BFDACEB4 B2DDB7F2 D3C9BFDAC8CB D3C9D6D0C8CB B7F2D3C9 B2DDCEB4 CDF5CEB4 D3C9D3C9D6D0 CDF5CDF5 B2DDB7F2 D3C9D6D0B4F3
      
  2. 编码类型判断
    • 根据“国际密码”提示,尝试GB2312编码。
    • 每组4字符(如D3C9)对应GB2312编码的汉字。
第三步:GB2312编码解码
  1. 工具推荐
    • 使用在线GB2312编码表(如:QQXiuzi)。
  2. 解码示例
    • D3C9 → “王”
    • BFDA → “夫”
    • D6D0 → “大”
    • (注:需手动查询每组4字符对应的汉字)。
第四步:当铺密码转换
  1. 当铺密码规则
    • 汉字笔画的“出头数”即为对应数字(如“王”有6个出头,对应6)。
  2. 转换表参考
    汉字 出头数 数字
    6 6
    4 4
    3 3
    (需根据实际解码汉字补充)
  3. 数字序列生成
    • 例如:王夫大6 4 3
第五步:ASCII码转换
  1. 数字分组
    • 将数字按分隔符g分组,每组为十进制ASCII码。
    • 示例:102,108,97,103,123,71,98,68,112,66,97,125
  2. 转换结果
    • 使用Python脚本或在线工具转换为字符:
      numbers = [102, 108, 97, 103, 123, 71, 98, 68, 112, 66, 97, 125]
      flag = ''.join(chr(n) for n in numbers)
      print(flag)  # 输出:flag{GbDpBa}
      

自动化脚本

# 读取密文文件(dan.txt内容需以g结尾)
f = open('dan.txt', 'r')
dan = f.read()
listmsg = []

while True:
    listmsg.append(':')
    list = ''
    if dan.find('g') < 0:
        break
    list = dan[:dan.find('g')]
    dan = dan[dan.find('g')+1:]
    for i in range(len(list)//4):
        che = list[i*4:(i+1)*4]
        if che == 'BFDA':
            listmsg.append('0')
        elif che == 'D3C9':
            listmsg.append('1')
        elif che == 'D6D0':
            listmsg.append('2')
        elif che == 'C8CB':
            listmsg.append('3')
        elif che == 'B4F3':
            listmsg.append('5')
        elif che == 'CDF5':
            listmsg.append('6')
        elif che == 'B7F2':
            listmsg.append('7')
        elif che == 'CEB4':
            listmsg.append('8')
        elif che == 'B2DD':
            listmsg.append('9')

# 转换为ASCII字符
asc = ''
msg = ''
for x in range(1, len(listmsg)):
    if listmsg[x] != ':':
        asc += listmsg[x]
    else:
        msg += chr(int(asc))
        asc = ''
print(msg)

关键点总结

  1. 多层Base64解码:需重复解码至出现非Base64内容。
  2. GB2312编码:每组4字符对应一个汉字。
  3. 当铺密码:汉字出头数→数字。
  4. ASCII转换:十进制数字转为字符。

最终Flag

flag{GbDpBa}(根据实际解码结果可能不同)

国际密码解密教学文档 题目分析 题目描述 : 创建国际密码,结合了古今中外的密码技术。 加密文件为多层Base64编码,最终需解码为flag。 关键信息 : 国际密码、从古至今、合体密码。 加密文件通过百度云提供(链接已失效,但解题方法仍适用)。 解题步骤 第一步:Base64多层解码 初始文件 :文件内容为Base64编码,但解码后仍是Base64,需多次解码。 工具推荐 : 使用在线工具自动多层解码(如: WishingStarMoye )。 解码结果 : 第二步:密文预处理 分隔符识别 : 小写字母 g 作为分隔符,将密文分割为多个部分。 替换 g 为空格后: 编码类型判断 : 根据“国际密码”提示,尝试GB2312编码。 每组4字符(如 D3C9 )对应GB2312编码的汉字。 第三步:GB2312编码解码 工具推荐 : 使用在线GB2312编码表(如: QQXiuzi )。 解码示例 : D3C9 → “王” BFDA → “夫” D6D0 → “大” (注:需手动查询每组4字符对应的汉字)。 第四步:当铺密码转换 当铺密码规则 : 汉字笔画的“出头数”即为对应数字(如“王”有6个出头,对应6)。 转换表参考 : | 汉字 | 出头数 | 数字 | |------|--------|------| | 王 | 6 | 6 | | 夫 | 4 | 4 | | 大 | 3 | 3 | | (需根据实际解码汉字补充) | 数字序列生成 : 例如: 王夫大 → 6 4 3 。 第五步:ASCII码转换 数字分组 : 将数字按分隔符 g 分组,每组为十进制ASCII码。 示例: 102,108,97,103,123,71,98,68,112,66,97,125 。 转换结果 : 使用Python脚本或在线工具转换为字符: 自动化脚本 关键点总结 多层Base64解码 :需重复解码至出现非Base64内容。 GB2312编码 :每组4字符对应一个汉字。 当铺密码 :汉字出头数→数字。 ASCII转换 :十进制数字转为字符。 最终Flag flag{GbDpBa} (根据实际解码结果可能不同)