写在前面:本文包含在windows和在kali下使用的工具,win下已做标注,其中若有问题可联系我~
kali中安装: git clone https://github.com/matthewgao/F5-steganography
> git clone https://github.com/matthewgao/F5-steganography
......
进入 F5-steganography 文件夹 打开终端
> java Extract 1.jpg -p 123456
# -p后接f5的key
打开 output.txt 文件即可
> java Embed 原图.jpg 生成图.jpg -e 隐藏的文件.txt -p 密码
打开终端输入: git clone https://github.com/crorvick/outguess
> git clone https://github.com/crorvick/outguess
......
下载成功后进入outguess文件夹,在文件夹中打开终端输入
> ./configure && make && make install
......
成功后即可使用
右键打开终端
> outguess -k 12345 -d hidden.txt 1.jpg 2.jpg
......
# -k后接密码
# -d后接要隐藏的内容
# 加密后1.jpg会覆盖2.jpg
右键打开终端(接上述)
> outguess -k 12345 -r 2.jpg out.txt
......
out.txt 中内容即为想要隐藏的 hidden.txt 中内容
也可不需要密码,即
> outguess -r 2.jpg out.txt
将图片复制到 stegdetect.exe 所在文件夹,打开 cmd 输入:
stegdetect.exe -tjopi -s 10.0 [stego_file]
-s 修改检测算法的敏感度,该值的默认值为1。检测结果的匹配度与检测算法的敏感度成正比,算法敏感度的值越大,检测出的可疑文件包含敏感信息的可能性越大。
-t 设置要检测哪些隐写工具(默认检测jopi),可设置的选项如下:
j 检测图像中的信息是否是用jsteg嵌入的。
o 检测图像中的信息是否是用outguess嵌入的。
p 检测图像中的信息是否是用jphide嵌入的。
i 检测图像中的信息是否是用invisible secrets嵌入的。
如果显示为 [stego_file]:jphide(***)
,则可以用 stegbreak 破解密码
stegbreak -r rules.ini -f password.txt -t p [stego_file]
#password.txt为自带字典
Loaded 1 files...
[stego_file]:jphide[v5](2333)
#2333为该文件jphide的密码
apt-get install steghide
有需要按 Y 即可
将 flag.txt 文件隐藏到 out.jpg 中:
steghide embed -cf out.jpg -ef flag.txt [-p 123456] # -p后接密码,可无
查看图片中嵌入的文件信息:
steghide info out.jpg
提取含有密码的隐藏内容:
steghide extract -sf out.jpg -p 123456
提取不含有密码的隐藏内容:
steghide extract -sf out.jpg
直接按回车即可
有些题目用steghide加密文件但是不给密码,此时就需要爆破,steghide本身并不支持爆破,需要一些其他的方法:https://github.com/Va5c0/Steghide-Brute-Force-Tool
python steg_brute.py -b -d [字典] -f [jpg_file]
需要安装的库:progressbar
pip install progressbar2
在github上下载脚本,网址: https://github.com/chishaxie/BlindWaterMark
安装 python前置模块
> pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
......
> sudo pip install matplotlib
......
安装成功后打开 bwm.py 所在文件夹,在文件夹中打开终端
# 1.png 为无水印原图
# 2.png 为有盲水印的图
# flag.png 为解出来的图片
> python bwm.py decode 1.png 2.png flag.png
查看 flag.png 即可
安装成功后打开 bwm.py 所在文件夹,在文件夹中打开终端
# 1.png 为无水印原图
# water.png 为水印图
# 2.png 为有盲水印图
> python bwm.py encode 1.png water.png 2.png
查看 2.png 即可
import cv2
import numpy as np
import random
import os
from argparse import ArgumentParser
ALPHA = 5
def build_parser():
parser = ArgumentParser()
parser.add_argument('--original', dest='ori', required=True)
parser.add_argument('--image', dest='img', required=True)
parser.add_argument('--result', dest='res', required=True)
parser.add_argument('--alpha', dest='alpha', default=ALPHA)
return parser
def main():
parser = build_parser()
options = parser.parse_args()
ori = options.ori
img = options.img
res = options.res
alpha = options.alpha
if not os.path.isfile(ori):
parser.error("original image %s does not exist." % ori)
if not os.path.isfile(img):
parser.error("image %s does not exist." % img)
decode(ori, img, res, alpha)
def decode(ori_path, img_path, res_path, alpha):
ori = cv2.imread(ori_path)
img = cv2.imread(img_path)
ori_f = np.fft.fft2(ori)
img_f = np.fft.fft2(img)
height, width = ori.shape[0], ori.shape[1]
watermark = (ori_f - img_f) / alpha
watermark = np.real(watermark)
res = np.zeros(watermark.shape)
random.seed(height + width)
x = range(height / 2)
y = range(width)
random.shuffle(x)
random.shuffle(y)
for i in range(height / 2):
for j in range(width):
res[x[i]][y[j]] = watermark[i][j]
cv2.imwrite(res_path, res, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
if __name__ == '__main__':
main()
python pinyubwm.py --original 1.png --image 2.png --result out.png
查看 out.png 即可,如果无法得到正常图片,可将 1.png 和 2.png 调换位置再次尝试
下载:https://github.com/livz/cloacked-pixel
python lsb.py extract [stego_file] [out_file] [password]
其余详见: https://github.com/livz/cloacked-pixel
gem install zsteg
#查看全部信息
zsteg -a 1.bmp
#提取固定通道的内容
zsteg -e b8,a,lsb,xy 1.png -> out.png
在 pngcheck.exe 所在文件夹打开cmd
pngcheck.exe -v 123.png
可检查 png 的 IDAT 块是否有问题
相关题目可参考:https://blog.csdn.net/u010391191/article/details/80818785
有关解题脚本可参考 FzWjScJ 师傅的blog:http://www.fzwjscj.xyz/index.php/archives/17/
apt install webp
需要的时候按 Y 即可
cwebp - 编码器工具:可将png转为webp
cwebp 1.png -o 2.webp
dwebp - 解码器工具:可将webp转为png
dwebp 1.webp -o 2.png
vwebp - 查看器工具:可直接查看webp格式图片
vwebp 1.webp
webpinfo - 格式查看工具:可打印出WebP文件的块级结构以及基本完整性检查
webpinfo 1.webp
其余(gif2webp、img2webp等可见官方文档)
apt-get install exiftool
需要的时候按 Y 即可
exiftool 1.jpg # 显示图片所有信息
exiftool 1.jpg | grep flag # 查看图片有关‘flag’字符的信息
exiftool * # 查看此文件夹所有图片信息
exiftool -b -ThumbnailImage attachment.jpg >flag.jpg # 提取缩略图
其余详细: https://segmentfault.com/a/1190000018032048?utm_source=tag-newest
此种加密支持对PNG、BMP、GIF、WebP和WAV格式加密,同时可以选择有无password
pip3 install stegpy
不含有密码
stegpy 'hello_world' image.png
含有密码
stegpy "hello_world" image.png -p
Enter password (will not be echoed): # 输入密码(不显示)
Verify password (will not be echoed): # 确认密码(不显示)
不含有密码
stegpy _image.png
含有密码
stegpy _image.png -p
Enter password (will not be echoed): # 输入密码(不显示)
kali中安装: sudo apt-get install fcrackzip
> sudo apt-get install fcrackzip
......
参数说明:
-c 指定字符集,格式 -c 'aA1!:'
a 表示小写字母[a-z]
A 表示大写字母[A-Z]
1 表示阿拉伯数字[0-9]
! 表示特殊字符集[!:$%&/()=?{[]}+*~#]
: 表示包含冒号之后的字符(不能为二进制的空字符),例如 a1:$% 表示 字符集包含小写字母、数字、$ 和 %
打开终端
> fcrackzip -b -c 'a1A' -l 1-10 -u 123.zip
PASSWORD FOUND!!!!: pw == qsb
参数说明:
-b 表示使用暴力破解方式
-c 'a1A' 表示使用大小写字母和数字混合破解的方式
-l 1-10 表示需要破解的密码长度为1-10
-u 表示只显示破解出来的密码,其他错误密码不显示
添加字典:
frcackzip -D -p zidian.txt -u 123.zip
PASSWORD FOUND!!!!: pw == qsb
参数说明:
-D 表示要使用字典破解
-p 表示要使用的那个字典
下载脚本:https://github.com/theonlypwner/crc32
python crc32.py reverse 你的crc32密文
下载:https://files.cnblogs.com/files/ECJTUACM-873284962/ZipCenOp.zip
在工具所在文件夹打开cmd,输入
java -jar ZipCenOp.jar r xxx.zip
如果显示success则表示成功,之后再直接解压压缩包即可
同样打开cmd,输入
java -jar ZipCenOp.jar e xxx.zip
压缩包就被伪加密了
项目地址:https://github.com/kimci86/bkcrack
前置条件:安装cmake
安装方法:https://my.oschina.net/u/4231975/blog/3187835
比较推荐第一种方法,快捷方便
apt install cmake
在安装好cmake后,在GitHub上将项目压缩包下载下来并解压,进入解压得到的文件夹,依次执行
cmake .
make
可执行文件在/bkcrack-master/src
目录下,名为bkcrack
参考项目已有的用法即可
项目地址:https://github.com/Aloxaf/p7zip
下载后解压,进入文件夹,执行sudo bash install.sh
7za e cipher.zip '-p[d4f34b9d_a6ba3461_dcd97451]'
pip install uncompyle6
uncompyle6 test.pyc > test.py
版本:Python 3.6 or later
在 stegosaurus.py 所在文件夹打开cmd,输入:
python stegosaurus.py -x [pyc_file]
附件链接:https://pan.baidu.com/s/11fIWgDovj_x4rsrKHyUMhQ
提取码:wnzu
在MP3stego文件夹中打开cmd,然后将 Decode.exe 拖到命令行里,将要解密的文件放在文件夹中
...\Decode.exe -X -P [password] [stego_mp3]
执行后会在该文件夹中生成一个 txt 文件,打开查看即可
apt-get install steghide
有需要按 Y 即可
将 flag.txt 文件隐藏到 out.jpg 中:
steghide embed -cf out.jpg -ef flag.txt [-p 123456] # -p后接密码,可无
查看图片中嵌入的文件信息:
steghide info out.jpg
提取含有密码的隐藏内容:
steghide extract -sf out.jpg -p 123456
提取不含有密码的隐藏内容:
steghide extract -sf out.jpg
直接按回车即可
有些题目用steghide加密文件但是不给密码,此时就需要爆破,steghide本身并不支持爆破,需要一些其他的方法:https://github.com/Va5c0/Steghide-Brute-Force-Tool
python steg_brute.py -b -d [字典] -f [jpg_file]
需要安装的库:progressbar
pip install progressbar2
kali下自带有一份无线密码字典:/usr/share/wordlists/rockyou.txt.gz,我们需要将其解压:
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b [MAC] [capfile]
-w 后加字典的位置(kali中自带字典的位置)
-b 后加路由器的MAC地址(应该也就是BSSID)
安装环境基于python3
python3 -m pip install --user xortool
python2似乎也可以……
pip install xortool
在想要解密的文件所在目录打开终端:
xortool (-x) -c 20 123.txt
#-x:代表文件内容为十六进制
#-c:后加出现频率最高的字符,文本内容一般是空格(20),二进制文件一般是00
这里只列出了最简单的使用方法,其余可见: https://pypi.org/project/xortool/
下载:https://pan.baidu.com/s/1qZmnPar-gfqT9OaWO_DS3g
提取码:svp9
将 lsass.dmp 文件放在 mimikatz.exe 所在目录下,关闭杀软后打开 mimikatz.exe
执行以下三条命令:
privilege::debug
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords full
依次执行以下五条命令
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 .
详细:https://www.zhuanzhi.ai/document/282c8a2293a31361d4c15b4451b5406a
create_puzzle [图片绝对路径] --size=[尺寸] --destination=[创建拼图名称]
得到的拼图所有图在一张大图上,可以配合convert
命令将其切开
如果还原的是被切开成一小块一小块的拼图,需要先将其拼在一张大图上(可用montage
命令),之后再用gaps将其还原:
gaps --image=out.jpg --generations=50 --population=120 --size=50
--image 指向拼图的路径
--size 拼图块的像素尺寸
--generations 遗传算法的代的数量
--population 个体数量
--verbose 每一代训练结束后展示最佳结果
--save 将拼图还原为图像
如果不能明确提供--size
的参数,拼图块尺寸将自适应调整,经过我的多次试验,提供--size
参数效果会更好
下载:https://github.com/hfeeki/dtmf
先将其中dtmf-decoder.py
这个脚本中读入文件的部分按照个人需求进行修改
修改后直接运行脚本即可
python dtmf-decoder.py
注:如果在py3环境下运行失败的话请换成py2环境再次运行
将信息flag{1234}
隐藏在data.txt中,结果另存为out.txt,密码为123
snow.exe -C -m "flag{1234}" -p "123" data.txt out.txt
打开out.txt,其中就有隐写的结果,也可以不指定密码进行无密钥隐写
假设out.txt中有隐写的内容,密码为123
snow.exe -C -p "123" out.txt
如果不需要密码,就把-p
省略掉
apt install stegsnow
-C : 加密时压缩数据,解密时解压数据
-f [message-file] : 将该文件中的内容隐藏在输入文本文件中
-m [message-string] : 将该字符串隐藏在输入文本文件中
-p [password] : 加解密可用密钥
其他:http://manpages.ubuntu.com/manpages/bionic/man1/stegsnow.1.html
以"hello world"作为密钥,将infile文件中的"I am lying"压缩隐藏在outfile中
stegsnow -C -m "I am lying" -p "hello world" [infile] [outfile]
提取上述加密的信息
stegsnow -C -p "hello world" [outfile]
apt-get install zbar-tools
usage: zbarimg [options] <image>...
scan and decode bar codes from one or more image files
options:
-h, --help display this help text
--version display version information and exit
-q, --quiet minimal output, only print decoded symbol data
-v, --verbose increase debug output level
--verbose=N set specific debug output level
-d, --display enable display of following images to the screen
-D, --nodisplay disable display of following images (default)
--xml, --noxml enable/disable XML output format
--raw output decoded symbol data without converting charsets
-1, --oneshot exit after scanning one bar code
-S<CONFIG>[=<VALUE>], --set <CONFIG>[=<VALUE>]
set decoder/scanner <CONFIG> to <VALUE> (or 1)
--nodbus disable dbus message
本题利用zbarimg扫码,编写shell脚本
#!/bin/sh
for i in ./frames/frame-*.png;
do
#echo $i
zbarimg -q --raw -Sbinary $i >> out
done;
-q
:安静模式,只输出扫码内容--raw
:输出原始数据,不经过任何处理与字符转换apt-get install aa3d
可使用选项
Options:
-w width Image width (Default:80)
-s step Size of repeating sequence (Default:12)
-t text Text used to generate background
-r Disable random text placement
-f file Use file as input for raster
-d Use digits instead of letters
首先构造一个字符画,假设文件命名为 1.txt
111 111
111 111
111
111111111111 111111 111 111 111 1111111 111 111111 1111111
111 1111 1111 111 111 111 111 111 111 1111 111 111 111 111
111 111 111 11111111 111 111 111 111 111 111 11111111 11111111
111 111 111 1111 1111 111 1111 111 1111 111 1111 111
111 111 111 111111 11111111111 1111111 111 111111 1111111
在终端调用aa3d
aa3d -w 100 < 1.txt
GJTR`KMJN[LSGJTR`KMJN[LSGJTR`KMJN[LSGJTR`KMJN[LSGJTR`KMJN[LSGJTR`KMJN[LSGJTR`KMJN[LSGJTR`KMJN[LSGJTR
K[\JRGF]]UVYK[\JRGF]]UVYK[\JRGF]]UVYK[\JRGF]]UVYK[\JRGF]]UYK[[\JRGF]]YK[[[\JRGF]]YK[[[\JRGF]]YK[[[\J
TVKOIYSYAZN^TVKOIYSYAZN^TVKOIYSYAZN^TVKOIYSYAZN^TVKOIYSYAZ^TVVKOIYSYA^TVVVKOIYSYA^TVVVKOIYSYA^TVVVKO
ADFM\SHEUMLZADFM\SHEUMLZADFM\SHEUMLZADFM\SHEUMLZADFM\SHEUMZADDFM\SHEUMZADDFM\SHEUMZADDFM\SHEUMZADDFM
CEYZIHVFQ[K`CEYIHVFQ[K`CEYIIHVFQK`CEYIIIHVQK``CYIIIIVQKK``YIIIIVQQKK`YIIIIIVQKK`YIIIIIVQKK`YIIIIIIVQ
RFWBU`VKCKMJRFWU`VVCKMJJFWU``VVKMJJJWU```VKMJJJWU```VKMMJJWU```VKMMMJWU````KMMMMWU````KMMMMMWU````KM
[VHPWK_E`BLB[VHWK__EBLBB[HWKK__BLBB[HWKKK_BLBBBHWKKK_BLLBBHWKKK_BLLLBHWKKKKBLLLBHWKKKKBLLLBHWKKKKKBL
B\BHNY^LWCBEB\BNY^^LCBEEBBNYY^^CBEEEBBNYY^CBEEEBBNNY^CBBEEBBNNY^CBBBEBBNNNYCBBBBEBBNNNYCBBBEBBBNNNYC
ANCNH^N\HYWVANCH^NN\YWVVACH^^NN\WVVACHH^^NNWVVACHH^^NNNWVVCHH^^NNNNWVCHHH^^NNNWVCHHHH^^NNWVCHHHHH^^N
^SWXCUEMEVIX^SWXCUEMEVIX^SWXCUEMEVIX^SWXCUEMEVIX^SWXCUEMEVIX^SWXCUEMEVIX^SWXCUEMEVIX^SWXCUEMEVIX^SWX
MVE]KO[`ZCVHMVE]KO[`ZCVHMVE]KO[`ZCVHMVE]KO[`ZCVHMVE]KO[`ZCVHMVE]KO[`ZCVHMVE]KO[`ZCVHMVE]KO[`ZCVHMVE]
立体图可以通过两个相同的图片偏移取差值的方法看到信息
先将生成的字符串截图出来
然后使用 stegsolve 的 stereogram solver 选项,依次查看图片的偏移
可以看到当偏移为96时就能还原出近乎一模一样的字符画
要用cmd
bftools.exe decode braincopter flag.png > 1.txt
bftools.exe run 1.txt > 2.png
bftools.exe decode brainloller 2.png > 3.txt
bftools.exe run 3.txt