MISC之LSB

LSB隐写

简介

LSB隐写(Least Significant Bit Steganography)是一种隐写术,它通过将秘密信息嵌入到图像、音频或视频等多媒体文件中的最低有效位中来隐藏信息。在数字图像中,每个像素由红、绿、蓝三个通道的颜色值组成。每个颜色通道的颜色值通常用8位二进制数表示,范围为0-255。而LSB隐写则是将秘密信息的二进制位依次替换为RGB值中的最低有效位,从而实现隐藏信息的效果。由于最低有效位的改变对图像的视觉质量影响较小,因此LSB隐写是一种常用的隐写技术。

 LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB),而人类的眼睛不会注意到这前后的变化,每个像数可以携带3比特的信息。

LSB隐写内容写入

将脚本文件在kali里运行

 用法:python  脚本名  encode 用来隐藏的图片名 要隐藏的文件名 输出的图片名

python LSB.py encode input.png flag.txt out.png
//input.png是用来隐藏信息的文件
//flag.txt是要隐藏的信息,隐藏的文件不只是文本文件,图片也可以隐藏
//out.png是隐藏完成输出的文件

 实操:

 xx.png隐藏在haha.png里了,输出的结果是34.png

 

 

 隐写出来的图片与原图相比没有什么区别,只是图片的大小明显是隐写后的图片文件大小要大一些,所以以后遇到图片文件的像素不是很高但文件大小却比普通的图片要大一些,那么就可以怀疑图片是否进行了隐写,图片内隐藏了一些信息

 LSB隐写内容提取

这里有两个方法将隐写进去的内容提取出来

方法一:Stegsolve.jar

用Stegsolve.jar打开图片文件,然后分析

 选择最低位隐写

 然后Save Bin以图片的形式保存文件,最后再打开新保存的文件得到的就是隐藏的文件

方法二:kali运行脚本

用法:python  脚本名  decode  字节数  含有隐写内容的图片名  输出的文件名

 依旧是同一个脚本文件

python LSB.py decode 20 34.png out.png
//20是输出的字节数
//34.png是要提取信息的文件
//out.png是输出的文件
//一般用脚本提取图片的内容是文本里的内容而不是图片,因为图片输出后字节数不对,输出的文件不会出现有用的信息,所以该脚本用来提取文本信息要好一些

总结:

LSB和MSB是二进制数字中的概念。

LSB表示最低位(Least Significant Bit),即二进制数字中的最右侧位,它代表数字的最小单位。

MSB表示最高位(Most Significant Bit),即二进制数字中的最左侧位,它代表数字的最高位,决定了数字的大小。

所以要注意隐写时要清楚时从头开始还是从尾部开始,从左侧开始还是从右侧开始,对应的最高位和最低位都会有所不同,因此在使用Stegsolve.jar时要注意文件头,以免出现LSB隐写的鲁棒性,导致文件隐写的内容丢失。

上面的隐写用法要注意隐写文本和图片的提取方法上会有一些不同,因为图片和文本之间本身就有区别,虽然隐写写入的方式是一样的,但提取呈现内容的格式不一样。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/240736.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

构建自己专属seata-server 镜像(分布式事务)?(第二篇)

码云地址:https://gitee.com/jessyxu/yc-seata-server 一.镜像构建前确保自己的seata-server 能够启动成功! seata-server 官方建议:JDK版本不低于 1.8.0_281版本,兼容JDK 8、JDK11,可使用OpenJDK 8/11、Alibaba Dragonwell 8/、…

Java - Spring中Bean的循环依赖问题

什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。 比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 Spring解决循环依赖的机理 Spring为什么可以解决set s…

MSPM0L1306例程学习-ADC部分(2)

MSPM0L1306例程学习系列 使用的TI的官方例程,即SDK里边包含的例程代码。 可以到TI官网下载并且安装SDK: https://www.ti.com.cn/tool/cn/download/MSPM0-SDK/ MCU使用的是MSPM0L1306, 对于ADC部分,有10个例程: 前边讲了3个例程&#xff0c…

企业选CRM系统,这3个关键点你一定不能错过

在充满竞争的商业市场中,企业需要一种强大的工具来管理客户关系,从而提高销售效率。CRM客户关系管理软件就是企业所需要的。然而仅仅是在国内,CRM的供应商就超过了一千家,那么应该怎样选择适合企业的CRM系统? 一、软件…

设计模式——观察者模式(Observer Pattern)

概述 观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称…

Python 自动化之处理docx文件(一)

