zoukankan      html  css  js  c++  java
  • 攻防世界-密码学-Decode_The_File

    1. 题目信息

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

    2. 分析

    先将附件中每行base64编码进行解码,得到一个Python脚本。但其实信息并非隐藏在解码后的数据中,而是隐藏在编码中。首先介绍base64编码的原理,当需要编码的数据剩下1或2字节时,编码与解码过程如下:

    可以看到,即使(a_{i} eq 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('
    ')[:-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}
    
  • 相关阅读:
    Arduino学习笔记10
    Arduino学习笔记07
    Arduino学习笔记6
    Arduino学习笔记5
    Arduino学习笔记4
    Arduino学习笔记3
    linux下库文件的编程
    学习编程语言究竟学什么
    Arduino学习笔记2---数字温度计
    Arduino学习笔记0---开发板的了解
  • 原文地址:https://www.cnblogs.com/coming1890/p/13540370.html
Copyright © 2011-2022 走看看