Fork me on GitHub
pikachu's Blog

misc_tools

前言

图片相关

jpg

f5-steganography (F5隐写+需要passwd)

  • 安装
1
git clone https://github.com/matthewgao/F5-steganography
  • 使用: 进入 F5-steganography 文件夹
1
2
java Extract 1.jpg -p 123456
// -p后接f5的key

outguess (图片隐写)

  • 安装
1
2
3
git clone https://github.com/crorvick/outguess
cd outguess
./configure && make && make install
  • 加密
1
2
3
4
outguess -k 12345 -d hidden.txt 1.jpg 2.jpg
// -k后接密码
// -d后接要隐藏的内容
// 加密后1.jpg会覆盖2.jpg
  • 解密
1
2
3
4
outguess -k 12345 -r 2.jpg out.txt
// out.txt 中内容即为想要隐藏的 hidden.txt 中内容
// 也可不需要密码
outguess -r 2.jpg out.txt

stegdetect(检查jpg图片隐写方法_win)

1
2
3
4
5
6
7
8
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 破解密码
1
stegbreak -r rules.ini -f password.txt -t p [stego_file]

jphide

  • 可使用工具 JPHS

steghide (图片或音频隐藏文件)

  • 安装
1
apt-get install steghide
  • 加密
1
steghide embed -cf out.jpg -ef flag.txt [-p 123456] # -p后接密码,可无
  • 解密
1
2
3
4
5
6
// 查看图片中嵌入的文件信息:
steghide info out.jpg
// 提取含有密码的隐藏内容:
steghide extract -sf out.jpg -p 123456
// 提取不含有密码的隐藏内容:
steghide extract -sf out.jpg
1
2
3
python steg_brute.py -b -d [字典] -f [jpg_file]
// 需要安装的库: progressbar
pip install progressbar2

png & bmp

BlindWaterMark (盲水印)

第一种 正常的bwm

1
2
3
// 安装python前置模块
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
sudo pip install matplotlib
  • 加密
1
2
3
4
python bwm.py encode 1.png water.png 2.png
// 1.png 为无水印原图
// water.png 为水印图
// 2.png 为有盲水印图
  • 解密
1
2
3
4
python bwm.py decode 1.png 2.png flag.png
// 1.png 为无水印原图
// 2.png 为有盲水印的图
// flag.png 为解出来的图片

第二种 频域盲水印

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 调换位置再次尝试

lsb的py脚本解密(lsb隐写+需要passwd)

1
python lsb.py extract [stego_file] [out_file] [password]

zsteg (lsb隐写)

1
2
3
gem install zsteg
zsteg 1.bmp
// 一般来讲用 zsteg 解密的文件都为 bmp 文件

pngcheck(检查IDAT块_win)

1
pngcheck.exe -v 123.png

WebP

  • 安装 (kali)
1
apt install webp
  • cwebp - 编码器工具:可将 png 转为 webp
1
cwebp 1.png -o 2.webp
  • dwebp - 解码器工具:可将 webp 转为 png
1
dwebp 1.webp -o 2.png
  • vwebp - 查看器工具:可直接查看 webp 格式图片
1
vwebp 1.webp
  • webpinfo - 格式查看工具:可打印出 WebP 文件的块级结构以及基本完整性检查
1
webpinfo 1.webp

exiftool(查看图片exif信息)

  • 安装 (kali)
1
apt-get install exiftool
  • 使用
1
2
3
4
exiftool 1.jpg   // 显示图片所有信息
exiftool 1.jpg | grep flag // 查看图片有关‘flag’字符的信息
exiftool * // 查看此文件夹所有图片信息
exiftool -b -ThumbnailImage attachment.jpg >flag.jpg

stegpy(支持多种文件加密)

  • 此种加密支持对PNG、BMP、GIF、WebP和WAV格式加密,同时可以选择有无password
  • 安装 (kali)
1
pip3 install stegpy
  • 加密
    • 不含有密码
1
stegpy 'hello_world' image.png
- 含有密码
1
2
3
stegpy "hello_world" image.png -p
Enter password (will not be echoed): // 输入密码(不显示)
Verify password (will not be echoed): // 确认密码(不显示)
  • 解密
    • 不含有密码
1
stegpy _image.png
- 含有密码
1
2
stegpy _image.png -p
Enter password (will not be echoed): // 输入密码(不显示)

压缩包相关

crc值爆破 (zip包碰撞crc值)

1
python crc32.py reverse 你的crc32密文

压缩包密码爆破

ZipCenOp(zip伪加密)

  • 加密
1
java -jar ZipCenOp.jar e xxx.zip
  • 解密
1
java -jar ZipCenOp.jar r xxx.zip

pyc文件相关

uncompyle6(pyc文件反编译)

1
2
pip install uncompyle6
uncompyle6 test.pyc > test.py

Stegosaurus(pyc隐写_win)

1
2
// 版本:Python 3.6 or later
python stegosaurus.py -x [pyc_file]

音频相关

MP3stego(MP3隐写_win)

1
...\Decode.exe -X -P [password] [stego_mp3]

steghide(图片或音频隐藏文件)

  • 安装(kali中)
1
apt-get install steghide
  • 加密
1
2
steghide embed -cf out.jpg -ef flag.txt [-p 123456]
// -p后接密码,可无
  • 解密
1
2
3
4
5
6
// 查看图片中嵌入的文件信息:
steghide info out.jpg
// 提取含有密码的隐藏内容:
steghide extract -sf out.jpg -p 123456
// 提取不含有密码的隐藏内容:
steghide extract -sf out.jpg
1
2
3
python steg_brute.py -b -d [字典] -f [jpg_file]
// 需要安装的库:progressbar
pip install progressbar2

其它

aircrack-ng(爆破wifi密码)

  • kali下自带有一份无线密码字典:/usr/share/wordlists/rockyou.txt.gz,我们需要将其解压
1
2
3
4
5
cd /usr/share/wordlists/rockyou.txt.gz
gzip -d rockyou.txt.gz
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b [MAC] [capfile]
// -w 后加字典的位置(kali中自带字典的位置)
// -b 后加路由器的MAC地址(应该也就是 BSSID)

xortool(猜测xor加密的密码长度及值)

1
2
3
xortool (-x) -c 20 123.txt
// -x:代表文件内容为十六进制
// -c:后加出现频率最高的字符,文本内容一般是空格(20),二进制文件一般是00

mimikatz(抓取lsass密码)

1
2
3
privilege::debug
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords full

gaps (拼图)

  • 安装
1
2
3
4
5
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 .
  • 创建拼图
    • 得到的拼图所有图在一张大图上,可以配合 convert 命令将其切开
1
create_puzzle [图片绝度路径] --size=[尺寸] --destination=[创建拼图名称]
  • 还原拼图
    • 如果还原的是被切开成一小块一小块的拼图,需要先将其拼在一张大图上(可用 montage 命令),之后再用 gaps 将其还原:
1
2
3
4
5
6
7
8
gaps --image=out.jpg --generations=50 --population=120 --size=50

--image 指向拼图的路径
--size 拼图块的像素尺寸
--generations 遗传算法的代的数量
--population 个体数量
--verbose 每一代训练结束后展示最佳结果
--save 将拼图还原为图像

dtmf2num(电话音解码)

---------------- The End ----------------
谢谢大爷~

Author:pikachu
Link:https://hitcxy.com/2020/misc-tools/
Contact:hitcxy.cn@gmail.com
本文基于 知识共享署名-相同方式共享 4.0 国际许可协议发布
转载请注明出处,谢谢!