编辑
2024-05-28
MISC
0

目录

MISC
1.CyberChef学习记录
Fork 按行读取
Merge合并
decimal(ASCII)
Register寄存器
2.隐写
3.wireshark&&tshark
1.tshark命令
2.wireshark
图像隐写
音频信息隐藏
视频中的隐写术
文本隐写
其他媒体中的隐写术
关于此列表的说明
CryptoStego
聊天GPT
DeepSound
F5
HiddenWave
HStego
JPHS
JSteg
MP3stego
OpenPuff的
OpenStego
Outguess
QuickStego
SilentEye
SSuite Picsel
Steg
Steghide
4.图片
1.IDAT
5.volatility
1.安装
2.报错
3.使用
Volatility3的使用方法
Linux插件
Mac插件
Windows插件
Volatility2插件明细
mimikatz
6.隐写工具:
7.文件
1.bkcrack
2.jenv
3.pip
python
正则
WSL
8.密码
键盘坐标密码

MISC

1.CyberChef学习记录

1.cyberchef中有个Extract Files功能,有时可以提取出binwalk找不到的东西。

Fork 按行读取

例:base64多行解码:

2024-02-03_160732

例题

eHR3c2lra2N0Y2p3dGV2Y2dlYXRpeWN3dGV2Y2tlanM=

50e94c2db7eb3e13a546786f648f7fd

Merge合并

decimal(ASCII)

Register寄存器

2.隐写

  1. PDF用谷歌浏览器打卡ctrl+f直接搜flag即可找到隐藏字段,也可以CTRL +A 全选复制到一个地方在找

3.wireshark&&tshark

1.tshark命令

powershell
tshark -r blindsql.pcapng -Y 'http.request.method==GET' tshark -r blindsql.pcapng -Y "http.request.line" tshark -r a.pcapng -Y "http.request || http.response" -T fields -e text # 读取pcap文件并提取所有DNS查询 tshark -r capture.pcap -Y "dns" -T fields -e dns.qry.name # 统计每个域名的查询次数 tshark -r capture.pcap -Y "dns" -T fields -e dns.qry.name | sort | uniq -c | sort -nr # 提取特定类型的DNS记录(例如A记录) tshark -r capture.pcap -Y "dns.qry.type == 1" -T fields -e dns.qry.name # 提取DNS响应中的IP地址 tshark -r capture.pcap -Y "dns" -T fields -e dns.a # 统计每个源IP的DNS查询次数 tshark -r capture.pcap -Y "dns" -T fields -e ip.src | sort | uniq -c | sort -nr # 提取DNS查询和响应的时间戳 tshark -r capture.pcap -Y "dns" -T fields -e frame.time -e dns.qry.name -e dns.a #显示 DNS 响应时间 tshark -r dns_traffic.pcap -Y "dns.qr == 1" -T fields -e dns.time # 过滤特定域名的DNS查询 tshark -r capture.pcap -Y "dns.qry.name == 'example.com'" -T fields -e dns.qry.name -e dns.a # 统计每个基础域名的唯一子域名数量 tshark -r filename.pcap -T fields -e dns.qry.name | sort | uniq | rev | cut -d '.' -f 1-2 | rev | sort | uniq -c | sort -nr | head #提取DNS响应中的答案 tshark -r filename.pcap -Y "dns.flags.response == 1" -T fields -e dns.qry.name -e dns.a #提取特定的 DNS 字段,比如查询名称和响应地址 tshark -r demo.pcapng -Y "dns" -T fields -e dns.qry.name -e dns.resp.addr #显示 DNS 流量的时间戳 tshark -r dns_traffic.pcap -Y "dns" -T fields -e frame.time -e dns.qry.name #提取所有 DNS 查询名称并去重 tshark -r filename.pcap -T fields -e dns.qry.name -Y "dns.flags.response eq 0" | sed '/^$/d' | sort | uniq tshark -r 异常的流量.pcap -T fields -e dns.qry.name -Y "dns.flags.response eq 0" | sed '/^$/d' | sort | uniq # 统计特定 DNS 查询的出现次数 tshark -r filename.pcap -T fields -e dns.qry.name -Y "dns.flags.response eq 0" | sort | uniq -c | sort -nr # 提取 DNS 响应中的 IP 地址 tshark -r filename.pcap -Y "dns.flags.response == 1" -T fields -e dns.a #提取 DNS 事务 ID tshark -r <filename.pcap> -Y "dns.flags.response == 0" -T fields -e dns.id #过滤特定 IP 的 DNS 流量 tshark -r dns_traffic.pcap -Y "ip.addr == <target_ip> && dns"

2.wireshark

php
http.request.method == "GET" http.request.method == "POST" http.request.uri == "/img/logo-edu.gif" http contains "GET" http contains "HTTP/1" // GET包 http.request.method == "GET" && http contains "Host:" http.request.method == "GET" && http contains "User-Agent:" // POST包 http.request.method == "POST" && http contains "Host:" http.request.method == "POST" && http contains "User-Agent:" // 响应包 http contains "HTTP/1.1 200 OK" && http contains "Content-Type: " http contains "HTTP/1.1 200 OK" && http contains "Content-Type: "
运算符: == 等于 != 不等于 > 大于 < 小于 >= 大于等于 <= 小于等于 与 and , && 或 or , || 非 ! , not 语法使用: 1.过滤IP ip.src eq 192.168.1.10 or ip.dst eq 192.168.1.10 ip.addr eq 192.168.1.10 # 都显示:来源和目标 2.过滤端口 tcp.port eq 80 or udp.port eq 80 # 来源+目标 tcp.dstport == 80 # 只显示tcp协议的目标端口 tcp.srcport == 80 # 只显示tcp协议的来源端口 tcp.port >= 1 and tcp.port <= 80 # 端口范围 3.过滤协议 tcp udp icmp http smtp ftp dns msnms ip ssloicq bootp 等 !udp 或者 not udp 4.过滤指定字符 http.request.uri matches ".mp3$" # http请求的uri中以.mp3结尾 http.request.uri contains ".mp3$" # 包含.mp3$这5个字节的uri请求,$是字符不是正则表达式的结尾 5.http模式过滤 http.request.method == "GET" http.request.uri == "/img/logo.gif" http contains "GET" http contains "HTTP/1.1 200 OK" http.request.method == "POST" && http contains "User-Agent:" 6.过滤MAC eth.dst == A0:00:00:04:C5:84 # 过滤目标mac eth.addr eq A0:00:00:04:C5:84 # src+dst 7.包长度过滤 udp.length == 26 # udp本身固定长度8加上udp下面那块数据包之和 tcp.len >= 7 # 指的是ip数据包(tcp下面那块数据),不包括tcp本身 ip.len == 94 # 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后 frame.len == 119 # 整个数据包长度,从eth开始到最后 eth —> ip or arp —> tcp or udp —> data 8.tcp参数过滤 tcp.flags 显示包含TCP标志的封包。 tcp.flags.syn == 0x02 显示包含TCP SYN标志的封包。 tcp.window_size == 0 && tcp.flags.reset != 1 9.包过滤内容 tcp[20]表示从20开始,取1个字符 tcp[20:]表示从20开始,取1个字符以上 tcp[20:8]表示从20开始,取8个字符 10.dhcp bootp.type==0x02 and not ip.src==192.168.1.1 注意:DHCP协议的检索规则不是dhcp/DHCP, 而是bootp 11.msn msnms && tcp[23:1] == 20 // 第四个是0x20的msn数据包 msnms && tcp[20:3]== "USR" // 找到命令编码是USR的数据包 msnms && tcp[20:3]== "MSG" // 找到命令编码是MSG的数据包 一些类似正则表达式的规则: 小于 le 等于 eq 大于 gt 大于等于 ge 不等 ne \d 0-9的数字 \D \d的补集(以所以字符为全集,下同),即所有非数字的字符 \w 单词字符,指大小写字母、0-9的数字、下划线 \W \w的补集 \s 空白字符,包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f \S \s的补集 . 除换行符\n外的任意字符。 在Perl中,“.”可以匹配新行符的模式被称作“单行模式” .* 匹配任意文本,不包括回车(\n)? 。 而,[0x00-0xff]* 匹配任意文本,包括\n […] 匹配[]内所列出的所有字符 [^…] 匹配非[]内所列出的字符 ^ 表示其后的字符必须位于字符串的开始处 $ 表示其前面的字符必须位于字符串的结束处 \b 匹配一个单词的边界 \B 匹配一个非单词的边界 {n} 匹配前面的字符n次 {n,} 匹配前面的字符n次或多于n次 {n,m} 匹配前面的字符n到m次 ? 匹配前面的字符0或1次 + 匹配前面的字符1次或多于1次 * 匹配前面的字符0次或式于0次