批量筛选docx文档中关键词 文章目录 批量筛选docx文档中关键词前言一、做成什么样子二、基本架构三、前期输入模块1.引入库2.路径输入3.关键词输入 三、数据处理模块1.基本架构2.如果是docx文档2.1.读取当前文档内容2.2.遍历匹配关键字2.3.触发匹配并记录日志 3.如果目录下还有…

ajax和Axios快速入门

什么是ajax 概念: Asynchronous JavaScript And XML,异步的JavaScrip和XML,重点在异步。 作用: 1,数据交互,可以通过ajax给服务器发送请求,并获取服务器响应的数据。 2,异步交互&am…

SSD Wear Leveling磨损均衡,并不是一直有效,甚至有负面作用!-part1

1.引言 上一篇WL基础文章中,我们介绍了SSD为何需要Wear Leveling磨损均衡的基本原理和分类,阅读本文之前,建议先了解WL磨损均衡的相关背景: 扩展阅读:深入解析SSD Wear Leveling磨损均衡技术:如何让你的硬…

什么是循环依赖,如何解决

目录 什么是循环依赖? 循环依赖的原因: 如何解决循环依赖问题? 最佳实践和注意事项: 结论: 当在使用 Spring Boot 进行开发时,循环依赖(Circular Dependency)可能会成为一个常见…

C语言之数组精讲(1)

目录 数组 数组的声明(使用数组前的准备) 访问数组(数组的使用方法) 数组的遍历 数组初始化 1.在声明变量时,除了必要的情况下,都需要对变量进行初始化。 2.我们还可以像下面在声明数组时不指定元素…

mitm抓包实践---可用于投票、日常类任务运用

文章目录 一、安装mitm二、证书导入三、抓包三、后话补充 一、安装mitm 第一种方式: 官网下载 https://mitmproxy.org/downloads/ 第二种方式: py库安装 pip install mitmproxy我是第一种,不熟悉py 二、证书导入 下载证书: http://mitm.it/ 首先你要开启代理&am…

【MySQL】MySQL库的操作

MySQL库的操作 一、创建数据库创建数据库案例字符集和校验规则校验规则对数据库的影响 二、操纵数据库1、查看数据库2、查看当前正在使用的数据库3、使用数据库4、显示创建语句5、数据库删除6、数据库的修改7、备份和恢复8、查看连接情况 一、创建数据库 创建数据库的语法如下…

HarmonyOS第一课ArkTS开发语言(TypeScript快速入门)

编程语言介绍 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。要了解什么是ArkTS&…

C语言:高精度乘法

P1303 A*B Problem - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 第一次画图&#xff0c;略显简陋。 由图可以看出c的小标与x,y下标的关系为x的下标加上y的下标再减一。 由此得到&#xff1a; c [ i j - 1 ] x [ i ] * y [ j ]x #include<stdio.h> #include<st…

(第67天)RMAN Duplicate 克隆 PDB

介绍 在之前 NONCDB 版本我们经常使用 RMAN Duplicate 方式来在线搭建 DataGuard,非常方便快捷。从 12C 开始 Oracle 推出了 CDB 架构后,自然也就支持使用 Duplicate 的方式来复制 CDB,但是 12C 时还没有那么智能。 从 18C 开始进行了升级,可以支持使用 RMAN Duplicate 方…

react-webApp--响应式布局

rem响应式布局 移动端响应式布局 1.自己实现&#xff0c;需要设计好初始换算比&#xff0c;设为100px方便计算 <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, minimum-scale1.0, user-scalableno"/> <…

爬虫学习日记第九篇(爬取seebug)

目标&#xff1a;https://www.seebug.org/vuldb/vulnerabilities 需求&#xff1a;爬取cve_id及影响组件 单线程 cookie是有时效的(过一段时间就不行了&#xff0c;大概半小时左右)&#xff0c;但是并不需要登录(直接抓包拿到的请求头) import base64 import json import ur…

持续集成交付CICD:通过API方式上传Nexus制品

目录 一、实验 1.通过API方式上传Nexus制品 二、问题 1.如何通过API方式上传PNG图片 2.如何通过API方式上传tar.gz 与 ZIP文件 3.如何通过API方式上传Jar file文件 4.如何通过API方式上传制品&#xff08;maven类型的制品&#xff09;文件 5.如何下载制品 一、实验 1.通…

flink找不到隐式项

增加 import org.apache.flink.streaming.api.scala._ 即可

C语言 联合体验证 主机字节序 +枚举

联合体应用&#xff1a;验证当前主机的大小端&#xff08;字节序&#xff09; //验证当前主机的大小端 #include <stdio.h>union MyData {unsigned int data;struct{unsigned char byte0;unsigned char byte1;unsigned char byte2;unsigned char byte3;}byte; };int main…