首页 > 其他分享 >了解base64的一些隐写

了解base64的一些隐写

时间:2024-09-11 18:37:26浏览次数:1  
标签:bin 00 base64 隐写 flag 了解 print

今天刷题发现base64原来还能隐写,隐写主要是靠base64后面补的等号。
因为base64在加密的时候如果后面位数不足就会补=(00),而解码的时候如果后面有多余的就直接丢弃,这样也不会影响原文。
那我们如果补00的时候补的不是00呢,那我们岂不是可以在这上面做文章,这样就能做到隐写了。
解码的代码如下:

此方法用来将包含隐藏信息的字母转换为base64编码表对应的序列值(十进制数)并返回

def base64change(s):
table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' # base64编码表,恰好索引值对应字母
for i in range(len(table)):
if table[i] == s:
return i

此方法用来获取隐藏信息二进制字符串

def base64solve():
f = open(r"D:\fulan\练习\stego.txt",'r')
lines = f.readlines()

flag_bin = ''
for line in lines:
    # print(line)
    l = line.strip() # 去掉两边的空格
    if l[-1] == '=':
        if l[-2] == '=': # 含有两个=则包含4bit信息
        # 将返回的十进制转换为二进制数,由于返回的二进制数为0b开头,所以从第三位开始取,然后用0填充头部为4位,再取后四位隐藏的信息
            flag_bin += bin(base64change(l[-3]))[2:].zfill(4)[-4:]
        else:# 只含一个=则包含二bit信息
            flag_bin += bin(base64change(l[-2]))[2:].zfill(2)[-2:]
#print(flag_bin)
flag = ''
for i in range(len(flag_bin)//8):
    flag += chr(int(flag_bin[i * 8:(i + 1) * 8], 2))
print(flag)

if name == 'main':
base64solve()

标签:bin,00,base64,隐写,flag,了解,print
From: https://www.cnblogs.com/fulanduolu/p/18408724

相关文章

  • 带你了解Android Jetpack库中的依赖注入框架:Hilt
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点Hilt概述Hilt是Google推出的一种用于Android的依赖注入(DependencyInjection,DI)框架,构建于Dagger之上,旨在简化Android应用中的依赖注入过程。通过Hilt,你可以更轻松......
  • 直流负载的案例,你了解多少?
    直流负载是电力系统中的重要组成部分,主要用于将电能转化为其他形式的能量。在实际应用中,直流负载广泛应用于各种场景,如工业生产、交通运输、通信设备、医疗设备等。以下是一些具体的直流负载案例和实际应用经验:工业生产:直流电动机在工业生产中有广泛应用,例如在电梯、起重机和传......
  • 软件产品的检测费用标准您了解吗?
    检测费用软件测试报告的费用并不固定,会受到多个因素的影响。以下是一些影响软件测试报告定价的关键因素:1.测试类型与复杂性:不同的测试类型(如功能测试、性能测试、安全测试、兼容性测试等)和其复杂程度都会影响费用。例如,基础的功能测试可能价格较低,而涉及负载压力测试、安......
  • 理论+实战了解kubernetes及pod管理
    一、kubernetes简介及部署方法1.1kubernetes介绍kubernetes是一个容器编排软件工具,除了它还有doker自带的容器编排工具Swarm、apche的一个资源统一管控工具mesos等kubernetes在Docker作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年Borg系统运行......
  • 【学习】【React】一文带你深入了解React的运行原理 走进200万工程师的技术圣地
    原创前端欧巴前言React作为前端开发中非常流行的JavaScript库,以其高效、灵活的特性受到了广大开发者的青睐。了解React的运行原理,对于提升开发效率和性能优化至关重要。本文将深入探讨React的运行原理,从初始化、渲染、Diffing算法、Fiber架构到最终的DOM更新,......
  • 十分钟了解规模化敏捷LeSS
    00前言LeSS的第一次学习是在2019年1月份,当时的感觉挺烧脑,对SystemThinking第一次接触,很多东西似懂非懂,学的并不是很扎实。幸运的是,两年后终于有机会跟着吕毅老师重修LeSS,也算是对知识的重新回炉了。第二次参加培训,对于LeSS的更细致内容以及运用SystemThinking来思考LeSS背后......
  • 执行Git命令,Git都干了什么?图文带你从基础到进阶了解Git都做了什么
    0.前言Git仓库中的提交记录保存的是你目录下的所有的文件快照,就像把这些文件粘贴复制了一样,但是要比粘贴复制更加优雅。Git希望提交记录尽可能保持轻量,因此在每次提交的时候,它不会盲目的去复制你的整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的......
  • 面试官:Vue中的过滤器了解吗?过滤器的应用场景有哪些?
    一、是什么过滤器(filter)是输送介质管道上不可缺少的一种装置大白话,就是把一些不必要的东西过滤掉过滤器实质不改变原始数据,只是对数据进行加工处理后返回过滤后的数据再进行调用处理,我们也可以理解其为一个纯函数Vue允许你自定义过滤器,可被用于一些常见的文本格式化p......
  • 雨量监测系统需要哪些设备,带你360度无死角了解雨量监测系统
    作为星创易联技术支持林工,我很高兴为大家介绍我们公司的雨量监测系统。在过去的几年里,我亲自参与了多个雨量监测项目的设计、部署和维护工作,积累了丰富的实践经验。今天,我将详细介绍我们的雨量监测系统,包括其组成部分、工作原理、应用场景以及部署注意事项。有兴趣的可以参考我们......
  • 文件怎么加密,三种方法了解一下,给你带来不同选择
    文件加密是一种重要的数据保护措施,用于防止未经授权的人员访问或篡改文件内容。以下是一些常见的文件加密方法及其步骤:一、系统内置加密功能1.WindowsBitLocker(适用于Windows系统)简介:BitLocker是Windows系统内置的一种磁盘加密工具,可以为整个磁盘或分区提供加密保护。......