图像隐写

音频信息隐藏

视频中的隐写术

文本隐写

其他媒体中的隐写术


关于此列表的说明

这是我正在编辑的隐写工具列表。它包括一个可以获得该工具的链接,一个简短的描述,以及一个指示它工作的操作系统,它工作的文件类型以及它使用的数据嵌入方法的表格。如果你想使用像Aletheia这样的工具执行隐写分析,后者尤为重要。

有些数据仍然不可用,通常是因为我还没有找到这些信息,还没有时间调查该工具。

如果你知道一些没有提供的数据,或者有一个工具,你认为将是有趣的添加到列表中,你可以在这里与我联系。


CryptoStego

CryptoStego是一种在浏览器中运行的图像隐写工具。

操作系统跨平台(Web浏览器)
图像插入方法LSB替换
JPG的图像插入方法自定义
许可证MIT

由于此工具在浏览器中运行,因此只需访问页面并按照说明操作即可。

CryptoStego


聊天GPT

ChatGPT是由OpenAI开发的人工智能模型,用于通过文本模拟人类对话。

它本身不是一个隐写工具,尽管它生成高质量文本的能力允许它被用作隐写工具。一个例子可以在文章文本隐写术与ChatGPT中找到。


DeepSound

DeepSound是一个隐写工具,允许在音频文件中隐藏信息。

操作系统Windows
支持的音频格式FLAC,MP3,WAV,APE
音频插入方法?
许可证免费软件

图形界面:

DeepSound有一个图形界面,便于隐藏和提取信息。

DeepSound


F5

F5是JPEG图像的隐写工具。

操作系统跨平台(Java)
JPG图像插入方法自定义
许可证MIT

使用命令嵌入消息:

要在封面图像中隐藏“secret.txt”文件,我们可以使用以下命令:

java -jar f5.jar e -p p4ssw0rd -e secret.txt cover.jpg stego.jpg

使用以下命令提取消息:

要从隐写图像中提取隐藏信息,我们可以使用以下命令:

java -jar f5.jar x -p p4ssw0rd -xf output.txt stego.jpg

HiddenWave

HiddenWave是一款用于WAV文件中音频的隐写工具。

操作系统跨平台(Python)
WAV音频插入方法LSB替换
许可证公共领域/未授权

使用命令嵌入消息:

要在封面音频中隐藏消息,我们可以使用以下命令:

python3 HiddenWave.py -f cover.wav -m "Secret message" -o stego.wav

使用以下命令提取消息:

要从隐写音频中提取隐藏信息,我们可以使用以下命令:

python3 ExWave.py -f stego.wav

HStego

HStego是一个隐写工具,允许在PNG和JPG图像中隐藏信息。 该工具的主要目标是不被现代隐写分析工具检测到。

操作系统Windows、Linux
支持的格式PNG、JPG
图像插入方法STC + S-UNIWARD
JPG图像插入方法STC + J-UNIWARD
许可证MIT

使用命令嵌入消息:

要在封面图像中隐藏“secret.txt”文件,我们可以使用以下命令:

hstego.py embed secret.txt cover.png stego.png p4ssw0rd

使用以下命令提取消息:

要从隐写图像中提取隐藏信息,我们可以使用以下命令:

hstego.py extract stego.png content.txt p4ssw0rd

图形界面:

HStego工具有一个图形界面,允许隐藏和提取信息,以及嵌入和验证水印。

HStego


JPHS

JP Hide Seek是一款用于JPEG图像的隐写工具。

操作系统Linux
JPG图像插入方法DCT LSB替换
许可证GPL v2

使用命令嵌入消息:

要在封面图像中隐藏“secret.txt”文件,我们可以使用以下命令:

jphide cover.jpg stego.jpg secret.txt

使用以下命令提取消息:

要从隐写图像中提取隐藏信息,我们可以使用以下命令:

jpseek stego.jpg output.txt

JSteg

JSteg是JPEG图像的隐写工具。

操作系统Linux
JPG图像插入方法DCT LSB替换(忽略值0和1)
许可证类似于BSD的自定义许可证

使用命令嵌入消息:

要在封面图像中隐藏“secret.txt”文件,我们可以使用以下命令:

cjpeg -steg secret.txt cover.pgm > stego.jpg

使用命令提取消息:

要提取隐藏图像中的隐藏信息,我们可以使用以下命令:

djpeg -steg output.txt stego.jpg > out.jpg

MP3stego

MP3Stego是一个隐写工具,在将WAV文件压缩为MP3的过程中隐藏信息。

操作系统Windows
MP3音频的插入方法自定义
许可证?

使用命令嵌入消息:

要在封面音频文件中隐藏“secret.txt”文件,我们可以使用以下命令:

encode -E secret.txt -P p4ssw0rd cover.wav stego.mp3

使用命令提取消息:

要从隐写音频中提取隐藏信息,我们可以使用以下命令:

decode -X -P p4ssw0rd svega_stego.mp3

OpenPuff的

OpenPuff是一个隐写工具,允许以多种格式隐藏信息。

操作系统Windows、Linux
支持的图像格式BMP,JPG,PCX,PNG,TGA,其它
支持的音频格式AIFF,MP3,NEXT/SUN,WAV
支持的视频播放器3GP,MP4,MPG,VOB格式
其他支持的服务FLV,PDF,PDF
图像插入方法LSB替换
JPEG图像插入方法斯特吉德?
视频插入方法?
其他插入方法?
许可证LGPL v3 +部分封闭代码

图形界面:

OpenPuff工具有一个图形界面,允许隐藏和提取信息,以及嵌入和验证水印。

OpenPuff


OpenStego

OpenStego是一个图像隐写工具,它允许隐藏信息以传输秘密消息和水印。

