初识LSB信息隐藏算法

基于matlab实现的LSB 图像信息隐藏算法(含源码) 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、基础知识1.BMP灰度图像2.位平面3.matlab基础语法4.提取位平面代码(matlab)二、信息隐藏实验概述2.读入数据总结 一、基础知识 1.BMP灰度图像 灰度图,又称灰阶图,位图的一种。把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为256阶。用灰度表示的图像称作灰度图。除了常见的卫星图像、航空照片外,许多地球物理观测数据也以灰度表示。 bmp是微软公司推出的一种位图格式,也是数码相机拍出的格式,质量好但 阅读详情

初识LSB信息隐藏算法

关于BMP图像的结构网上资料很多,这里不再骜述。

算法是将一个文件以二进制打开,将每一位存放到图片数据区的像素的每个字节的最低位。
以达到信息隐藏的目的。

  1 // ---------------------------------------------
  2 //   基于LSB的信息隐藏
  3 // ---------------------------------------------
  4 int  FTDib::LSBCoder( const  char* textFileName)
  5 {
  6    ifstream textFile;
  7    textFile.open(textFileName,ios::in | ios::binary);
  8    textFile.seekg(0,textFile.end);
  9    DWORD textFileLength = textFile.tellg();
 10    //判断位图是否够存储隐藏的信息
 11    DWORD colorTableSize = m_numberOfColors * sizeof(RGB_Element);
 12    if((size - colorTableSize)<textFileLength*8)
 13    {
 14        return -1; //不够隐藏
 15    }

 16
 17
 18    BYTE* pTextFile = new BYTE[textFileLength+1];
 19    cout<<"隐藏时文件长度:"<<textFileLength<<endl;
 20    textFile.seekg(0,textFile.beg);
 21    textFile.read((char*)pTextFile,textFileLength);
 22    textFile.close();
 23
 24    BYTE textData;
 25    for(int i=0,k=0; i< textFileLength; ++i)
 26    {
 27        for(int j=0; j<8; ++j)
 28        {
 29            textData = pTextFile[i]>>j;
 30            textData = textData&0x01;
 31            if(textData==0)
 32            {
 33                pDib[k+32] = pDib[k+32]&0xfe;
 34            }

 35            else
 36            {
 37                pDib[k+32] = pDib[k+32]|0x01;
 38            }

 39            ++k;
 40        }

 41    }

 42    cout<<"信息隐藏完毕"<<endl;
 43    //在前四个字节中写入text文件数据长度
 44    DWORD length;
 45    for(int i=0; i<32; ++i)
 46    {
 47        length = textFileLength>>i;
 48        length = length&0x00000001;
 49        if(length==0)
 50        {
 51            pDib[i] = pDib[i]&0x1e;
 52        }

 53        else
 54        {
 55            pDib[i] = pDib[i]|0x01;
 56        }

 57    }

 58
 59    return 0;
 60
 61    
 62}

 63
 64 // ---------------------------------------------
 65 //   解码基于LSB的信息隐藏
 66 // ---------------------------------------------
 67 void  FTDib::LSBDecoder( const  char* textFileName)
 68 {
 69    DWORD length = 0x00000000;
 70    BYTE bit;
 71    //获取txt文件长度
 72    for(int i=0; i<32; ++i)
 73    {
 74        bit = pDib[i]&0x01;
 75        if(bit==0)
 76        {
 77            length = length&0x7fffffff;
 78        }

 79        else
 80        {
 81            length = length|0x80000000;
 82        }

 83        if (i<31)    length = length>>1;
 84    }

 85
 86    cout<<"解码时文件长度:"<<length<<endl;
 87    //开始解码
 88    BYTE* pTextFile = new BYTE[length];
 89    BYTE textData;
 90    for(int i=0,k=0; i<length*8; ++i)
 91    {
 92        if(i && i%8==0){++k;}
 93        textData = pDib[i+32]&0x01;
 94        if(textData==0)
 95        {
 96            pTextFile[k] = pTextFile[k]&0x7f;
 97        }

 98        else
 99        {
100            pTextFile[k] = pTextFile[k]|0x80;
101        }

102        if (i%8 != 7) pTextFile[k] = pTextFile[k]>>1;
103    }

104
105    cout<<"解码完毕"<<endl;
106
107    ofstream textFile;
108    textFile.open(textFileName,ios::out | ios::binary);
109    textFile.write((char*)pTextFile,length);
110    textFile.close();
111    delete pTextFile;
112}

