首页 > 其他 > 详细

base64隐写

时间:2021-09-06 05:10:45      阅读:25      评论:0      收藏:0      [点我收藏+]

今天做了一道ctf题,拿到txt文件,打开有很多base64的编码,然后去解码,花了很多时间,也没什么进展,后面看到了base64隐写,再利用大神的脚本跑出flag,用ichunqiu的题记录一下。

txt文件:

技术分享图片

 

 

 

 

 

py2脚本:

def get_base64_diff_value(s1, s2):
    base64chars = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/‘
    res = 0
    for i in xrange(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res


def solve_stego():
    with open(‘stego.txt‘, ‘rb‘) as f:
        file_lines = f.readlines()
        bin_str = ‘‘
        for line in file_lines:
            steg_line = line.replace(‘\n‘, ‘‘)
            norm_line = line.replace(‘\n‘, ‘‘).decode(‘base64‘).encode(‘base64‘).replace(‘\n‘, ‘‘)
            diff = get_base64_diff_value(steg_line, norm_line)
            print(diff)
            pads_num = steg_line.count(‘=‘)
            if diff:
                bin_str += bin(diff)[2:].zfill(pads_num * 2)
            else:
                bin_str += ‘0‘ * pads_num * 2
            print(goflag(bin_str))


def goflag(bin_str):
    res_str = ‘‘
    for i in xrange(0, len(bin_str), 8):
        res_str += chr(int(bin_str[i:i + 8], 2))
    return res_str

if __name__ == ‘__main__‘:
    solve_stego()

 

得到flag:

技术分享图片

 

base64隐写

原文:https://www.cnblogs.com/noob199/p/15227482.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!