操作系统跨平台(Java)
支持的格式PNG
插入方法LSB替换
许可证GPL v2

使用命令嵌入消息:

要在封面图像中隐藏文件“secret.txt”,我们可以使用以下命令:

java -jar openstego.jar embed -a randomlsb -mf secret.txt -cf cover.png -sf stego.png

使用以下命令提取消息:

要从隐写图像中提取隐藏信息,我们可以使用以下命令:

java -jar openstego.jar extract -a randomlsb -sf stego.png -xd output-dir

图形界面:

OpenStego工具有一个图形界面,允许隐藏和提取信息,以及嵌入和验证水印。

OpenStego


Outguess

Outguess是一个JPEG图像的隐写工具。

操作系统Linux
JPEG图像插入方法自定义
许可证MIT

使用命令嵌入消息:

要在封面图像中隐藏文件“secret.txt”,我们可以使用以下命令:

outguess -k p4ssw0rd -d secret.txt cover.jpg stego.jpg

使用以下命令提取消息:

要从隐写图像中提取隐藏信息,我们可以使用以下命令:

outguess -k p4ssw0rd -r stego.jpg output.txt

QuickStego

QuickStego是一个隐写工具,允许在图像中隐藏信息。

操作系统Windows
支持的格式BMP,GIF,JPG
图像插入方法?
JPEG图像插入方法?
许可证免费软件

图形界面:

QuickStego工具有一个图形界面,允许隐藏和提取信息。

QuickStego


SilentEye

SilentEye是一个隐写工具,允许在图像和音频中隐藏信息。

操作系统Windows,MacOS X,Linux
支持的格式BMP、WAV
图像插入方法LSB替换
JPEG图像插入方法?
音频插入方法?
许可证GPL v3

图形界面:

SilentEye工具有一个图形界面,允许隐藏和提取信息。

SilentEye


SSuite Picsel

SSuite Picsel是一个隐写工具,允许在图像中隐藏信息。

操作系统Windows,MacOS X,Linux
支持的格式BMP、PNG、JPG
图像插入方法?
JPEG图像插入方法?
许可证免费软件

图形界面:

SSuite Picsel工具有一个图形界面,允许隐藏和提取信息。

SSuite Picsel


Steg

Steg是一种隐写工具,允许使用不同的空白编码在ASCII文本中隐藏信息。

操作系统跨平台(D)
文本的插入方法具有不同编码的空格
许可证GPL v3

使用命令嵌入消息:

要在封面图像中隐藏消息,我们可以使用以下命令:

steg -c cover.txt -o stego.txt "This is a message"

使用以下命令提取消息:

要从隐写文本中提取隐藏信息,我们可以使用以下命令:

steg -d -s stego.txt

Steghide

Steghide是一个隐写工具,允许在图像和音频中隐藏信息。

操作系统Windows、Linux
支持的映像文件BMP、JPG
支持的音频转换器WAV,Au
图像的插入方法自定义
JPG图像的插入方法自定义
音频插入方法自定义
许可证GPL v2

使用命令嵌入消息:

要在封面图像中隐藏文件“secret.txt”,我们可以使用以下命令:

steghide embed -cf cover.jpg -ef secret.txt -sf stego.jpg -p p4ssw0rd

使用以下命令提取消息:

要从隐写图像中提取隐藏信息,我们可以使用以下命令:

steghide extract -sf stego.jpg -xf output.txt -p p4ssw0rd -f

4.图片