113
MATLAB LSB图像信息隐藏 最低位平面验证 以及PSNR SSIM评价 ​ 一、算法原理 1.位平面定义 定义:对于一幅用多个比特表示其灰度值的图像来说,其中的每个比特可看作表示了一个二值的平面,也称为图像的位平面。 2. LSB算法介绍 LSB是Least Singificant Bit的缩写, 意思是最不重要比特位。LSB算法利用了数字图像处理中位平面的原理, 即改变图像的最低位的信息, 对图像信息产生的影响非常小,人眼的视觉感知系统往往不能察觉。以一幅256灰度的图像为例, 256灰度共需要8个位来表示, 但其中每一个位的作用是不一样的, 越高位对图像的影响越大, 反 阅读详情

相关推荐

CTF新手必看:用Stegsolve工具5分钟搞定LSB隐写题(附实战截图)

本文为CTF新手提供了使用Stegsolve工具快速破解LSB隐写题的完整指南。通过详细的步骤解析和实战截图,帮助初学者掌握LSB隐写原理、Stegsolve工具的核心功能及五步破解流程,并分享高阶技巧和常见避坑指南,助力快速提升CTF解题能力。

weixin_30279315的博客 411

信息隐藏基础算法——LSB算法(python实现)

信息隐藏基础算法——LSB算法(python实现)1,LSB算法原理2,载体图片和待嵌入图像信息3,代码4,结果展示5,存在的问题 1,LSB算法原理 LSB(least significant bit)翻译过来为最低有效位。 在灰度图像中,图像的灰度由八位二进制来表示即十进制中0-255,共256级别,255则为白色,反之0为黑色。自然,二进制位越靠前则对像素点灰度的影响越大,从这点出发,则考虑更改像素点灰度值最低位来隐藏信息,这样对原图像的改变比较小。 实验要求: 1,针对具体的某一副图像实现LSB嵌入

ma_ling_shu的博客 2万+

隐写术攻防初体验:我是如何用卡方分析‘抓’到一张图片里的小秘密的?

本文通过实战案例详细介绍了如何利用卡方分析检测LSB隐写术,揭示隐藏在图片中的秘密。从基础原理到Python代码实现,展示了数字水印和信息隐藏技术的攻防对抗,为CTF竞赛爱好者和安全研究人员提供了实用指南。

weixin_34254464的博客 241

【LSB】图片隐写主体函数

关于图像隐写 图像隐写是一种有效的方式来交换隐藏的消息,而不会引起怀疑。它的工作原理是用lbs算法将消息编码为图像像素的颜色值。 这种功能基于浏览器的最新特性比如File API和Canvas,如果你的浏览器不支持该该功能,请下载最新的浏览器。 解析函数以及其功能 解析index.html中的js: 图片的加载 传统的图片加载需要将图片上传到服务器,再由服务器加载出来,而现在可以使用FileRea...

我的博客 614

新手必看:从一道CTF Misc图片题实战出发,手把手教你用Stegsolve和010 Editor找Flag

本文通过一个CTF Misc图片隐写实战案例,详细介绍了如何使用Stegsolve和010 Editor等工具从图片中提取隐藏的Flag。内容涵盖基础信息收集、LSB分析、文件结构修复等关键步骤,适合新手系统学习CTF图片隐写解题思路。

weixin_30443747的博客 302

CTF新手必看:用Stegsolve破解Misc图片隐写的完整流程(附盲水印解决方案)

