olympicCTF-Misc-base64stego

base64stego

在这里插入图片描述

题目分析

题目给了一堆base64编码,解码后发现是一段关于steganography的英文介绍。换思路,题目的标题是base64stego,而steg是影写术前几个字母,可能是base64影写。可以参考这篇文章-------> base64影写

base64编码文本

简单的说:Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),三个字符base64编码后就变成了4个字符,按照3比4的比例进行编码。

那么当要编码的字符不满足3/4这个比例的时候,在8比特转换为6比特的过程中就会在比特添加0来弥补,比如4个字符,也就是4*8=32个比特,将32个比特转换为6个比特一组,发现除不尽,少4个比特。这时候我们在末尾添加4个0来补充。这四个零在解码的时候也会被丢弃,可以发现4个零对Ibabase64编码和解码结果没有影响。

正是利用这一点,我们可以影藏信息。下面给出python脚本。

import base64

def deStego(stegoFile):
    b64table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    with open(stegoFile, 'r') as stegoText:
        message = ""
        for line in stegoText:
            try:
                text = line[line.index("=") - 1:-1]
                #print(text)
           
                message += "".join([bin(0 if i == '=' else b64table.find(i))[2:].zfill(6) for i in text])[
                        6 - 2 * text.count('='):6]

            except:
                pass
    return "".join([chr(int(message[i:i + 8], 2)) for i in range(0, len(message), 8)])#二进制转ascii码

print(deStego("stego.txt"))


"""
运行结果:
Base_sixty_four_point_five 
"""

总结

掌握base64编码原理,了解base64影写,会编写脚本破解base64影写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值