CTF MISC --基础知识

------------------------------------------------------------------------------护网期间,闲来没事,遂作此篇

常见图片格式

注意:单纯的修改文件的扩展名文件的本质并没有变。文件格式不同的本质是底层文件编码的区别。

LSB隐写

原理

LSB:Least Significant Bit(最低有效位)

python代码

# -*- coding: UTF-8 -*-
from PIL import Image

def plus(str):
	# Python zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。
	return str.zfill(8)

def get_key(strr):
	# 获取要隐藏的文件内容
	tmp = strr

	# f = file(tmp,"rb")
	f = open(tmp, "rb")
	str = ""
	s = f.read()

	for i in range(len(s)):
		# 逐个字节将要隐藏的文件内容转换为二进制,并拼接起来
		# 1.先用ord()函数将s的内容逐个转换为ascii码
		# 2.使用bin()函数将十进制的ascii码转换为二进制
		# 3.由于bin()函数转换二进制后,二进制字符串的前面会有"0b"来表示这个字符串是二进制形式,所以用replace()替换为空
		# 4.又由于ascii码转换二进制后是七位,而正常情况下每个字符由8位二进制组成,所以使用自定义函数plus将其填充为8位
		tmp = s[i]
		# tmp = ord(tmp)
		tmp = bin(tmp)
		str = str + plus(tmp.replace('0b', ''))  # print str

	f.closed
	return str

def mod(x, y):
	return x % y;

# str1为载体图片路径,str2为隐写文件,str3为加密图片保存的路径
def func(str1, str2, str3):
	im = Image.open(str1)
	# 获取图片的宽和高
	width = im.size[0]
	print("width:" + str(width) + "\n")
	height = im.size[1]
	print("height:" + str(height) + "\n")
	count = 0
	# 获取需要隐藏的信息
	key = get_key(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:
				break
			# 下面的操作是将信息隐藏进去
			# 分别将每个像素点的RGB值余2,这样可以去掉最低位的值
			# 再从需要隐藏的信息中取出一位,转换为整型
			# 两值相加,就把信息隐藏起来了
			a = a - mod(a, 2) + int(key[count])
			# 上面这句是把信息藏在第八位,下面这个是把信息藏在第七位
			#a = a - (a % 4) + (2 * int(key[count]))
			count += 1
			if count == keylen:
				im.putpixel((w, h), (a, b, c))
				break

			b = b - mod(b, 2) + int(key[count])
			count += 1

			if count == keylen:
				im.putpixel((w, h), (a, b, c))
				break

			c = c - mod(c, 2) + int(key[count])
			count += 1

			if count == keylen:
				im.putpixel((w, h), (a, b, c))
				break

			if count % 3 == 0:
				im.putpixel((w, h), (a, b, c))

	im.save(str3)

# 原图
old = r"./input.png"
# 处理后输出的图片路径
new = r"./output.png"
# 需要隐藏的信息
enc = r"./flag.txt"

func(old, enc, new)

Stegsolve

lsb隐写

提取图片隐写的内容,可以尝试多次修改Oder settings选项

查看图通道

注意png图片可能支持透明度,但是bmp图片可能不支持透明度

可以利用该工具查看不同颜色下的图片。按点击左右键进行变换 --查看通道

同时该工具还支持对两张图片进行合并

十六进制修改

010Editor

使用方法:先将010Editor打开,然后将图片直接拖拽至工具中

EXIF隐写

Exchangeable image file format EXIF的信息包括:相机拍摄时的各种参数,比如:光圈、快门、白平衡、ISO、焦距、日期时间、定位信息等,类似图片属性信息 制作工具:MagicEXIF 元数据编辑器。

Exiftool.exe

使用方法 直接将图片拖拽至exe程序中(exiftool.exe文件不需要双击打开)

在kali中也有同名的工具 使用方法

exiftool xxx.jpg

二维码

参考链接

https://zhuanlan.zhihu.com/p/662378032   

图种

制作图种

输入如下命令
copy /b 1.jpeg+1.zip out.jpg

文件分离

foremost

一般是在kali中安装
使用方式   foremost 图片名  
文件分离后,会生成一个output文件夹,进入文件夹中可以查看到分离的结果

binwalk

binwalk 文件名      查看文件中的内容  //没有进行分离

binwalk -e 文件名字 --run-as=root      对文件进行分离  分离的结果就在当前目录下

麻子水印

Silenteye

作用 制作麻子水印图片

使用方式

将图片直接拖拽至软件中 Encode 加密 Decode 解密

点击Encode 注意密钥默认为SilentEye

生成的图片

解密同理

盲水印

盲水印是人眼无法识别到的水印

WaterMark-Python

地址:https://github.com/chishaxie/BlindWaterMark          

制作盲水印图

运行环境Python3.8.10
参数说明
python bwmforpy3.py encode 无水印的原图 水印图 有盲水印的的图  
python bwmforpy3.py encode hui.png wm.png res.png 

提取图中的盲水印

python bwmforpy3.py decode 无水印的原图 带水印的合成图 提取出来的水印图
尝试两种提取方式
python bwmforpy3.py decode hui.png res.png ans.png
python bwmforpy3.py decode hui.png res.png ans.png --oldseed  

NTFS数据流隐写

参考链接

NTFS 数据流隐写学习_ntfs隐写-CSDN博客

解密工具

随波逐流

该工具总结了多种加解密和编码的方式,同时也在不断地更新

解密

当不清楚使用的加密算法时,可以利用该工具进行一键解码,同时该工具会用星标记出可能的正确解密结果

图片隐写

文件图片--> 文件图片及隐写 可以判断图片是否被修改过,例如宽高等,同时还会自动还原出原图

CRC爆破原理 :https://blog.csdn.net/qq_47875210/article/details/126171502

 

outguess隐写

kali 安装方式   apt install outguess

当都没有结果   尝试outguess隐写

使用方式
使用outguess
输入outguess -help即可获得相关命令。
加密:
outguess -k "my secret key" -d hidden.txt demo.jpg out.jpg
加密之后,demo.jpg会覆盖out.jpg,hidden.txt的内容是要隐藏的东西。
解密:
outguess -k "my secret key" -r out.jpg hidden.txt
解密之后,解密内容放在hidden.txt中

视频查看工具

PotPlayerMini64

播放速度
加速  C
减速  X
正常速度  Z

窗口尺寸

全屏   Enter
定位

上一帧  D
下一帧  F
快进5s  ->
快进30s  Ctrl+ ->
快进60s  Shift + ->
音量
减少/增加音量   向下键   / 向上键
截屏
复制当前原画面  Ctrl+C

特殊后缀文件

.ELF文件

ELF 全称 “Executable and Linkable Format”,即可执行可链接文件格式,目前常见的Linux、 Android可执行文件、共享库(.so)、目标文件( .o)以及Core 文件(吐核)均为此格式。

可以在Linux操作系统下运行   ./文件名

.vmdk文件

使用kali对该文件进行分析分解

7z x flag.vmdk -o./

.bin文件

用工具RouterPassView打开     建议的系统Win10

RouterPassView:路由器的备份文件通常包含了像ISP的用户名重要数据/密码、路由器的登录密码,是无线网络的关键。如果不小心失去了这些密码/钥匙,也可以通过路由器配置的备份文件找回。RouterPassView就是一个找回路由器密码的工具,可以帮助你从路由器中恢复丢失的密码

结语 

  本人认为MISC方向比较杂,但是比较好入门。望与君共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值