文件头尾 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 .zip的文件头:50 4 B 03 04 14 00 08 00 .rar的文件头:52 61 72 21 .rar的文件尾:C4 3 D 7 B 00 40 07 00 .7 z的文件头:37 7 A BC AF 27 1 C .pyc的文件头:03 F3 0 D 0 A .jpg的文件头:FF D8 FF E0 00 10 4 A 46 49 46 00 01 .png的文件头:89 50 4 e 47 0d 0 a 1 a 0 a 文件尾:49 45 4 E 44 AE 42 60 82 .gif的文件头:47 49 46 38 39 61 (GIF89A)或 47 49 46 38 37 61 (GIF87A) .gif的文件尾:00 3 B .gz的文件头:1 F 8 B 08 00 .pyc的文件头:03 F3 0 D 0 A .psd的文件头:38 42 50 53 TIFF (tif),文件头:49492A00 Windows [Bitmap](https://so.csdn.net/so/search?q=Bitmap&spm=1001.2101 .3001.7020 ) (bmp),文件头:424 D CAD (dwg),文件头:41433130 Adobe Photoshop (psd),文件头:38425053 Rich Text Format (rtf),文件头:7 B5C727466 XML (xml),文件头:3 C3F786D6C HTML (html),文件头:68746 D6C3E Email [thorough only] (eml),文件头:44656 C69766572792D646174653A Outlook Express (dbx),文件头:CFAD12FEC5FD746F Outlook (pst),文件头:2142444 E MS Word/Excel (xls.or.doc),文件头:D0CF11E0 MS Access (mdb),文件头:5374616 E64617264204A WordPerfect (wpd),文件头:FF575043 Postscript (eps.or.ps),文件头:252150532 D41646F6265 Adobe Acrobat (pdf),文件头:255044462 D312E Quicken (qdf),文件头:AC9EBD8F Windows Password (pwl),文件头:E3828596 Wave (wav),文件头:57415645 AVI (avi),文件头:41564920 Real Audio (ram),文件头:2 E7261FD Real Media (rm),文件头:2E524D46 MPEG (mpg),文件头:000001 BA MPEG (mpg),文件头:000001B3 Quicktime (mov),文件头:6D6F6F76 Windows Media (asf),文件头:3026 B2758E66CF11 MIDI (mid),文件头:4D546864 M4a,文件头:00000018667479704 D3441 !!1 .PNG文件的前16 字节是已知的:89 50 4 E 47 0 D 0 A 1 A 0 A 00 00 00 0 D 49 48 44 52
图片 隐写一把梭
GitHub Aperi’Solve (aperisolve.fr)
JPG steghide:通过密码隐藏信息
1 steghide extract -sf test.jpg -p 123456
stegseek:配套上面工具,爆破密码
Stegdetect:针对jpg隐写,支持outguess,jsteg,jphide,invisible
F5-steganography-master
1 2 3 4 5 java Extract beautiful.jpg -p passwd java Extract beautiful.jpg
outtguess
PNG zsteg:图片lsb快速分析
1 2 3 zsteg -a 图片名 zsteg -e 通道 图片名
cloacked-pixel:可加密的lsb
1 2 3 python2 lsb.py analyse 路径 python2 lsb.py extract 路径 out 密码 (python lsb.py extract -i "路径" -o out.txt -p 密码)
盲水印
爆破宽高
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import binascii import struct crcbp = open ("1.png" , "rb" ).read () #打开图片 crc32frombp = int (crcbp[29:33] .hex (),16 ) #读取图片中的CRC校验值print (crc32frombp) for i in range (4000 ): #宽度1 -4000 进行枚举 for j in range (4000 ): #高度1 -4000 进行枚举 data = crcbp[12:16] + \ struct.pack ('>i' , i)+struct.pack ('>i' , j)+crcbp[24:29] crc32 = binascii.crc32 (data) & 0 xffffffff #print (crc32) if (crc32 == crc32frombp): #计算当图片大小为i :j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定 print (i , j) print ('hex:' , hex (i), hex (j)) exit (0 )
IDAT块隐写:010提取数据后解压
1 2 3 4 5 6 import zlibimport binascii IDAT = "789C5D91011280400802BF04FFFF5C75294B5537738A21A27D1E49CFD17DB3937A92E7E603880A6D485100901FB0410153350DE83112EA2D51C54CE2E585B15A2FC78E8872F51C6FC1881882F93D372DEF78E665B0C36C529622A0A45588138833A170A2071DDCD18219DB8C0D465D8B6989719645ED9C11C36AE3ABDAEFCFC0ACF023E77C17C7897667" .decode('hex' ) result = binascii.hexlify(zlib.decompress(IDAT))print (result.decode('hex' ))print (len (result.decode('hex' )))
IDTAchunk:010或者tweakpng分析IDAT块,提取异常的加上文件头尾后爆破crc
GIF 1 identify -format "%s %T \n" flag.gif
1 2 3 4 5 6 montage flag*.png -tile x1 -geometry +0 +0 flag.png #合并图片 `.tile`:用于指定拼接的布局,格式为 `rowsxcolumns`。例如,`-tile 2 x3` 表示将图像分成 2 行 3 列。 `-geometry`:用于指定每个图像块的大小和位置。例如,`-geometry +0 +0 ` 表示没有间隙地拼接图像。 `-gaps`:在图像之间添加间隙,例如 `-gaps 10 x10`。
BMP 脚本 1 2 3 4 5 6 分解GIF的命令:convert glance.gif flag.png 水平镜像翻转图片:convert -flop reverse.jpg reversed.jpg 垂直镜像翻转图片:convert -flip reverse.jpg reversed.jpg 合成图片的命令:montage flag*.png -tile x1 -geometry +0+0 flag.png -tile是拼接时每行和每列的图片数,这里用x1,就是只一行 -geometry是首选每个图和边框尺寸,我们边框为0,图照原始尺寸即可
1 2 3 4 5 6 7 8 9 10 11 12 lsb脚本from PIL import Image width = 1532 height = 961img =Image.open("41.png")for i in range(width): for j in range(height): pi =img.getpixel((i,j)) if (pi[3] == 255): print (1,end ='' ) else : print (0,end ='' )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 傅里叶盲水印 import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg = cv.imread ('/root/桌面/flag.jpg' , 0 ) #直接读为灰度图像,不过此题已经是灰度图片了 f = np.fft .fft2 (img) #做频率变换 fshift = np.fft .fftshift (f) #转移像素做幅度谱 s1 = np.log (np.abs (fshift))#取绝对值:将复数变化成实数取对数的目的为了将数据变化到0 -255 plt.subplot (121 ) plt.imshow (img , 'gray' ) plt.title ('original' ) plt.subplot (122 ) plt.imshow (s1,'gray' ) plt.title ('center' ) plt.show ()
文档 1 oletools:提取Microsoft office等文件的VBA宏代码
1 2 wbStego4open:PDF,TXT,HTM.BMP隐写 打开有NULL 字符
1 snow 隐写:属于空格隐写的一种,还有me隐写,可以用于图片的16 进制文本
1 NtfsStreamsEditor2 :txt文件检查
1 DeEgger Embedder :PDF/ 图片隐写
音频 慢扫描电视sstv:e2eSoft
NtfsStreamsEditor2
频谱图,波形图
DTMF提取:根据拨号音
http://www.dialabc.com/sound/detect/
wav deepsound(可以deepsound2john爆破秘钥),slenteye,openpuff
业余无线电
mp3 MP3Stego,slenteye
视频 1 2 3 4 AVI │ ├── DeEggerSetup131.msi │ ├── MP4 QuickTime │ └── ffmpeg-latest-win32-static
mkvtool提取音频
分帧lsb隐写
分帧指定像素
压缩包
1 2 3 文件已损坏:元数据区和目录区的文件名长度 如果压缩文件已损坏,则尝试用winrar打开,工具-修复压缩包CRC 校验错误:元数据区和目录区的压缩方法
1 2 3 4 5 6 7 8 9 10 伪加密 zip 压缩源文件数据区:7-8 位表示有无加密 压缩源文件目录区:9-10 位表示是否是伪加密 一般这俩地方都是09 00的,大概率就是伪加密了(直接把第二个PK后的09改了就行) rar 第24个字节尾数为4表示加密,0表示无加密,将尾数改为0即可破解伪加密
1 2 3 明文攻击:针对如ZipCrypto等旧版的加密算法,分为全明文和部分明文攻击,部分明文攻击针对ZipCrypto Store算法 https:// www.freebuf.com/articles/ network/255145 .html 部分明文需要8 +4 即12 个已知字符,其中8 个要求连续
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 首先使用-C输入zip文件 -c指定zip内部文件 然后-o 指定偏移量 -p 内部文件的指定明文 最后其他偏移量用-x指定 可以使用命令echo -n "明文" | xxd -r -ps > 1. txt写入明文文件1 .以png文件为例,png开头恒定为89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 time brcrack -C 压缩包 -c 压缩包中的加密文件 -p 明文文件(已知加密文件的部分) -o 偏移量(也就是0 ) >1. log &tail -f 1. log .\bkcrack.exe -C secret.zip -c flag.png -p pnghead -x 10585967 0000000049454E44AE426082 bkcrack -C 压缩包 -c 获取的文件 -k 上一步得到的key -d 输出文件名2 .压缩包:文件名会出现在zip压缩包的文件头,偏移量为30 ,所以当一个压缩包内有另一个压缩包,可以根据内部压缩包名字进行攻击,由zip文件头4 字节,内部压缩包名字≥8 字节 brcrack -C 压缩包 -c 内部压缩包名字 -p 明文文件(内部压缩包中的压缩文件名,会被写入压缩包文件头中) -o 30 -x 0 504B0304 brcrack -C 压缩包 -c 内部压缩包名字 -k 秘钥 -d 输出文件名
例如以上题目 zip里面有zip,-c指定内部压缩包,-p指定的文件内容是dasflow.pcap(会出现在内部压缩包文件头内)
1 2 crc爆破:大量文件<=18 字节,爆破出密码 https:// blog.csdn.net/mochu7777777/ article/details/ 110206427
1 2 3 密码不可见字符:python处理base64 加密后再base64 解密得到bytes libnum.n2s
加密手法 CTF-Misc Guide - ⚡Lunatic BLOG⚡ (goodlunatic.github.io)
HMAC_SHA
Decabit 脉冲 也可以替换为01尝试
DNA
arnold猫脸变换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 from PIL import Image img = Image.open('catcat.png')if img.mode == "P" : img = img.convert ("RGB" ) assert img.size[0 ] == img.size[1 ]dim = width , height = img.size st = 1 a = 114 b = 514 for _ in range (st): with Image.new (img.mode, dim ) as canvas: for nx in range (img.size[0 ]): for ny in range (img.size[0 ]): y = (ny - nx * a) % width x = (nx - y * b) % height canvas.putpixel((y, x), img.getpixel((ny, nx))) canvas.show () canvas.save ('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 def function (n): matrix = [[0 ] * n for _ in range (n)] number = 1 left , right , up , down = 0 , n - 1 , 0 , n - 1 while left < right and up < down: # 从左到右 for i in range (left , right ): matrix[up ][i] = number number += 1 # 从上到下 for i in range (up , down): matrix[i][right ] = number number += 1 # 从右向左 for i in range (right , left , -1 ): matrix[down][i] = number number += 1 for i in range (down, up , -1 ): matrix[i][left ] = number number += 1 left += 1 right -= 1 up += 1 down -= 1 # n 为奇数的时候,正方形中间会有个单独的空格需要单独填充 if n % 2 != 0 : matrix[n // 2 ][n // 2 ] = number return matrix
SilentEyes:通用图片和音频加密
exiftools:exif数据查看
wbStego4open:PDF,TXT,HTM.BMP隐写 snow隐写:属于空格隐写的一种,还有me隐写,可以用于图片的16进制文本
https://www.darkside.com.au/snow
clienteye:行列不对齐的小灰块
DeEgger Embedder:PDF 图片隐写
stegpy:stegpy path -p pass
取证 内存 raw/mem/dmp/dump
可以使用strings获取系统版本
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 vol.py mem.dump imageinfo vol.py -f OtterCTF.vmem --profile=Win7SP1x64 pslist vol.py -f OtterCTF.vmem --profile=Win7SP1x64 pstree vol.py -f OtterCTF.vmem --profile=Win7SP1x64 memdump -p 3036 --dump-dir=./ vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 svcscan vol.py -f memory.raw --profile=Win7SP1x64 filescan vol.py -f example.raw --profile=Win7SP1x64 filescan | grep -E 'txt|png|jpg|gif|zip|rar|7z|pdf|doc' volatility -f example.raw --profile=Win7SP1x64 filescan | grep TMP_User vol.py -f OtterCTF.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007e410890 --dump-dir=./ vol.py -f memory.raw --profile=Win7SP1x64 envars vol.py -f memory.raw --profile=Win7SP1x64 cmdscan vol.py -f memory.raw --profile=Win7SP1x64 cmdline vol.py -f memory.img --profile=Win2003SP1x86 dlllist vol.py -f memory.img --profile=Win2003SP1x86 ldrmodules vol.py -f memory.img --profile=Win2003SP1x86 malfind vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names" vol.py -f OtterCTF.vmem --profile=Win7SP1x64 hashdump vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.dump --profile=Win7SP1x64 mimikatz vol.py -f memory.raw --profile=Win7SP1x64 hivelist vol.py -f OtterCTF.vmem --profile=Win7SP1x64 printkey vol.py -f memory.raw --profile=Win7SP1x64 hivedump -o 0xfffff8a001cce010(注册表Volatility地址) vol.py -f memory.raw --profile=Win7SP1x64 connscan vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 netscan vol.py --plugins=/home/kali/volatility/volatility/plugins -f mem.raw --profile=Win7SP1x64 connections vol.py -f 1.vmem --profile=Win7SP1x64 iehistory vol.py -f 1.vmem --profile=Win7SP1x64 editbox vol.py -f 1.vmem --profile=Win7SP1x64 notepad vol.py -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./ vol.py -f 1.vmem --profile=Win7SP1x64 clipboard vol.py -f 1.vmem --profile=Win7SP1x64 clipboard -v vol.py -f 1.vmem --profile=Win7SP1x64 userassist vol.py -f 1.vmem --profile=Win7SP1x64 timeliner vol.py -f 1.vmem --profile=Win7SP1x64 mftparser vol.py --plugins=/home/kali/volatility/volatility/plugins -f OtterCTF.vmem --profile=Win7SP1x64 ndispktscan vol.py --plugins=/home/kali/volatility/volatility/plugins -f OtterCTF.vmem --profile=Win7SP1x64 usbstor vol.py --plugins=/home/kali/volatility/volatility/plugins -f OtterCTF.vmem --profile=Win7SP1x64 voldiff vol.py --plugins=/home/kali/volatility/volatility/plugins -f OtterCTF.vmem --profile=Win7SP1x64 bitlocker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 vol3.py -h vol3.py -f dacong.raw windows.filescan vol3.py -f dacong.raw windows.filescan | grep Desktop vol3.py -f mem.raw windows.dumpfiles --virtaddr="0x0000e0007ad17f20" vol3.py -f dacong.raw windows.registry.printkey vol3.py -f dacong.raw windows.registry.hivelist vol3.py -f dacong.raw windows.cmdline vol3.py -f dacong.raw windows.netscan vol3.py -f dacong.raw windows.netstat vol3.py -f dacong.raw windows.pslist vol3.py -f dacong.raw windows.pstree
VBoxTray.exe:类似vmtool
ClipboardMonitor:剪切板监控软件
mstsc.exe:远程桌面连接
磁盘 fat/VMDK/e01/ad1/vhd
veracrypt挂载,取证大师
用户的powershell历史记录会保存在这个路径下 \Users\test\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
D盾扫网站目录
mysql数据从qp.xb恢复
磁盘回复:extundelete
浏览器凭证破解:firepwd
DPAPI破解
加密卷:veracrypt truecrypt encfs
GPG/PGP:GPG/Kleopatra
cipher加密:Advanced efs data recovery
二维码 修复:QRazyBox,PS
反色处理
流量 1 2 3 4 5 6 7 8 9 tshark提取 tshark -r 1.pcapng -Y "http" -T fields -e http.file_data | uniq > data.txt 可以使用 uniq 参数去除重复行
分类
USB
Webshell
NTLM
工控
蓝牙(OBEX)
邮件(SMTP)
无线流量
ICMP
VPN
ADS-B
修复流量包
其他 邮件 eml-analyzer:提取邮件附件
命令 var/cache/locate/locatedb locate命令数据库
tupper自指 数字转图片
ps临近缩小 1 2 scap文件-sysdig处理 apng文件(文件头acTL和fcTL)-apngdis_gui