• [CTF] 2018-百越杯-Misc-血小板天下第一可爱


    题目附件密码:4416
    该题一共两个文件
    在这里插入图片描述
    首先补全二维码后扫码得到的内容进行base64解码得到
    在这里插入图片描述
    这里需要用到一个工具
    https://github.com/livz/cloacked-pixel
    GitHub下载慢的话可以直接点击这里:cloacked-pixel-master
    这个工具是用python2写的,在Linux系统下首先进行python2的配置:

    wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
     
    python2 get-pip.py
     
    /usr/bin/python2 -m pip install --upgrade pip
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后安装工具所需的python第三方库

    pip2 install matplotlib
    pip2 install Pillow
    pip2 install crypto
    pip2 install pycryptodome
    
    • 1
    • 2
    • 3
    • 4

    以及系统依赖文件

    apt-get install python-tk
    
    • 1

    最后使用工具:

    python2 lsb.py extract 1.png flag.txt Lsb_1s_gr3at
    
    • 1

    最后解出flag
    在这里插入图片描述

    这道题涉及到一个知识点就是LSB隐写,关于LSB隐写我在下面简单说一说

    LSB图片隐写(最低有效位隐写)

    LSB全称leastsignificant bit,是一种基于图片最低有效位修改储存信息的隐写方法,为什么会有这种隐写方法的产生?

    其实很简单,我们都知道三原色,即:红绿蓝。就是大多数的颜色都可以通过三原色的不同比例调剂出来。

    一般来说图片有BMP、JPG、BNG等格式,BMP、PNG是无损压缩的图片,而JPG是有损压缩的图片,所以一般使用PNG或BMP进行信息隐藏。一般BMP是没有压缩过的图片,所以会比较大。

    如果图像是jpg图片的话,就没法使用lsb隐写了,原因是jpg图片对像数进行了有损压缩,我们修改的信息就可能会在压缩的过程中被破坏。
    图片的图像像素一般都是由RGB三原色(红绿蓝)组成,每一种颜色占8位,取值为0x000xFF(十进制0255),(以0x开始的数据表示16进制)就是256种,一共包含了256的3次方种颜色,即16777216种颜色

    但是人类的眼睛只可以分辨大概1000万种不同的颜色,还有很多种细微的变化人类的眼睛是觉察不到的
    在这里插入图片描述
    而LSB隐写就是通过修改RGB颜色分量的最低位二进制(LSB),来进行信息的储存,人类的眼睛并不能感知到前后的变化
    ,每个像素可以携带3bit的信息

    在这里插入图片描述
    上图我们可以看到,十进制的235表示的是绿色,我们修改了在二进制中的最低位,但是颜色看起来依旧没有变化。我们就可以修改最低位中的信息,实现信息的隐写。我修改最低有效位的信息的算法就叫做lsb加密算法,提取最低有效位信息的算法叫做lsb解密算法。

  • 相关阅读:
    实现数组去重的其中三种方法
    你可能从未使用过的13个Python特性
    16、JAVA入门——继承和方法重写
    初探CSS 上
    Mybatis整理
    vue实现keep-alive页面缓存【三步骤配置,一步到位】
    学习docker记录(三)
    VMware vcenter/ESXI系列漏洞总结
    uniapp-提现功能(demo)
    [附源码]计算机毕业设计JAVA宠物狗领养网站
  • 原文地址:https://blog.csdn.net/ZXW_NUDT/article/details/126344321