图片隐写(一)
文件隐藏
binwalk
- binwalk -e filename
foremost
- foremost filename
steghide & stegseek
Install
- sudo apt-get install steghide
- stegseek
Use
- steghide extract -sf filename -p password
- time stegseek secret.file aaa.txt
dd
文本隐藏
- 二进制文件末尾 or 文中(明文 & encode)
- 属性
- 010editor + 模板
- xxd
WPS隐写
- 背景色文字覆盖
- 文字缩小
- word隐藏文字
- 文档加密
图片隐写
文件头
PNG

JPG
- begin: FF D8
- end: FF D9

BMP -----PS

GIF

考察形式
- 虚假格式
- 删除文件头
- 文件逆写
- exif信息 -----kali (exiftool filename)
拼图
ImageMagick
- website:www.imagemagick.org
Use
- magick.exe montage *.png -tile 宽x高 -geometry 被拼接图片宽高 输出文件位置
gaps
Install
git clone https://github.com/nemanja-m/gaps.git
cd gaps
pip install -r requirements.txt
sudo apt-get install python-tk
pip install -e .
Use
- gaps --image=flag.jpg --generations=50 --population=180 --size=125 --verbose
- gaps --image=图片名 --generations=拼图/迭代次数 --population=图片个数 --size=图片大小 --verbose实时显示
盲水印
-
盲水印是一种特殊的图像水印,它利用光学技术将文字或图像的某一部分隐藏起来而形成特殊的水印
-
bwm
宽高隐藏
- 一般来讲对于图像宽高不符的问题可以直接010修改
JPG
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VIe71GOJ-1684509046218)(\Pic\JPG1.png)]](https://img-blog.csdnimg.cn/57026ba4f4704baea6c12ef6ddefffdb.png)
BMP
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W9aHkycj-1684509046219)(\Pic\BMP1.png)]](https://img-blog.csdnimg.cn/b0eb60dac9934175a8d28b17cfe43279.png)
png
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PJT5Qov1-1684509046219)(\Pic\PNG1.png)]](https://img-blog.csdnimg.cn/2b025807ac384ebc8173d80446bc5d11.png)
-
pngcheck
-
在linux中,宽高有问题的png图片,也就是CRC校验错误的图片无法打开,会有如下报错
shack.png CRC error in chunk IHDR (computed 52e1fc4b, expected be917539) ERROR: shack.png -
CRC32宽高爆破
import struct
import zlibdef hexStr2bytes(s):b = b""for i in range(0,len(s),2):temp = s[i:i+2]b +=struct.pack("B",int(temp,16))return bstr1="49484452" # IHDR
str2="0806000000"
bytes1=hexStr2bytes(str1)
bytes2=hexStr2bytes(str2)
wid,hei = 1918,864 # W & hcrc32 = "0x7dc73f7f" # CRC32for w in range(wid,wid+2000):for h in range(hei,hei+2000):width = hex(w)[2:].rjust(8,'0')height = hex(h)[2:].rjust(8,'0')bytes_temp=hexStr2bytes(width+height)if eval(hex(zlib.crc32(bytes1+bytes_temp+bytes2))) == eval(crc32):print(hex(w),hex(h))
LSB
- LSB
- stegsolve.jar
GIF
单帧存放数据
- 提取帧
- Releases · evanolds/GIFFrame (github.com)
- stegsolve
帧拼图
-
提取帧 -----kali (convert)
-
拼合 -----kali (montage)
-
GIF动态图片分解,多帧动态图分解成多张静态图片_图片工具网页版 (sioe.cn)
convert +adjoin glance.gif flag%03d.gif
convert +append flag*.gif res.gif
编码隐写
- 对编码过程中无用的多余字节进行flag填充,从而打到隐藏数据的目的
Base64隐写
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r2xAnbyd-1684509046219)(C:\Users\27770\Desktop\meet\Pic\base64.png)]](https://img-blog.csdnimg.cn/a8a1e289b2064b5cac556e54e769ffbe.png)
- 特征:加密解密后结果不同
def base64_stego(lines):alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'flag = ''temp = 0bit = 0for i in lines:if i[-1] != '=': # 无等号continueelif i[-2] != '=': # 单等号,取出倒数第二个字符的后两位bit += 2 temp = (temp << 2) + (alphabet.find(i[-2]) & 0x3)else: # 双等号,取出倒数第三个字符的后四位bit += 4 temp = (temp << 4) + (alphabet.find(i[-3]) & 0xf)if bit == 8: # 所取bit够一个字节,转为chrbit = 0flag += chr(temp)temp = 0elif bit > 8: # 4+2+4,取8位,保存多余两位bit = 2flag += chr(temp >> 2)temp = temp & 0x3return flag
Else
像素提取
from PIL import Image
# open file
filename =
image = Image.open(filename)
# select format
image = image.convert("RGB")
# Select coordinates
x =
y =
rgb = image.getpixel((x, y))
print(rgb)
01串转二维码
import qrcode
from PIL import Image# 读取33*33的01矩阵
with open('matrix.txt', 'r') as f:matrix = [[int(x) for x in line.strip().split()] for line in f.readlines()]# 根据01矩阵生成二维码图片
img = Image.new('RGB', (33, 33), color='white')
pixels = img.load()
for y in range(33):for x in range(33):if matrix[y][x] == 1:pixels[x, y] = (0, 0, 0) # 黑色像素
# 保存二维码图片
img.save('qrcode.png')
相关文章:
图片隐写(一)
文件隐藏 binwalk binwalk -e filename foremost foremost filename steghide & stegseek Install sudo apt-get install steghidestegseek Use steghide extract -sf filename -p passwordtime stegseek secret.file aaa.txt dd 文本隐藏 二进制文件末尾 or 文…...
Vivado 下 IP核 之ROM 读写
目录 Vivado 下 IP核 之ROM 读写 1、实验简介 2、ROM IP 核简介 3、ROM IP 核配置 3.1、创建 ROM 初始化文件 3.2、单端口 ROM 的配置 3.3、双端口 ROM 的配置 3.4、ROM IP 核的调用 (1)ROM 顶层模块代码 (2)ROM IP 核仿…...
朗诵素材-《诵四季诗韵,咏师恩师德》
女:中华五千年的悠久历史,孕育了底蕴深厚的民族文化。 男:华夏源远流长的经典诗文, 女:是文化艺苑中经久不衰的瑰宝。 男:在那些脍炙人口的诗句里,凝聚着华光熠熠的民族精魂。 女࿱…...
CHB-麻省理工学院头皮脑电图数据库
数据库介绍 该数据库在波士顿儿童医院收集,包括患有顽固性癫痫发作的儿科受试者的脑电图记录。受试者在停用抗癫痫药物后被监测长达几天,以表征他们的癫痫发作并评估他们手术干预的候选资格。 数据库链接:https://physionet.org/content/chb…...
传输层协议
目录 传输层 端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) netstat pidof UDP协议UDP协议端格式编辑 UDP的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 TCP协议 TCP协议段格式 确认应答(ACK)机制 超时重传机制 连…...
公司新招了个字节拿36K的人,让我见识到了什么才是测试扛把子......
5年测试,应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目开发,测试,调试和发布的流程,而且还应该能全面掌握数据库等方面的技能,如果技能再高些的话,甚至熟悉分…...
pytorch rpc如何实现分物理机器的model parallel
因为业务需要,最近接到一项任务,是如何利用pytorch实现model parallel以及distributed training。搜罗了网上很多资料,以及阅读了pytorch官方的教程,都没有可参考的案例。讲的比较多的是data parallel,关于model paral…...
APP服务端架构的演变
大家好,我是易安! 早期2013年的时候,随着智能设备的普及和移动互联网的发展,移动端逐渐成为用户的新入口,各个电商平台都开始聚焦移动端App,如今经历了10年的发展,很多电商APP早已经没入历史的洪…...
EasyRecovery16适用于Windows和Mac的专业硬盘恢复软件
无论你对数据恢复了解多少, 我们将为您处理所有复杂的流程并简化恢复!适用于Windows和Mac的 专业硬盘恢复软件 硬盘数据无法保证绝对安全。有时会发生数据丢失,需要使用硬盘恢复工具。支持恢复不同存储介质数据:硬盘、光盘、U盘/移动硬盘、数…...
详解Jetpack Compose中的状态管理与使用
前言 引用一段官方描述,如下 由于 Compose 是声明式工具集,因此更新它的唯一方法是通过新参数调用同一可组合项。这些参数是界面状态的表现形式。每当状态更新时,都会发生重组。因此,TextField 不会像在基于 XML 的命令式视图中那…...
改进YOLOv7 | 头部解耦 | 将YOLOX解耦头添加到YOLOv7 | 涨点杀器
改进YOLOv7 | 头部解耦 | 将YOLOX解耦头添加到YOLOv7 论文地址:https://arxiv.org/abs/2107.08430 文章目录 改进YOLOv7 | 头部解耦 | 将YOLOX解耦头添加到YOLOv71. 解耦头原理2. 解耦头对收敛速度的影响3. 解耦头对精度的影响4. 代码改进方式第一步第二步第三步第四步第五步参…...
第七章 中断
中断是什么,为什么要有中断 并发是指单位时间内的累积工作量。 并行是指真正同时进行的工作量。 一个CPU在一个时间只能执行一个进程,任何瞬间任务只在一个核心上运行。 而CPU外的设备是独立于CPU的,它与CPU同步运行,CPU抽出一点…...
1116 Come on! Let‘s C(38行代码+详细注释)
分数 20 全屏浏览题目 作者 CHEN, Yue 单位 浙江大学 "Lets C" is a popular and fun programming contest hosted by the College of Computer Science and Technology, Zhejiang University. Since the idea of the contest is for fun, the award rules are f…...
深入学习《c语言函数》
📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。 c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。 本章学习函数。 让我们开启c语言学习之旅吧…...
Pytorch从零开始实现Vision Transformer (from scratch)
Pytorch从零开始实现Vision Transformer 前言一、Vision Transformer架构介绍1. Patch Embedding2. Multi-Head Attention3. Transformer BlockFeed Forward 二、预备知识1. Einsum2. Einops 三、Vision Transformer代码实现0. 导入库1. Patch Embedding2. Residual & Norm…...
ES6函数新增了哪些扩展?
目录 一、参数二、属性函数的length属性name属性 三、作用域四、严格模式五、箭头函数 一、参数 ES6允许为函数的参数设置默认值 function log(x, y World) {console.log(x, y); }console.log(Hello) // Hello World console.log(Hello, China) // Hello China console.log(…...
【firewalld防火墙】
目录 一、firewalld概述二、firewalld 与 iptables 的区别1、firewalld 区域的概念 三、firewalld防火墙默认的9个区域四、Firewalld 网络区域1、区域介绍2、firewalld数据处理流程 五、firewalld防火墙的配置方法1、使用firewall-cmd 命令行工具。2、使用firewall-config 图形…...
CNNs: ZFNet之CNN的可视化网络介绍
CNNs: ZFNet之CNN的可视化网络介绍 导言Deconvnet1. Unpooling2. ReLU3. Transpose conv AlexNet网络修改AlexNet Deconv网络介绍特征可视化 导言 上一个内容,我们主要学习了AlexNet网络的实现、超参数对网络结果的影响以及网络中涉及到一些其他的知识点࿰…...
云原生之深入解析Airbnb的动态Kubernetes集群扩缩容
一、前言 Airbnb 基础设施的一个重要作用是保证我们的云能够根据需求上升或下降进行自动扩缩容,我们每天的流量波动都非常大,需要依靠动态扩缩容来保证服务的正常运行。为了支持扩缩容,Airbnb 使用了 Kubernetes 编排系统,并且使…...
Django框架之模板其他补充
本篇文章是对django框架模板内容的一些补充。包含注释、html转义和csrf内容。 目录 注释 单行注释 多行注释 HTML转义 Escape Safe Autoescape CSRF 防止csrf方式 表单中使用 ajax请求添加 注释 单行注释 语法:{# 注释内容 #} 示例: {# 注…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
