LSB低位隐写(菜鸡理解)
LSB低位隐写
近期新学会的加密方式(不愧是我)
LSB低位隐写原理
基于不可感知的要求,即数据的变化几乎不会引起使用的者的察觉,将水印信息嵌入到数据的最低有效位(Least Significant Bit),也就是将图片的RGB数值转换为二进制数据,然后用水印替换掉最低位,这种变化对于人眼来说是不可察觉的。当然,水印的形式也是多种多样的,有图片,文字等。这里主要讲文字(图片还是没搞太懂,之后肯定会学会的,立个flag!!)
注意!!
1.预先下的包(py代码解决)
from PIL import Image
2.LSB低位隐写一般用于bmp和png图片
思路
(1)获取要隐藏的数据,一般这里不管是什么,我们都可以理解为字符串。
(2)将获取到的字符串二值化,即按照一定规则转换为二进制数据,一般是8位(不涉及中文隐写,中文占2个),不够的前面补0,一定要测试好对应的解码方法。
(3)准备好宿主图像,安装好python环境和PIL。
(4)获取图像信息(主要是高度和宽度),根据二值化后的字符串的长度,对宿主图像的像素进行遍历,然后将数据依次写入对应像素的最低有效位,写入完成之后跳出循环,对目标图像进行持久化即可得到载密图像。
代码
120
121
122
123
124
125
#coding=utf-8
#coding=utf-8
try:from PIL import Imagefrom PIL import ImageFile
except:import osos.system('pip install Pillow')from PIL import Imagefrom PIL import ImageFileImageFile.LOAD_TRUNCATED_IMAGES=Truedef full_eight(str):return str.zfill(8)
def get_text_bin(strr):string=""s_text=strr.encode()for i in range(len(s_text)):string=string+full_eight(bin(s_text[i]).replace('0b',''))return string
def mod(x,y):return x%y
def tell_you_bad(str1,str2,str3):im=Image.open(str1)width=im.size[0]height=im.size[1]count=0key=get_text_bin(str2)keylen=len(key)for h in range(0,height):for w in range(0,width):pixel=im.getpixel((w,h))a=pixel[0]b=pixel[1]c=pixel[2]if count==keylen:breaka=a-mod(a,2)+int(key[count])count+=1if count==keylen:im.putpixel((w,h),(a,b,c))breakb=b-mod(b,2)+int(key[count])count+=1if count==keylen:im.putpixel((w,h),(a,b,c))breakc=c-mod(c,2)+int(key[count])count+=1if count==keylen:im.putpixel((w,h),(a,b,c))breakif count%3==0:im.putpixel((w,h),(a,b,c))im.save(str3)
def tell_you_fun(le,str1):a=""b=""im = Image.open(str1)lenth = le*8width = im.size[0]height = im.size[1]count = 0for h in range(0, height):for w in range(0, width):pixel = im.getpixel((w, h))if count%3==0:count+=1b=b+str((mod(int(pixel[0]),2)))if count ==lenth:breakif count%3==1:count+=1b=b+str((mod(int(pixel[1]),2)))if count ==lenth:breakif count%3==2:count+=1b=b+str((mod(int(pixel[2]),2)))if count ==lenth:breakif count == lenth:breakst=""for i in range(0,len(b),8):stra = int(b[i:i+8],2)st+=chr(stra)return st
def main():print("加密(1) OR 解密(2):",end=' ')choice=int(input())if choice==1:try:print("[+]加密图片:",end=' ')old=input()print("[+]加密文字(以#号结束):",end=' ')kkk=input()print("[+]加密图片保存重命名:",end=' ')new=input()tell_you_bad(old,kkk,new)print("[+]Fun Picture done!")except:print("[-]未找到此图片,请检查图片名和路径")if choice==2:le = 30try:print("[+]解密图片:",end=' ')new = input()word=tell_you_fun(le,new).split('#')print('[+]Picture Tell You: ',word[0])except:print("[-]未找到此图片,请检查图片名和路径")
if __name__=="__main__":main()
总结
1.这种方法隐写比较容易发现
2.加密过程有点难理解
写的还是比较粗糙,会慢慢添加的
LSB低位隐写(菜鸡理解)相关推荐
- 关于LSB图片隐写的解法
关于LSB图片隐写的解法 LSB全称为 least significant bit,是最低有效位的意思.Lsb图片隐写是基于lsb算法的一种图片隐写术. 隐写是一种信息隐藏技术,这项技术目标是使对方对 ...
- python图片隐写_机窝安全--LSB图片隐写
人类能说识别大概1000万中颜色,而BMP等的三原色有从0x00~0xFF,也就是有256的3次方,大概是1600多万,也就是说人类大概有600万颜色无法识别,但是机器并不是通过像素识别,而是通过该像 ...
- 信息隐藏隐写系统框架
信息隐藏中隐写是其中很重要的一部分.本文通过一段时间的CTF的学习结合个人CTF比赛杂项选手的刷题经历总结.对一部分自己所学过的隐写进行系统的概括. 隐写 隐写相关概念 定义 隐写分析(stegana ...
- CTF学习之MISC之图片隐写与文档隐写
CTF学习之MISC之图片隐写 隐写术概述 图片隐写技术 图片EXIF信息隐写 图片LSB低位隐写 隐写术(Stega) 隐写术(Steganography,简写Stega) 一门关于信息隐藏的技巧与 ...
- laravel改代码没变化_菜鸡程序员是如何写代码的?
每个程序员都要历经从菜鸡到大牛过程蜕变胡过程.当初大家起点都差不多,工作多年后,有些人依然停留在菜鸡,有些人却已成为大牛,所有的事情,都是一点一滴习惯养成.让我们看看菜鸡程序员是如何写代码的?有可能找 ...
- 基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能
文章目录 前言 一.图像处理基础 二.LSB数字隐写算法 三.LSB数字隐写算法实现 四.数字隐写和提取过程 总结 前言 已经好久没写博客了,最近是在有些忙,但是忙里偷闲写一篇新学的知识点,所以准备写 ...
- LSB顺序+随机隐写和提取(matlab)
LSB 首先肯定要清楚什么是LSB图像隐写,这里我推荐一个文章 LSB图片隐写 顺序 其实我觉得代码上没什么好解释的,只是按照这个LSB的原理进行操作. 不过我为了能更好.更方便的得到隐写的信息,当要 ...
- 图片LSB隐写(java)
一.隐写原理 LSB隐写原理就是图片中的像素一般是由三种颜色组成,即三原色(红绿蓝).由这三种原色可以组成其他各种颜色,在png图片的存储中,每个颜色占有8bit,即有256种颜色,一共包含256的三 ...
- 浅谈LSB隐写解题与出题
点击"蓝字"关注,获取更多技术内容! 前言:LSB隐写在CTF中属于出现得比较多的类型.这篇文章对LSB隐写的原理,解题方法,出题脚本,以及LSB隐写特性进行研究. LSB隐写原理 ...
最新文章
- 同义词词林 java_基于同义词词林扩展版的词语相似度计算
- python环境搭建_搭建Python编程环境
- 浅析如何才能提高网站的信息交互能力?
- 点云插值:三维平面参数确定-不共线三点的平面方程
- 老赖整治升级,不还钱直接扣微信钱包!
- django-一对一关系
- 问题解决 xenapp6/6.5发布资源管理器explorer应用不能打开 一闪而过
- BZOJ2059: [Usaco2010 Nov]Buying Feed 购买饲料
- c51单片机蜂鸣器程序C语言响,单片机蜂鸣器响生日快乐编程程序
- c语言计算器程序代码 链栈,【C语言】简易科学计算器源代码(链栈应用)(原创).doc...
- centos 安装 Pip 的方法总结
- Linux shell脚本详解及实战(二)——shell脚本之分支
- 离地球近的星星,远离情况怎样?
- 2021全国职业技能大赛-网络安全赛题解析总结②(超详细)
- 医学影像-深度学习综述
- js 时间转东八区_js将UTC时间转化为当地时区时间
- 怎么生成a类型的对象 java_用一个 java 程序! 写一个类A, 该类创建的对象可以调用方法f输出英文字母表,然后再编写...
- 按址索骥,直捣黄龙-指针法在字符串str中每个ch2字符后都添加一个ch3字符
- HCSR04超声波传感器驱动
- 巨量算数 Data解密