(PNG

1.IDAT

根据png的文件格式,一张png图片由PNG文件头+IHDR+IDAT+IEND组成。其中IDAT又由IDAT_DATA的长度 + IDAT + IDAT_DATA + CRC32(CRC32 = IDAT + IDAT_DATA)组成。那么只要给出全部的IDAT_DATA块和一些信息(png的宽和高,颜色模式,如RGB),就能自行还原png。文件头+IHDR结构:89 50 4E 47 0D 0A 1A 0A + 00 00 00 0D + IHDR + IM_WIDTH + IM_HEIGHT + Bits + color_type + compr_method + filter_method + interlace_method + CRC32(CRC32 = IHDR + IM_WIDTH + IM_HEIGHT + Bits + color_type + compr_method + filter_method + interlace_method);IEND结构:00 00 00 00 49 45 4E 44 AE 42 60 82

多个IDAT层之间是有顺序的,辨别方法是:如果拼对了一层,png就会显示出来一层。

python
import os import sys import binascii import zlib OUTPUT = '' def bin2hex(data): return binascii.b2a_hex(data) def hex2bin(data): return binascii.a2b_hex(data) def dec2bin(data, l=1): l = l / 2 if l == 4: return hex2bin("%08x" % int(data)) else: return hex2bin("%02x" % int(data)) def bin2dec(data): return int(bin2hex(data), 16) def crc32(chunkType, chunkData): return dec2bin(binascii.crc32(chunkType + chunkData), 8) def genIHDR(w, h): width = dec2bin(w, 8) height = dec2bin(h, 8) bits = dec2bin(8) color_type = dec2bin(2) compr_method = filter_method = interlace_method = dec2bin(0) chunkData = width+height+bits+color_type + \ compr_method+filter_method+interlace_method res = dec2bin(len(chunkData), 8)+b'IHDR' + \ chunkData+crc32(b'IHDR', chunkData) return res def genIDAT(data): _c = zlib.crc32(b'IDAT'+data) if _c < 0: _c = ~_c ^ 0xffffffff _crc = dec2bin(_c, 8) return dec2bin(len(data), 8) + b'IDAT' + data + _crc def merge_png(width, height, names, output="tmp.png"): header = hex2bin("89504E470D0A1A0A") ihdr = genIHDR(width, height) idat = [] for name in names: f=open("%s/%s" % (OUTPUT, name),'rb') data = f.read() idat.append(genIDAT(data)) f.close() idat = b''.join(idat) iend = hex2bin("00000000" + "49454E44" + "AE426082") with open(output, 'wb') as f: f.write(header+ihdr+idat+iend) width= height= if __name__ == '__main__': merge_png(width, height, [], "flag.png")

5.volatility

参考链接

1.安装

php
sudo apt-get install python2.7-dev sudo apt install python2 sudo apt install wget python-is-python2 # 安装wget和python2 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python get-pip.py curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py sudo python2 get-pip.py 或者 sudo apt install python-pip

2.报错

php
git clone https://github.com/gdabah/distorm.git cd distorm3 python2 setup.py build sudo python2 setup.py build installsudo apt-get install yara -y wget https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.1.tar.gz tar -xvzf pycrypto-2.6.1.tar.gz cd pycrypto-2.6.1 python2 setup.py build sudo python2 setup.py build install
php
$ sudo apt-get install git $ git clone https://github.com/volatilityfoundation/volatility.git $ cd volatility/ $ sudo python setup.py install $ sudo apt-get install yara $ sudo apt-get install python-pip $ sudo -H pip install --upgrade pip $ sudo -H pip install distorm3 pycrypto openpyxl Pillow sudo pip install construct
php
curl https://github.com/RealityNet/hotoloti/blob/master/volatility/mimikatz.py >> mimikatz.py

3.使用

一般来说常用的参数格式为:

python2 vol.py -f file.raw plugins [args]

例如获取内存镜像的环境信息:

python2 vol.py -f file.raw imageinfo

或者是转储文件:

python2 vol.py -f file.raw dumpfiles --dump-dir .

Volatility2的使用方法

(1) 获取系统基本信息

javascript
>>>python2 vol.py -f ../Target.vmem imageinfo

(2) 列出进程信息

javascript
>>> python2 vol.py -f ../Target.vmem --profile=Win7SP1x64 pslist

(3) 提取某进程文件内容

javascript
>>> python2 vol.py -f ../Target.vmem --profile=Win7SP1x64 memdump -p 516 -D /

(4) 查看文件目录

javascript
>>> python2 vol.py -f ../Target.vmem --profile=Win7SP1x64 filescan

(5) 提取某文件内容

javascript
>>>python2 vol.py -f ../Target.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007fe72430 --dump-dir=./

(6) 调用mimikatz抓取系统口令

javascript
python2 vol.py -f ../Target.vmem --profile=Win7SP1x64 mimikatz

浏览器

php
sudo vol.py --plugins=/home/chi11i/volatility/volatility-plugins -f data.raw --profile=Win7SP1x64 firefoxhistory
Volatility3的使用方法
python3 vol.py [plugin] -f [image]

Volatility3的使用方法

  1. banners.Banners: 尝试识别图像中的潜在Linux横幅信息
  2. configwriter.ConfigWriter: 运行自动魔法,并同时打印和输出配置到输出目录中
  3. frameworkinfo.FrameworkInfo: 列出Volatility的各种模块化组件信息
  4. isfinfo.IsfInfo: 确定当前可用的ISF文件或特定ISF文件的信息
  5. layerwriter.LayerWriter: 运行自动魔法,并写出由stacker生成的主要层信息
Linux插件
  1. linux.bash.Bash: 从内存中恢复bash命令历史记录
  2. linux.capabilities.Capabilities: 列出进程能力
  3. linux.check_afinfo.Check_afinfo: 验证网络协议的操作功能指针
  4. linux.check_creds.Check_creds: 检查是否有进程共享凭证结构
  5. linux.check_idt.Check_idt: 检查中断描述符表是否被修改
  6. linux.check_modules.Check_modules: 将模块列表与sysfs信息进行比较(如果有的话)
  7. linux.check_syscall.Check_syscall: 检查系统调用表中的挂钩
  8. linux.elfs.Elfs: 列出所有进程的所有内存映射ELF文件
  9. linux.envars.Envars: 列出带有环境变量的进程
  10. linux.iomem.IOMem: 生成类似于运行系统上的/proc/iomem的输出
  11. linux.keyboard_notifiers.Keyboard_notifiers: 解析键盘通知程序调用链
  12. linux.kmsg.Kmsg: 内核日志缓冲区读取器
  13. linux.lsmod.Lsmod: 列出加载的内核模块
  14. linux.lsof.Lsof: 列出所有进程的所有内存映射
  15. linux.malfind.Malfind: 列出可能包含注入代码的进程内存范围
  16. linux.mountinfo.MountInfo: 列出进程挂载命名空间中的挂载点
  17. linux.proc.Maps: 列出所有进程的所有内存映射
  18. linux.psaux.PsAux: 列出带有命令行参数的进程
  19. linux.pslist.PsList: 列出特定Linux内存镜像中的进程
  20. linux.psscan.PsScan: 扫描特定Linux镜像中的进程
  21. linux.pstree.PsTree: 根据父进程ID列出进程树
  22. linux.sockstat.Sockstat: 列出所有进程的网络连接
  23. linux.tty_check.tty_check: 检查TTY设备的挂钩
  24. linux.vmayarascan.VmaYaraScan: 使用YARA规则扫描所有任务的虚拟内存区域
Mac插件
  1. mac.bash.Bash: 从内存中恢复bash命令历史记录
  2. mac.check_syscall.Check_syscall: 检查系统调用表中的挂钩
  3. mac.check_sysctl.Check_sysctl: 检查sysctl处理程序中的挂钩
  4. mac.check_trap_table.Check_trap_table: 检查mach陷阱表中的挂钩
  5. mac.ifconfig.Ifconfig: 列出所有设备的网络接口信息
  6. mac.kauth_listeners.Kauth_listeners: 列出kauth监听器及其状态
  7. mac.kauth_scopes.Kauth_scopes: 列出kauth范围及其状态
  8. mac.kevents.Kevents: 列出进程注册的事件处理程序
  9. mac.list_files.List_Files: 列出所有进程的所有打开文件描述符
  10. mac.lsmod.Lsmod: 列出加载的内核模块
  11. mac.lsof.Lsof: 列出所有进程的所有打开文件描述符
  12. mac.malfind.Malfind: 列出可能包含注入代码的进程内存范围
  13. mac.mount.Mount: 生成类似于Mac的mount命令的数据集合
  14. mac.netstat.Netstat: 列出所有进程的网络连接
  15. mac.proc_maps.Maps: 列出可能包含注入代码的进程内存范围
  16. mac.psaux.Psaux: 恢复程序命令行参数
  17. mac.pslist.PsList: 列出特定Mac内存镜像中的进程
  18. mac.pstree.PsTree: 根据父进程ID列出进程树
  19. mac.socket_filters.Socket_filters: 枚举内核套接字过滤器
  20. mac.timers.Timers: 检查恶意内核计时器
  21. mac.trustedbsd.Trustedbsd: 检查恶意的trustedbsd模块
  22. mac.vfsevents.VFSevents: 列出过滤文件系统事件的进程
Windows插件
  1. windows.bigpools.BigPools: 列出大页面池
  2. windows.cachedump.Cachedump: 从内存中转储LSA机密
  3. windows.callbacks.Callbacks: 列出内核回调和通知例程
  4. windows.cmdline.CmdLine: 列出进程命令行参数
  5. windows.crashinfo.Crashinfo: 列出Windows崩溃转储信息
  6. windows.devicetree.DeviceTree: 列出基于特定Windows内存镜像的驱动程序和附加设备的树
  7. windows.dlllist.DllList: 列出特定Windows内存镜像中加载的模块
  8. windows.driverirp.DriverIrp: 列出特定Windows内存镜像中驱动程序的IRP
  9. windows.drivermodule.DriverModule: 确定是否有加载的驱动程序被rootkit隐藏
  10. windows.driverscan.DriverScan: 扫描特定Windows内存镜像中的驱动程序
  11. windows.dumpfiles.DumpFiles: 从Windows内存样本中转储缓存的文件内容
  12. windows.envars.Envars: 显示进程环境变量
  13. windows.filescan.FileScan: 扫描特定Windows内存镜像中的文件对象
  14. windows.getservicesids.GetServiceSIDs: 列出进程令牌SID
  15. windows.getsids.GetSIDs: 打印每个进程拥有的SID
  16. windows.handles.Handles: 列出进程打开的句柄
  17. windows.hashdump.Hashdump: 从内存中转储用户哈希
  18. windows.info.Info: 显示正在分析的内存样本的操作系统和内核详细信息
  19. windows.joblinks.JobLinks: 打印进程作业链接信息
  20. windows.ldrmodules.LdrModules: 列出特定Windows内存镜像中加载的模块
  21. windows.lsadump.Lsadump: 从内存中转储LSA机密
  22. windows.malfind.Malfind: 列出可能包含注入代码的进程内存范围
  23. windows.mbrscan.MBRScan: 扫描并解析可能的主引导记录(MBR)
  24. windows.memmap.Memmap: 打印内存映射
  25. windows.mftscan.ADS: 扫描备用数据流
  26. windows.mftscan.MFTScan: 扫描特定Windows内存镜像中的MFT文件对象
  27. windows.modscan.ModScan: 扫描特定Windows内存镜像中的模块
  28. windows.modules.Modules: 列出加载的内核模块
  29. windows.mutantscan.MutantScan: 扫描特定Windows内存镜像中的互斥体
  30. windows.netscan.NetScan: 扫描特定Windows内存镜像中的网络对象
  31. windows.netstat.NetStat: 遍历特定Windows内存镜像中的网络追踪结构
  32. windows.poolscanner.PoolScanner: 通用池扫描插件
  33. windows.privileges.Privs: 列出进程令牌特权
  34. windows.pslist.PsList: 列出特定Windows内存镜像中的进程
  35. windows.psscan.PsScan: 扫描特定Windows内存镜像中的进程
  36. windows.pstree.PsTree: 根据父进程ID列出进程树
  37. windows.registry.certificates.Certificates: 列出注册表中证书存储中的证书
  38. windows.registry.hivelist.HiveList: 列出特定内存镜像中的注册表蜂窝
  39. windows.registry.hivescan.HiveScan: 扫描特定Windows内存镜像中的注册表蜂窝
  40. windows.registry.printkey.PrintKey: 列出注册表蜂窝或特定键值下的注册表键
  41. windows.registry.userassist.UserAssist: 打印userassist注册表键和信息
  42. windows.sessions.Sessions: 从环境变量中提取的会话信息的进程列表
  43. windows.skeleton_key_check.Skeleton_Key_Check: 查找Skeleton Key恶意软件的迹象
  44. windows.ssdt.SSDT: 列出系统调用表
  45. windows.statistics.Statistics: 列出内存空间的统计信息
  46. windows.strings.Strings: 读取字符串命令的输出并指明每个字符串属于哪些进程
  47. windows.svcscan.SvcScan: 扫描Windows服务
  48. windows.symlinkscan.SymlinkScan: 扫描特定Windows内存镜像中的链接
  49. windows.vadinfo.VadInfo: 列出进程内存范围
  50. windows.vadwalk.VadWalk: 遍历VAD树
  51. windows.vadyarascan.VadYaraScan: 使用YARA规则扫描所有虚拟地址描述符内存映射
  52. windows.verinfo.VerInfo: 列出PE文件的版本信息
  53. windows.virtmap.VirtMap: 列出虚拟映射部分
  54. yarascan.YaraScan: 使用YARA规则(字符串或文件)扫描内核内存

获取系统基本信息

javascript
sudo python3 vol.py -f ../Target.vmem windows.info

提取某进程文件内容

javascript
sudo python3 vol.py -f /opt/forensic-analysis/Target.vmem windows.pslist --pid 516 --dump

使用以下命令从内存中转储文件

php
vol -f study.raw windows.filescan.FileScan | grep "flag"
vol -f Carmine-Falcone.raw windows.dumpfiles.DumpFiles --virtaddr 0xab0b10cde210
Volatility2插件明细
php
/usr/local/lib/python2.7/dist-packages/volatility/plugins
插件名作用
amcache打印 AmCache 信息
apihooks检测进程和内核内存中的 API 钩子 (hooks)
atoms打印会话和窗口站原子表
atomscan原子表池扫描器
auditpolHKLM\SECURITY\Policy\PolAdtEv 打印审计策略
bigpools使用 BigPagePoolScanner 转储大页面池
bioskbdReal Mode 内存中读取键盘缓冲区
cachedump从内存中转储缓存的域哈希值
callbacks打印整个系统的回调和通知进程
clipboard提取 Windows 剪贴板的内容
cmdline显示进程的命令行参数
cmdscan通过扫描 _COMMAND_HISTORY 提取命令历史记录
connections打印开放的连接列表 [仅适用于Windows XP和2003]
connscan连接池中扫描 tcp 连接
consoles通过扫描 _CONSOLE_INFORMATION 来提取命令历史记录
crashinfo转储崩溃转储信息
deskscan标签 DESKTOP(台式机)的池扫描器
devicetree以树状图形式显示驱动
dlldump从进程地址空间转储 DLL
dlllist打印每个进程的加载的 DLL 列表
driverirp驱动程序 IRP 挂钩检测
drivermodule将驱动程序对象关联到内核模块
driverscan驱动程序对象的池扫描程序
dumpcerts转储 RSA 的私有和公共 SSL 密钥
dumpfiles提取内存映射和缓存文件
dumpregistry将注册表文件转储到磁盘
editbox显示有关编辑控件的信息
envars显示进程环境变量
eventhooks打印 Windows 事件挂钩的详细信息
evtlogs提取 Windows 事件日志(仅限 XP/2003)
filescan输出所有文件对象
gahti转储 USER 句柄类型信息
gditimers打印已安装的 GDI 计时器和回调
gdt显示全局描述符表
getservicesids获取注册表中的服务名称并返回计算的SID
getsids打印属于每个进程的 SID
handles打印每个进程的打开的句柄列表
hashdump从内存中转储密码哈希 (LM/NTLM)
hibinfo转储休眠文件信息
hivedump转出注册表单元
hivelist打印注册表配置单元列表。
hivescan注册表配置单元的池扫描器
hpakextract从 HPAK 文件中提取物理内存
hpakinfo关于 HPAK 文件的信息
idt显示中断描述符表
iehistory重建 Internet Explorer 缓存/历史
imagecopy将物理地址空间复制为原始 DD 映像
imageinfo识别映像的信息
impscan扫描对导入函数的调用
joblinks打印进程作业链接信息
kdbgscan搜索并转储潜在的 KDBG 值
kpcrscan搜索并转储潜在的 KPCR 值
ldrmodules检测未链接的 DLL
limeinfo转储 Lime 文件格式信息
linux_apihooks检查用户区 apihooks 情况
linux_arp打印 ARP 表
linux_aslr_shift自动检测 Linux ASLR shift
linux_banner打印 Linux 横幅信息
linux_bash从 bash 进程内存中恢复 bash 历史记录
linux_bash_env恢复进程的动态环境变量
linux_bash_hash从 bash 进程内存中恢复 bash 哈希表
linux_check_afinfo验证网络协议的操作函数指针
linux_check_creds检查是否有任何进程共享凭证结构
linux_check_evt_arm检查异常向量表以查找系统调用表挂钩
linux_check_fop检查文件操作结构以查找 rootkit 修改
linux_check_idt检查 IDT 是否已被更改
linux_check_inline_kernel检查内联内核挂钩
linux_check_modules将模块列表与 sysfs 信息进行比较(如果可用)
linux_check_syscall检查系统调用表是否已更改
linux_check_syscall_arm检查系统调用表是否已更改
linux_check_tty检查 tty 设备的挂钩
linux_cpuinfo打印有关每个活动处理器的信息
linux_dentry_cache从 dentry 缓存中收集文件
linux_dmesg收集 dmesg 缓冲区
linux_dump_map将选定的内存映射写入磁盘
linux_dynamic_env恢复进程的动态环境变量
linux_elfs在进程映射中查找 ELF 二进制文件
linux_enumerate_files列出文件系统缓存引用的文件
linux_find_file列出并从内存中恢复文件
linux_getcwd列出每个进程的当前工作目录
linux_hidden_modules雕刻内存以查找隐藏的内核模块
linux_ifconfig收集活动接口
linux_info_regs就像 GDB 中的“信息寄存器”(它将打印出所有寄存器)
linux_iomem提供类似于 /proc/iomem 的输出
linux_kernel_opened_files列出从内核中打开的文件
linux_keyboard_notifiers解析键盘通知程序调用链
linux_ldrmodules将 proc maps 的输出与 libdl 中的库列表进行比较
linux_library_list列出加载到进程中的库
linux_librarydump将进程内存中的共享库转储到磁盘
linux_list_raw列出具有混杂套接字的应用程序
linux_lsmod收集加载的内核模块
linux_lsof列出文件描述符及其路径
linux_malfind查找可疑进程映射
linux_memmap转储 linux 任务的内存映射
linux_moddump提取加载的内核模块
linux_mount收集已安装的 fs/设备
linux_mount_cache从 kmem_cache 收集已安装的 fs/驱动
linux_netfilter列出 Netfilter 钩子
linux_netscan列出网络连接结构
linux_netstat列出打开的套接字
linux_pidhashtable通过 PID 哈希表枚举进程
linux_pkt_queues将每个进程的数据包队列写入磁盘
linux_plthook扫描 ELF 二进制文件的 PLT 以查找非需要图像的挂钩
linux_proc_maps收集进程内存映射
linux_proc_maps_rb通过映射红黑树为 linux 收集 proc maps
linux_procdump将进程的可执行映像转储到磁盘
linux_process_hollow检查进程空心的迹象
linux_psaux收集进程以及完整的命令行和开始时间
linux_psenv收集进程及其静态环境变量
linux_pslist通过遍历 task_struct-> 任务列表来收集活动任务
linux_pslist_cache从 kmem_cache 收集任务
linux_psscan扫描进程的物理内存
linux_pstree显示进程之间的父/子关系
linux_psxview使用各种进程列表查找隐藏进程
linux_recover_filesystem从内存中恢复整个缓存文件系统
linux_route_cache从内存中恢复路由缓存
linux_sk_buff_cache从 sk_buff kmem_cache 恢复数据包
linux_slabinfo在运行的机器上模拟 /proc/slabinfo
linux_strings将物理偏移量与虚拟地址匹配(可能需要一段时间,非常冗长)
linux_threads打印进程的线程
linux_tmpfs从内存中恢复 tmpfs 文件系统
linux_truecrypt_passphrase恢复缓存的 Truecrypt 密码短语
linux_vma_cache从 vm_area_struct 缓存中收集 VMA
linux_volshell内存镜像中的外壳 shell
linux_yarascanLinux 内存映像中的 shell
lsadump从注册表中转储(解密)LSA 机密
mac_adium列出 Adium 消息
mac_apihooks检查进程中的 API 挂钩
mac_apihooks_kernel检查系统调用和内核函数是否被挂钩
mac_arp打印 arp 表
mac_bash从 bash 进程内存中恢复 bash 历史记录
mac_bash_env恢复 bash 的环境变量
mac_bash_hash恢复来自 bash 进程内存的 bash 哈希表
mac_calendar从 Calendar.app 获取日历事件
mac_check_fop验证文件操作指针
mac_check_mig_table列出内核 MIG 表中的全部内容
mac_check_syscall_shadow查找影子系统调用表
mac_check_syscalls检查系统调用表条目是否已挂钩
mac_check_sysctl检查未知的 sysctl 处理程序
mac_check_trap_table检查马赫陷阱表条目是否已挂钩
mac_compressed_swap打印 Mac OS X VM 压缩器统计信息和转储所有压缩页面
mac_contactsContacts.app 获取联系人名称
mac_dead_procs打印终止/取消分配的进程
mac_dead_sockets打印终止/取消分配的网络套接字
mac_dead_vnodes列出释放的 vnode 结构
mac_devfs列出文件缓存中的文件
mac_dmesg打印内核调试缓冲区
mac_dump_file转储指定文件
mac_dump_maps转储进程的内存范围,可选地包括压缩交换中的页面
mac_dyld_maps从 dyld 数据结构获取进程的内存映射
mac_find_aslr_shift查找 10.8 的 ASLR 移位值+ 图像
mac_get_profile自动检测 Mac 配置文件
mac_ifconfig列出所有设备的网络接口信息
mac_interest_handlers列出 IOKit 兴趣处理程序
mac_ip_filters报告任何挂钩的 IP 过滤器
mac_kernel_classes列出内核中加载的 c++ 类
mac_kevents显示进程的父/子关系
mac_keychaindump恢复可能的钥匙串密钥。使用 chainbreaker 打开相关的钥匙串文件
mac_ldrmodules将 proc 映射的输出与 libdl 中的库列表进行比较
mac_librarydump转储进程的可执行文件
mac_list_files列出文件缓存中的文件
mac_list_kauth_listeners列出 Kauth 范围侦听器
mac_list_kauth_scopes列出 Kauth 范围和他们的状态
mac_list_raw列出具有混杂套接字的应用程序
mac_list_sessions枚举会话
mac_list_zones打印活动区域
mac_lsmod列出加载的内核模块
mac_lsmod_iokit列出通过 IOkit 加载的内核模块
mac_lsmod_kext_map列出加载的内核模块
mac_lsof列出每个进程打开的文件
mac_machine_info打印有关示例的机器信息
mac_malfind查找可疑进程映射
mac_memdump将可寻址内存页转储到文件
mac_moddump将指定的内核扩展写入磁盘
mac_mount打印已安装的设备信息
mac_netstat列出每个进程的活动网络连接
mac_network_conns列出来自内核网络结构的网络连接
mac_notesapp查找 Notes 消息的内容
mac_notifiers检测向 I/O Kit(例如 LogKext)添加挂钩的 rootkit
mac_orphan_threads列出不映射回已知模块/进程的线程
mac_pgrp_hash_table步行进程组哈希表
mac_pid_hash_table遍历 pid 哈希表
mac_print_boot_cmdline打印内核启动参数
mac_proc_maps获取进程的内存映射
mac_procdump转储进程的可执行文件
mac_psaux打印带有用户空间参数的进程 (argv)
mac_psenv打印用户区环境中的进程 (envp)
mac_pslist列出正在运行的进程
mac_pstree显示进程的父/子关系
mac_psxview使用各种进程列表查找隐藏进程
mac_recover_filesystem恢复缓存的文件系统
mac_route打印路由表
mac_socket_filters报告套接字过滤器
mac_strings将物理偏移量与虚拟地址匹配(可能需要一段时间,非常冗长)
mac_tasks列出活动任务
mac_threads列出进程线程
mac_threads_simple列出线程及其开始时间和优先级
mac_timers报告内核驱动程序设置的计时器
mac_trustedbsd列出恶意的 trustedbsd 策略
mac_version打印Mac版本
mac_vfsevents列出过滤文件系统事件的进程
mac_volshell内存映像中的 shell
mac_yarascan扫描内存对于 yara 签名
machoinfo转储 Mach-O 文件格式信息
malfind查找隐藏和注入的代码
mbrparser扫描并解析潜在的主引导记录 (MBR)
memdump转储进程的可寻址内存
memmap打印内存映射
messagehooks列出桌面和线程窗口消息挂钩
mftparser扫描并解析潜在的 MFT 条目
moddump将内核驱动程序转储到可执行文件示例
modscan内核池扫描程序modules
modules打印加载模块的列表
multiscan一次性扫描各种对象
mutantscan互斥对象的池扫描器
netscan扫描 Vista(或更高版本)图像的连接和套接字
notepad列出当前显示的记事本文本
objtypescan扫描 Windows 对象类型对象
patcher根据页面扫描修补内存
poolpeek可配置池扫描器插件
pooltracker显示池标记使用摘要
printkey打印注册表项及其子项和值
privs显示进程权限
procdump将进程转储到可执行文件示例
pslist按照 EPROCESS 列表打印所有正在运行的进程
psscan进程对象的池扫描程序
pstree将进程列表打印为树
psxview使用各种进程列表查找隐藏进程
qemuinfo转储 Qemu 信息
raw2dmp将物理内存样本转换为 windbg 崩溃转储
screenshot基于 GDI windows 保存伪屏幕截图
servicediff列出 Windows 服务(类似于 Plugx)
sessions列出关于 _MM_SESSION_SPACE(用户登录会话)的详细信息
shellbags打印 ShellBags 信息
shimcache解析应用程序兼容性 Shim 缓存注册表项
shutdowntime从注册表中打印机器的 ShutdownTime
sockets打印打开的套接字列表
sockscan用于 tcp 套接字对象的池扫描器
ssdt显示 SSDT 条目
strings将物理偏移量与虚拟地址匹配(可能需要一段时间,非常冗长)
svcscan扫描 Windows 服务
symlinkscan用于符号链接对象的池扫描器
thrdscan线程对象的池扫描器
threads调查 _ETHREAD_KTHREAD
timeliner从内存计时器中的各种工件创建时间线
timers打印内核计时器和相关的模块 DPC
truecryptmaster恢复 TrueCrypt 7.1a 主密钥
truecryptpassphraseTrueCrypt 缓存密码查找器
truecryptsummaryTrueCrypt 摘要
unloadedmodules打印未加载模块的列表
userassist打印 USER 注册表键值和信息
userhandles转出 USER 句柄表
vaddump转储 VAD 信息到一个文件中
vadinfo转储 VAD 信息
vadtree遍历 VAD 树并以树格式显示
vadwalk遍历 VAD 树
vboxinfo转储 virtualbox 信息
verinfo从 PE 映像中打印版本信息
vmwareinfo转储 VMware VMSS/VMSN 信息
volshell内存映像中的 Shell
win10cookie查找 Windows 10 窗口的 ObHeaderCookie
windows打印桌面 Windows(详细详细信息)
wintree打印 Z-Order 桌面Windows 树
wndscan用于窗口站的池扫描程序
yarascan使用 Yara 签名扫描进程或内核内存

实际上所有 volatility2 的功能都是由插件实现的,我们可以自主安装他人所写的插件或者是自己写插件脚本。

无论是哪种,只需要将插件脚本拖入 plugins/ 文件下即可(另一个可能的路径为 volatility/plugins/),且支持文件夹分类(实际上只要在该目录下的所有文件都会遍历加载)。

mimikatz

mimikatz 是一个可以从内存中提取明文密码、哈希、PIN 码和 kerberos 票证的软件,在 volatility2 中有专门的插件替代了繁琐的操作。

如果不使用插件,我们需要首先从内存镜像中转储 lsass.exe 的内存文件为 lsass.dmp 后,用 mimikatz 加载并读取数据。

我们可以在 https://github.com/RealityNet/hotoloti/tree/master/volatility 中获取 mimikatz.py,将其添加到 plugins/ 文件夹下即可使用。

使用方式:

python2 vol.py -f file.raw mimikatz

一键提取出目标内存镜像中的用户名和密码。

6.隐写工具:

  • zsteg

zsteg xxx.png(仅图片) 如果zsteg输出类似这样的东西:

extradata:0 .. file: Zip archive data, at least v2.0 to extract, compression method=AES Encrypted

说明这里有文件可以提取。记住开始的字符串,使用以下命令提取:

  • zsteg -E "extradata:0" ctf.png > res.zip
  • binwalk
    • binwalk xxx(支持任何类型,加上-e可以提取,不过有时候提取不出来,下方的foremost补充使用)
    • binwalk可能会提取出一些Zlib compressed data,有时候flag会藏在里面。
  • foremost(有时候即使binwalk没有提示任何文件,foremost也能提取出东西。所以binwalk提示没有问题时,也不要忘记试foremost)
  • outguess,例题:Avatar。注意有时候outguess会需要密码,密码可能藏在exif里。例题:[ACTF新生赛2020]outguess
  • F5隐写,例题:刷新过的图片。另一个更详细的F5隐写变种题:Refresh!
  • stegsolve
  • NtfsStreamsEditor,用于处理NTFS流隐藏文件。例题:[SWPU2019]我有一只马里奥。当题目涉及到NTFS流时,题目文件都需要用Win RAR解压。
  • SilentEye(音频隐写工具)
  • steghide(多类型文件隐写工具)
  • 图片WAV隐写工具stegpy

steghide有时需要密码,可以用stegseek破解。

LSB隐写工具,音频图片都可以。

  • Twitter Secret Messages。这个工具的密文很好辨认,例如I hate this flying bⅰrd app... Peοple say one thіngbutyou always gοtta read between thelines tο interpret them right ://。推特/蓝鸟是出题人的提示关键词。

  • mp3stego.mp3带密码的隐写工具。

  • base100。将文字与emoji互相转换的编码工具。

  • videostego

    视频文件的LSB隐写工具。若没有后续改动的话,被隐写后的视频的exif的Writer栏为JavDomGom

  • OpenStego

    • bmp/png文件隐写工具,需要密码
  • discord events

    • Steg Cloak的解码。被Steg Cloak加密的文字会包含不可见字符
  • Professor's Inheritance

  • Aqua Gaze

7.文件

1.bkcrack

bkcrack -L archive.zip

其中-C表示密文(cipher),-p为明文(plaintext),明文和密文中明文的部分对应。

php
bkcrack -C res.zip -c flag.txt -P ohh.zip -p flag.txt

假设ZIP文档名为encrypted.zip,条目cipher为密文,plain.zip中包含条目plain为已知明文,即可运行下列命令:

bkcrack -C encrypted.zip -c cipher -P plain.zip -p plain

从文件加载数据

假设文件cipherfile中包含密文,plainfile包含已知明文,即可运行下列命令:

bkcrack -c cipherfile -p plainfile

偏移量

如果明文对应于密文开头以外的部分,则可以指定偏移量。如果明文包含加密Header的一部分,则该值可能为负值:

bkcrack -c cipherfile -p plainfile -o offset

稀疏明文

如果你知道很少的连续明文(在8到11个字节之间),但知道一些其他已知偏移量的字节,则可以提供这些信息以达到总共12个已知字节的要求。为此,请使用-x参数,后跟偏移量和十六进制字节:

bkcrack -c cipherfile -p plainfile -x 25 4b4f -x 30 21

线程数量

如果bkcrack是在启用并行模式的情况下构建的,则可以通过环境变量OMP_NUM_threads设置使用的线程数。

解密器

如果攻击成功,可以使用下列命令保存解密数据以及相关的密文:

bkcrack -c cipherfile -p plainfile -d decipheredfile

如果从之前的攻击获取到了密钥,则可以使用下列命令继续解密数据:

bkcrack -c cipherfile -k 12345678 23456789 34567890 -d decipheredfile

解压缩

python3 tools/inflate.py < decipheredfile > decompressedfile

解锁加密文档

bkcrack -C encrypted.zip -k 12345678 23456789 34567890 -U unlocked.zip password

恢复密码

根据给定的内部密钥,bkcrack还可以尝试找出原始密码:

bkcrack -k 1ded830c 24454157 7213b8c5 -r 10 ?p

我们还可以指定最小的密码长度:

bkcrack -k 18f285c6 881f2169 b35d661d -r 11..13 ?p

例如

php
bkcrack常用参数: -c 提取的密文部分 -p 提取的明文部分 -x 压缩包内目标文件的偏移地址 部分已知明文值 -C 加密压缩包 -o offset -p参数指定的明文在压缩包内目标文件的偏移量 采用8+4的方式提取部分已知明文来进行攻击测试, flag{16e371fa-0555-47fc-b343-74f6754f6c01} 我们利用以下这部分明文,来进行攻击破解: *lag{16e374f6 > \#准备已知明文 > echo -n "lag{16e3" > plain1.txt //连续的8明文 > echo -n "74f6" | xxd //额外明文的十六进制格式,37346636 > > \#攻击 > bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636 > > \#由于时间较长,为防止终端终端导致破解中断,可以加点小技巧 > bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636 > 1.log& //后台运行,结果存入1.log > > //加上time参数方便计算爆破时间 > time bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636 > 1.log& > > //查看爆破进度 > tail -f 1.log
php
这里是jpg图片,利用jpg的文件头:FFD8FFE000104A4649460001 使用命令: echo -n "FFD8FFE000104A4649460001" | xxd -r -ps >key 参数解释: n: 不换行输出 xxd: 用于用二进制或十六进制显示文件的内容 r: 把xxd的十六进制输出内容转换回原文件的二进制内容。 p: 以 postscript的连续十六进制转储输出,这也叫做纯十六进制转储。 s: 从infile的绝对或者相对偏移量开始. + 表示相对于标 输入当前的位置 (如果不标准输入就没有意义了). – 表示从档桉末尾 (如果和 + 连用: 从标准输入当前位置) 向前数一些字符, 从那个地方开始. 如果没有 -s 选项, xxd 从当前位置开始.

2.jenv

添加新的Java环境(需要绝对路径) jenv add <name> <path> 示例:jenv add jdk15 D:\Programme\Java\jdk-15.0.1

更改当前会话的Java版本 jenv使用<name> 示例:jenv use jdk15 用于脚本的环境变量: -PowerShell:$ENV:JENVUSE="jdk17" -CMD/批次:set "JENVUSE=jdk17"

清除当前会话的java版本 jenv使用删除 示例:jenv use remove 用于脚本的环境变量: -PowerShell:$ENV:JENVUSE=$null -CMD/批次:set "JENVUSE="

全局更改Java版本 jenv更改<name> 示例:jenv change jdk15

始终使用此文件夹中的此java版本 jenv本地<name> 示例:jenv local jdk15

清除此文件夹的java版本 jenv本地删除 示例:jenv local remove

列出所有Java环境 Jenv列表 示例:jenv list

从JEnv列表中删除现有JDK jenv删除<name> 示例:jenv remove jdk15

允许使用java目录中的javac、javaw或其他可执行文件 jenv链接<Executable name> 示例:jenv link javac

恢复jenv并自动恢复您选择的Java版本 jenv卸载<name> 示例:jenv uninstall jdk17

自动搜索要添加的Java版本 jenv autoscan [--yes|-y] ?<path>? 示例:jenv autoscan "C:\Program Files\Java" 示例:jenv autoscan //将搜索整个系统示例:jenv autoscan -y "C:\Program Files\Java" //将接受默认值

ubuntu

php
sudo update-alternatives --config java

3.pip

powershell
Get-Content .\requirements.txt | ForEach-Object { if ($_ -notmatch "#") { python3 -m pip install $_ } }
php
while read requirement; do python3 -m pip install "$requirement" || true done < requirements.txt

pyside

php
$ python3.10 -m pip uninstall pyside6 pyside6-addons pyside6-essentials shiboken6 $ python3.10 -m pip cache purge $ python3.10 -m pip install pyside6

python

使用 update-alternatives 工具来管理不同版本的 Python:

php
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 3 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 4 sudo update-alternatives --config python3 conda activate sage-env

正则

. - 除换行符以外的所有字符。

^ - 字符串开头。

$ - 字符串结尾。

\d,\w,\s - 匹配数字、字符、空格。

\D,\W,\S - 匹配非数字、非字符、非空格。

[abc] - 匹配 a、b 或 c 中的一个字母。

[a-z] - 匹配 a 到 z 中的一个字母。

[^abc] - 匹配除了 a、b 或 c 中的其他字母。

aa|bb - 匹配 aa 或 bb。

? - 0 次或 1 次匹配。

* - 匹配 0 次或多次。

+ - 匹配 1 次或多次。

{\*n\*} - 匹配 n次。

{\*n\*,} - 匹配 n次以上。

{\*m\*,\*n\*} - 最少 m 次,最多 n 次匹配。

(*expr*) - 捕获 expr 子模式,以 \1 使用它。

(?:*expr*) - 忽略捕获的子模式。

(?=*expr*) - 正向预查模式 expr

(?!*expr*) - 负向预查模式 expr

WSL

8.密码

键盘坐标密码

1 2 3 4 5 6 7 8 9 0

Q W E R T Y U I O P

A S D F G H J K L

Z X C V B N M

根据上表可以得出,Q是第1 下面的第一个,A是第2下面的第一个……以此类推,每一个字母都会有其对应的数字。

例如:

A 21

B 35

第一个数字代表横向(X坐标)的位置,第二个数字代表纵向(Y坐标)的位置。

但是也有这种表示 (坐标对换)

例如:

A 12

B 53

C 33

A:坐标(1,1) B:坐标(2,1) C:坐标(3,1) D:坐标(4,1) E:坐标(5,1) F:坐标(6,1) G:坐标(7,1) H:坐标(8,1) I:坐标(9,1) J:坐标(10,1) K:坐标(11,1) L:坐标(12,1) M:坐标(13,1) N:坐标(14,1) O:坐标(15,1) P:坐标(16,1) Q:坐标(17,1) R:坐标(18,1) S:坐标(19,1) T:坐标(20,1) U:坐标(21,1) V:坐标(22,1) W:坐标(23,1) X:坐标(24,1) Y:坐标(25,1) Z:坐标(26,1)

本文作者:chi11i

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!