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}
    
  • 相关阅读:
    147-21. 合并两个有序链表
    146-14. 最长公共前缀
    145-如何查看python帮助文档
    144-38. 外观数列
    143-121. 买卖股票的最佳时机
    142-206. 反转链表
    141-98. 验证二叉搜索树
    Nginx中文域名配置
    Keepalived+Nginx架构整理版
    Tomcat启动脚本
  • 原文地址:https://www.cnblogs.com/coming1890/p/13540370.html
Copyright © 2011-2022 走看看