ctf音频yinxie_ctf-图片隐写术

文件隐藏

常见文件头尾

jpg 文件头FFD8FFE0 文件尾FFD9

png 文件头89504E470D0A1A0A 文件尾AE426082

gif 文件头47494638 文件尾003B

zip 文件头504B0304 文件尾

rar 文件头Rar! 文件尾

7zip 文件头7z集' 文件尾

文件分析

工具

binwalk,kali中集成工具,用于分析文件中所包含的内容,使用方法为binwalk picturename

# binwalk carter.jpg

DECIMAL HEXADECIMAL DESCRIPTION

--------------------------------------------------------------------------------

0 0x0 JPEG image data, JFIF standard 1.01

382 0x17E Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"

3192 0xC78 TIFF image data, big-endian, offset of first image directory: 8

140147 0x22373 JPEG image data, JFIF standard 1.01

140177 0x22391 TIFF image data, big-endian, offset of first image directory: 8

以上执行结果说明这个jpg文件还隐藏着另一个jpg文件,从140147块偏移开始就是另一张jpg

文件分离

binwalk

binwalk -e filename会将结果保存在当前文件夹下

dd命令分离

dd命令详解

dd if=carter.jpg of=carter-1.jpg skip=140147 bs=1

这里if是指定输入文件,of是指定输出文件,skip是指定从输入文件开头跳过140147个块后再开始复制,bs设置每次读写块的大小为1字节

使用foremost工具分离

foremost是一个基于文件文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具,使用方式:foremost picturename,当我们使用这行命令后,foremost会自动生成output目录存放分离出文件

修改后缀名

针对利用copy命令,将两个文件以二进制方式连接起来的方式进行的图片隐写术, 即使用命令copy /b example.jpg+hide.zip output.jpg生成output.jpg的新文件,可以将文件直接改为后缀名为.zip的文件,然后直接解压即可。

修改数据

LSB来进行隐写

SB也就是最低有效位 (Least Significant Bit)。原理就是图片中的像数一般是由三种颜色组成,即三原色,由这三种原色可以组成其他各种颜色,例如在PNG图片的储存中,每个颜色会有 8bit,LSB隐写就是修改了像数中的最低的1bit,在人眼看来是看不出来区别的,也把信息隐藏起来了。譬如我们想把’A’隐藏进来的话,就可以把A转成16进制的0x61再转成二进制的01100001,再修改为红色通道的最低位为这些二进制串。

如果是要寻找这种LSB隐藏痕迹的话,可以使用Stegsolve辅助我们进行分析,使用使用Stegsolve打开文件,然后点击下面的“>” "

在这个过程中,我们要注意到,隐写的载体是PNG的格式,如果是像之前的jpg图片的话就是不行的,原因是jpg图片对像数进行了有损的压缩,你修 改的信息可能会被压缩的过程破坏。而PNG图片虽然也有压缩,但却是无损的压缩,这样子可以保持你修改的信息得到正确的表达,不至于丢失。BMP的图片也 是一样的,是没有经过压缩的,可以发现BMP图片是特别的大的,因为BMP把所有的像数都按原样储存,没有压缩的过程

gif数据隐写

使用Stegsolve还可以按帧对gif进行查看,查找其中隐写的内容,操作方法为Stegsolve——Analyse——Frame Browser。或者可以使用Namo_GIF_gr进行查看。

载体

数据在隐藏的时候,我们常常是需要先分析是数据隐藏在哪里,也就是他在利用是什么做载体,之后才可以进一步的分析是加密或编码的。这也就是说我们要 对一个图片的格式要有了解,才能知道哪些地方是可疑的,哪些是可以隐藏起信息的,会有冗余的成分在。举个例子吧,比如给了一个jpg的图片。除了我们之前 说到的隐藏在结束符之后的信息,jpg图片还可以把信息隐藏的exif的部分。exif的信息是jpg的头部插入了数码照片的信息,比如是用什么相机拍摄 的。这些信息我们也是可以控制的,用查看属性的方式可以修改一部分的信息,还可以用exif编辑器来进行编辑。Power_exif这个可以用来编辑.

更多请参考http://bobao.360.cn/learning/detail/243.html

参考文章

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql负责均衡读写分离_MySQL读写分离之负载均衡

mysql官方文档中有这么一句话:MySQL Proxy is currently an Alpha release and should not be used within production environments.So。。。使用haproxy来做这些事,以下仅供参考:环境配置master 192.168.1.106 master1s…

mysql使用技巧_MySQL使用不得不看的几个小技巧

程序中写入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。1. 优化你的MySQL查询缓存在MySQL服务器上进行查询,可以启用高速查询缓存。让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一。当同一个查询被执行多…

mysql oracle 数据类型转换_Mysql与Oracle之间的数据类型转换

[转]MYSQL 与 Oracle 之间的数据类型转换

rad linux下安装mysql_Linux(CentOS或RadHat)下MySQL源码安装

MySQL 5.6开始,需要使用g进行编译。cmake :MySQL 5.5开始,使用cmake进行工程管理,cmake需要2.8以上版本。bison :MySQL语法解析器需要使用bison进行编译。ncurses-devel :用于终端操作的开发包。zlib …

