CryptoTester
一种用于处理密码学的实用程序,适用于勒索软件分析。
六角视图
CryptoTester 中使用的所有十六进制视图都提供了一些增强的功能。
- 空字节颜色为浅灰色
- 表示 ASCII 字符的字节为橙色
- 换行模式 (
0D 0A
) 为紫色 - 如果粘贴可用,则在解析为十六进制之前删除所有空格、换行符和公共分隔符
- 用于将字节复制为 C 数组或 BigNum 的右键单击选项
在许多视图(例如Input
和Output
)上,单击偏移行(00 01 02 03...
相应视图上方)将打开一个对话框,显示解码视图旁边的字节。
整数解析
大多数接受整数的输入也接受特殊值和函数。
例子:
- 十六进制:
x10
-> 16 - 输入长度:
len
-> 400 - 块大小:
block
-> 16(所选算法的块大小) - 向上舍入:
up(60, 16)
-> 64 - 向下舍入:
down(60, 16)
-> 48
简单的算术可以与这些函数结合使用。
up(len-x100, b)
– 从输入长度中减去 256,然后四舍五入到所选算法的最接近的块大小(例如 AES 为 16)
任何负值都被假定为len - value
,也称为相对于输入末尾的值。
主面板
加密/解密
主面板包含用于在输入上使用加密原语的工具。十六Input
进制视图接受直接粘贴字节,或者File
可以使用菜单加载文件、文本、base64 编码字节等。文件也可以直接拖放到视图中。
关键选项
允许以多种格式指定密钥,并包含许多散列和密钥派生函数的选项;这些字段适应当前选择的算法及其支持的内容。
注意:密钥的处理顺序与 UI 中显示的顺序相同;首先根据 解码密钥
Format
,然后使用参数进行散列Hash
,最后使用Derive
参数导出,然后将其交给加密算法。Hash
从 v1.7.0.0 开始,您可以交换和处理的顺序Derive
。
密钥的最终输出长度显示在输入框上方。单击此按钮将在单独的对话框中显示最终计算出的密钥。
加密选项
允许选择加密算法及其参数(如果支持)。
注意:(或
IV Bytes
,Nonce
取决于算法)00
如果留空,将自动填充为算法适当长度的字节。
选择选项
可以使用两种不同的模式选择输入:“范围”和“块”。
范围
一个从 开始Offset
并占用Length
字节的简单范围。
除非勾选该复选框,否则每当更改时都会Length
自动更新。 如果您在现场进行了一些计算,并且希望恢复为实际长度,则只需按 按钮即可。Input
Lock Parameters
Length
Input
Reset Length
如果Splice Remaining Bytes
勾选,则之前的任何字节都Offset
将添加到 之前Output
,并且之后的任何字节Offset+Length
都会附加。
块
获取Take
字节,然后跳过Skip
字节,获取Take
字节,跳过Skip
字节……直到 结束Input
。这可用于实际上在明文块之间“交错”的密文。加密算法作为一个连续的块在生成的块上运行,无需重置密钥/IV/随机数等。
如果Splice Remaining Bytes
勾选,则该Skip
部分中的任何字节都会交织回Output
.
输入文件信息
此部分显示有关Input
文件大小、检测到的 MIME(如果是文件)、总熵以及是否能被 16(常见块大小)整除等简单信息。
杂项
和视图具有Input
同步Output
滚动;要禁用此功能,请取消选中Syncronized scrolling
它们之间的复选框。
和🡨
之间的按钮可用于将 移动到视图。Input
Output
Output
Input
或可以使用其视图下方的相应下拉列表进行散列Input
。Output
它还Output
可以运行验证算法(当前对 ECDSA 的支持有限)。
比较
该面板允许将加密文件与其原始文件进行比较。两个视图都支持拖放,或者File -> Open File
可以使用顺序Original
打开Encrypted
。也可以使用任何选项填充
视图;例如,与一定长度的空字节或 Windows 示例图片进行比较。Original
File -> Input
Chrysanthemum.jpg
和视图具有Original
同步Encrypted
滚动;要禁用此功能,请取消选中Syncronized scrolling
它们之间的复选框。
和视图⇆
之间的按钮可用于交换它们的内容。Original
Encrypted
两个视图之间任何不同的字节都将以深红色显示。
原始文件/加密文件信息
分别显示Original
和Encrypted
视图的基本信息。
分析
一旦两个视图都被填充,就会对它们进行快速分析。
- 哈希分析:
Original
检查是否存在任何哈希值Encrypted
- 文件名:检查文件名的常见更改(例如前置/附加或编码)
- BLOB 分析:检查中是否存在任何 CryptoAPI blob
Encrypted
- XOR 分析:检查 XOR 的重复块(或其他简单密码)
- 文件名标记:检查原始文件名是否存在
Encrypted
(UTF-8 或 UTF-16) - 文件大小标记:检查原始文件大小
Encrypted
(以各种形式和编码) - ASCII 标记/分析:检查开头或结尾处的 ASCII(或 base64)标记
Encrypted
压缩/解压
该面板允许原始使用少数压缩算法,并且具有与该Encrypt/Decrypt
面板类似的功能。
工具
斑点分析仪
用于分析 CryptoAPI blob 和 CNG blob 的工具。
如果支持,可以将 BLOB 导入二进制、base64、PEM、XML 和 ASN.1 格式,或从二进制、base64、PEM、XML 和 ASN.1 格式导出。
工具
仅针对支持的 Blob 类型(如果适用)激活的其他 Blob 相关工具。
- 解密 BLOB:允许通过输入 PRIVATEKEYBLOB 来解密 SIMPLEBLOB
- RSA 计算器:将当前 RSA 密钥加载到RSA 计算器工具中
- 修复 BLOB:如果检测到可恢复的损坏,则修复 BLOB
- Blob 生成器:允许生成任何 CryptoAPI Blob
- 翻转字节序:翻转关键内容的字节序(可能会破坏密钥!)
斑点生成器
生成 CryptoAPI blob。会Bit Length
自动更新为所选 的支持值aiKeyAlg
。bType
请注意,和的某些组合aiKeyAlg
无效,并且会引发 CryptoAPI 提供程序的错误。
注意:密钥是使用CryptGenRandom在内部生成的,但我无法保证使用从此实用程序生成的密钥的加密安全性。
RSA计算器
用于分析/计算 RSA 密钥的工具。显示密钥的单独参数,可以显示为十进制或十六进制。如果存在足够的参数,则可以计算密钥的其余部分。
密钥可以以各种格式导出,包括 CryptoAPI blob、CNG blob、PEM、XML 和 ASN.1,导出到文件、剪贴板或主窗口(加密/解密)。此外,如果导出到主窗口,可以导出原始整数以用于原始 RSA 算法。
钥匙查找器
一种在文件中搜索多种格式的加密密钥的工具。
支持的格式示例:
- 加密 API 斑点
- 压缩天然气斑点
- ASN.1 斑点
- NTRU 斑点
- 以上所有内容均为 ASCII 十六进制字符串
- 以上全部为base64(或损坏的base64)
- PEM 密钥
- XML 键
- 十六进制字符串形式的原始 RSA 模数和指数
随机数生成器测试员
用于测试各种已知 PRNG 算法的工具。
种子选项
设置Seed
PRNG 的起始位置。
RNG 选项
设置 PRNGAlgorithm
以及要生成的输出,以及应用于每个输出的Length
选项。Modulus
例如,aModulus
可xFF
用于将每个输出转换为一个字节。
输出
- 格式:输出每个随机数的格式为
如果Alpha
选择:
- 字符集:映射每个随机数的字符集
- 预设:自动填充的常用预设字符集
- 跳过字符:如果要输出此列表中的字符,则会跳过该字符,并轮询下一个随机数
生成的输出的熵也会显示在Alpha
输出中。这是对盲目暴力破解输出(不直接攻击 PRNG)的熵(或可能性数量)的粗略估计。
基本编码器
使用不同基本编码的工具。支持标准预设字符集,或提供您自己的自定义字符集。
除了使用校验和的编码器(例如比特币的 Base58Check)之外,解码是在不验证填充的情况下完成的,因此即使是部分或损坏的编码也将被原始解码。
字符串编码器
用于同时查看 ASCII、UTF-8 和 UTF-16 格式的文本或字节的工具。
ECC验证器
用于验证椭圆曲线点的工具。可以从 ECPoint(未压缩或压缩形式)、PEM 或 CNG blob 导入/导出。
运营
根据当前面板进行的各种操作。
XOR 文件/AND 文件
从面板中获取Original
and ,并应用 XOR 或 AND 运算,并显示流。Encrypted
Compare
生成密钥流
使用面板中的算法信息Encrypt/Decrypt
并生成给定长度的密钥流以保存到文件。
视觉差异
显示面板中像素之间差异的图表Compare
。
暴力破解算法
使用提供的关键材料和面板Input
中的关键材料Encrypt/Decrypt
以及给定的预期输出,并枚举该Encryption Options
部分中的所有可能选项以尝试找到匹配项。
暴力破解密钥
Input
该工具可用于根据指定的密码参数测试已知密钥的列表或文件夹。
- 密钥文件格式:指定输入的预期格式,例如每行使用 base64 编码的密钥,或
Byte Count
一次获取文件的字节。 - 预期输出:预期输出为字节,或只是任何非空输出(仅应与有效的填充方案一起使用)
如果密钥匹配成功,该Select
按钮将被激活,以允许将密钥及其参数传递到主窗口。
尝试盲解密
使用所选密码的块大小,枚举每个可能的块并尝试使用指定的密钥进行解密。
示例:您有一个 RSA-2048 私钥和一个0x1000
可能密文的字节 blob,如Input
. 使用此操作将尝试解密Input[0x00:0x100]
, then Input[0x01:0x101]
, thenInput[0x02:0x102]
等等…
注意:该操作目前仅支持RSA算法。它还限制最多 10000 个输入字节。
先进的
小尾数法
内部使用小端(如果算法支持)。
风俗
如果所选算法支持任何参数,则允许设置自定义参数。例如,Salsa20 系列算法支持自定义轮数、常数、位置或输入原始矩阵。
四号
IV 的选项,例如从文本或 Base64 输入,以及从已知明文恢复 IV。
预设
某些加密方案的预设,例如 OpenSSL。
反转输入字节
简单地反转 的字节顺序Input
。
转变
用于转换的小工具。
双字 ⇆ 整数
将整数转换为 DWORD,或将 DWORD 字节转换为整数。
十六进制 ⇆ 整数
将十六进制字节转换为整数列表,或将整数列表转换为字节。可以选择设置输出的空格和逗号。