本文详细介绍了CTF比赛中使用Stegsolve工具破解Misc图片隐写的完整流程,包括LSB隐写识别、损坏压缩包修复技巧及盲水印解决方案。通过实战案例和Python代码示例,帮助新手快速掌握图片隐写分析技术,提升CTF解题效率。

weixin_29325007的博客 282

用Python和LSB算法给你的图片藏点悄悄话:一个完整可用的隐写工具实现

本文详细介绍了如何使用Python和LSB算法实现图片隐写工具,将秘密信息隐藏在图片像素中而不易被察觉。通过文本与二进制转换、图片预处理和完整的信息嵌入与提取流程,读者可以轻松打造专属的数字密信工具,支持中英文文本及文件嵌入,适用于安全通信和趣味游戏等场景。

weixin_27199085的博客 293

BUUCTF 乌镇峰会种图 1:从图片隐写到二进制分析的实战解密

本文通过BUUCTF竞赛中的'乌镇峰会种图'题目,详细解析了图片隐写术的实战解密技巧。从Stegsolve工具的基础应用到二进制编辑器的深度分析,揭示了如何通过文件结构解析和异常数据定位快速发现隐藏信息。文章还提供了CTF图片隐写题的通用解题思路和必备工具链配置,帮助安全爱好者提升解题效率。

weixin_30955617的博客 535

MISC攻防实战:从隐写到流量分析的CTF挑战解析

本文深入解析CTF比赛中MISC(杂项)类别的攻防实战技巧,涵盖从基础隐写术到流量分析的核心挑战。通过剖析图片LSB隐写、文件结构修复、Wireshark流量过滤、DNS隧道识别及多层编码转换等关键技术,并结合攻防世界典型题目,系统讲解如何像侦探一样从隐蔽数据中提取Flag,帮助安全爱好者构建系统的MISC解题思维与工具链。

weixin_29285605的博客 690

BUUCTF 隐写术实战:从图片中剥离隐藏的Flag

本文详细解析了BUUCTF比赛中隐写术的实战技巧,从图片中剥离隐藏的Flag。通过文件格式分析、自动化工具扫描、手动提取和密码破解等步骤,帮助CTF选手系统掌握隐写术解题方法,提升比赛实战能力。

weixin_29611239的博客 221

F5隐写术实战:从刷新图片到破解BUUCTF挑战

本文详细解析了F5隐写术的原理及其在CTF竞赛中的应用,特别是针对BUUCTF“刷新过的图片”挑战的实战破解。通过搭建Java环境、使用F5-steganography工具提取隐藏数据,并攻克ZIP伪加密,最终获取Flag。文章还总结了F5隐写的常见变种与防御思路,为安全研究者和CTF爱好者提供实用指南。

weixin_29231027的博客 330

MoeCTF 2025

题解

m0_74095400的博客 597

LSB信息隐藏算法

LSB信息隐藏算法

GIF隐写实战:从Stegsolve到montage的完整解析

本文详细解析了GIF隐写术的实战分析方法。从使用Stegsolve进行帧分析、色彩通道与位平面检查,到利用ImageMagick的convert命令分解GIF帧,再到通过montage工具进行图像拼接,提供了一套完整的隐写信息提取流程。文章旨在帮助安全研究者和CTF选手掌握从动态图片中挖掘隐藏数据的关键技术与工具链。

opencv7vision的博客 89

LSB算法实现信息隐藏

信息安全课的一个实验作业,要求采用LSB算法实现BMP图像中的信息隐藏及提取,写完后感觉这个算法还是蛮有意思滴~压缩包内附上实验报告,仅供各位参考~

lsb位图隐写java实现

使用java语言实现的lsb隐写 有简单的图形界面 隐写和解密模块分开 具体路径可以再码中修改

上一篇: C++传值、引用和指针的区别
下一篇: ofstream和ifstream详细用法
saro21
博客等级 码龄15年 5粉丝 17原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值