mysql5.1数据库乱码_MySql5.1以上版本中文乱码的解决方法

在my.cnf内添加以下代码输出err日志信息:[safe_mysqld]err-log /var/log/mysqld.logpid-file /var/lib/mysql/localhost.localdomain.pid在shell中输入/bin/sh /usr/bin/mysqld_safe &启动mysql,shell输出如下:110328 11:39:55 mysqld_…

mysql 命令行批量sql_命令行中执行批量SQL的方法

基础信息介绍测试库:test;测试表:user;user表定义:CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,name char(30) NOT NULL,age int(11) NOT NULL,gender tinyint(1) DEFAULT 1 COMMENT 性别:1男;…

mysql双主数据一致性_MySQL双主一致性架构优化 | 架构师之路-阿里云开发者社区...

一、双主保证高可用MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗…

spool导出姓名中文乱码_MySQL不同字符集转化标准—7步实现,杜绝乱码!

引言作为资深的DBA程序员,在工作中是否会遇到更这样的情况呢?原有数据库的字符集由于前期规划不足,随着业务的发展不能满足业务的需求。如原来业务系统用的是utf8字符集,后期有存储表情符号的需求,uft8字符集就不能满足…

appium和airtest_关于Airtest自动化测试工具

一开始知道Airtest大概是在年初的时候,当时,看了一下官方的文档,大概是类似Sikuli的一个工具,主要用来做游戏自动化的,通过截图的方式用来解决游戏自动化测试的难题。最近,移动端测试的同事尝试用它的poco库…

easyexcel 设置标题_使用easyexcel完成复杂表头及标题的导出功能(自定义样式)

如需客户端指定excel版本,只需要判断后缀名然后在controller中的.excelType(ExcelTypeEnum.XLS)做指定输出内容格式即可***(注意表格行高列宽统一设置是在实体类的类名注解上,如果需要对表格进行精细的宽高设置需要删除掉这两个注解,可以在拦截器使用row的方法进行设置)1. ## 引…

mysql distinct两列_正在检索两列,并对MySQL中的每列应用“distinct”

这是一张桌子books----------------------------| author_fname | author_lname |----------------------------| Dan | Harris || Freida | Harris || George | Saunders |----------------------------我知道如果DISTINCT用作SELECT DISTINCT author_fname, author_lname FRO…

mysql笛卡尔积 去重_MySQL入门(函数、条件、连接)

MySQL入门(四)distinct:去重mysql>:create table t1(id int,x int,y int);mysql>: insert into t1 values(1, 1, 1), (2, 1, 2), (3, 2, 2), (4, 2, 2);mysql>: select distinct * from t1; # 全部数据mysql>: select distinct x, y from t1; # 结果 1,…

nmon安装为什么重启mysql_Nmon的安装及使用

一、下载Nmon根据CPU的类型选择下载相应的版本:二、初始化工具[rootmululu ~]# cd /opt[rootmululu opt]# mkdir nmon[rootmululu opt]# cd nmon[rootmululu nmon]#wget http://sourceforge.net/projects/nmon/files/download/nmon_x86_12a.zip[rootmululu nmon]# u…

mysql join 循环_关于mysql联表的内嵌循环操作nested loop join中on和where执行顺序问题...

mysql的理论依据没找到,个人理解是先执行where的过滤条件,先关联再过滤明显做的是无用功。oracle中倒是能在执行计划中看到,先执行的是过滤条件(下面代码中最后一行)。explain plan for SELECT * FROM tmp_t2 t2 LEFT JOIN tmp_t1 t1 ON t2.i…

python非法语句是_python 如何优雅的处理大量异常语句?

bs4的链式调用很赞,所以我把soup包装了一下class MY_SOUP():包装类def __init__(self,soup):self.soup soupif soup:if soup.string:self.string soup.string.strip()else:self.string Noneelse:self.string Nonedef find(self, *args, **kw):ret self.soup.fi…

Iptables详解+实例

2019独角兽企业重金招聘Python工程师标准>>> Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则Iptables有利于…

django ipython shell_通過django的shell_plus編寫ipython腳本

Im writing a shell script which runs a command through ipython with the -c option like this:我正在編寫一個shell腳本,它通過ipython運行一個命令,使用-c選項,如下所示:ipython -c "from blah import myfunct; myfunct()"but…

阿里云服务器安装onlyoffice_阿里云服务器安装 JDK 8

欢迎关注“科技毒瘤君”&#xff01;上一期给大家分享了如何申请阿里云的免费云服务器&#xff0c;还没有看过的小伙伴可以先前往了解 >>阿里云免费服务器<<这一次将会为大家分享如何在服务器上配置 Java环境&#xff0c;这里演示使用的系统为Ubuntu 18.04 64位&am…

js发送请求

1.Chrome控制台中 net::ERR_CONNECTION_REFUSED js频繁发送请求&#xff0c;有可能连接被拒绝&#xff0c;可用setTimeout&#xff0c;过几秒发送&#xff0c;给个缓冲时间 var overlayAnalystService L.supermap.spatialAnalystService(serviceUrl); setTimeout(function () …