码迷,mamicode.com
首页 > 其他好文 > 详细

攻防世界-密码学-Decode_The_File

时间:2020-08-27 13:01:39      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:一个   open   rom   ref   密码   enc   return   alt   ==   

1. 题目信息

附件是一个文本文件,里面有658行base64编码。

2. 分析

先将附件中每行base64编码进行解码,得到一个Python脚本。但其实信息并非隐藏在解码后的数据中,而是隐藏在编码中。首先介绍base64编码的原理,当需要编码的数据剩下1或2字节时,编码与解码过程如下:
技术图片
可以看到,即使\(a_{i} \neq 0\),解码过程也能正确进行;从而可以使用\(a_{i}\)传递一些信息。因此,只要我们将编码中的\(a_{i}\)提取出来,就可以解出flag。

3. 解题

实现的Python脚本如下:

from base64 import b64decode
from string import uppercase,lowercase,digits
from Crypto.Util.number import long_to_bytes

def solve():
    with open(‘encode‘,‘r‘) as f:
        codes=f.read()
    Lc=codes.split(‘\n‘)[:-1]
    base=uppercase+lowercase+digits+‘+/‘
    re2=[]
    for code in Lc:
        if ‘==‘ in code:
            re2.append(bin(base.find(code[-3]))[2:].rjust(6,‘0‘)[2:])
        elif ‘=‘ in code:
            re2.append(bin(base.find(code[-2]))[2:].rjust(6,‘0‘)[4:])
    ret=‘‘.join(re2)
    return long_to_bytes(long(ret[:ret.rfind(‘1‘)+1],2))

if __name__==‘__main__‘:
    print solve()

程序运行结果如下:

$ python solve.py
ROIS{base_GA_caN_b3_d1ffeR3nT}

攻防世界-密码学-Decode_The_File

标签:一个   open   rom   ref   密码   enc   return   alt   ==   

原文地址:https://www.cnblogs.com/coming1890/p/13540370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!