05
2022
02

彩虹表的生成和排序

    几年前自己也曾用rtgen尝试过生成彩虹表,当时摸索的很艰难,没有什么可用的资料,只能自己去对照参数去翻译,去猜测用途,总之最后也没有取得什么好的进展。最近凑巧注意到彩虹表工具Rainbowcrack和rtgen更新了(实际上是2年前更新的),而且rainbowcrack网站上有一个示例说明页了,总之比什么都没有可强多了,我尝试着把说明翻译成中文,如果有朋友要测试这款工具,可以去原网站下载,对照说明来使用,相信能比什么资料都没有强多了。

    目前暂时不打算自己生成彩虹表了,看到有朋友偶尔问这个问题……主要是我的目标是NTLM彩虹表,而一个完善的NTLM彩虹表都实在太大了,对我个人来说存储成本不低,而收益并没有那么大,我需要找到更平衡的方式。总之这次就是把资料和工具都放出来,希望对朋友们有用。以下是翻译的资料。

彩虹表的生成和排序

介绍

RainbowCrack软件通过彩虹表查找来破解哈希。彩虹表是存储在硬盘上的普通文件。

本文档介绍了rtgenrtsort程序。rtgen程序根据用户指定的参数生成彩虹表, rtsort程序对彩虹表进行后处理,以实现快速查找。

完成上述两个步骤后,彩虹表可用于通过rcrack程序破解哈希

使用 rtgen 程序生成彩虹表

rtgen 程序的命令行语法:

rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index
rtgen 哈希类型 字符集 最小位数 最大位数 表索引 链长度 链数量 索引块


   生成包含 6 个彩虹表的彩虹表的示例

rtgen md5 loweralpha-numeric 1 7 0 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 1 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 2 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 3 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 4 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 5 3800 33554432 0


选项:

hash_algorithm

哈希类型

彩虹表是特定于哈希算法的。某个哈希算法的彩虹表仅有助于破解该类型的哈希。
rtgen
程序本身支持许多哈希算法,如 lm,ntlm,md5,sha1,mysqlsha1,halflmchall,ntlmchall,oracle-SYSTEMmd5-half
在上面的示例中,我们生成 md5 彩虹表,以加快 md5 哈希的破解速度。

charset

字符集

字符集包括纯文本的所有可能字符。
"loweralpha-numeric"
代表"abcdefghijklmnopqrstuvwxyz0123456789",它在配置文件charset.txt中定义。

plaintext_len_min

最小位数
plaintext_len_max

最大位数

这两个参数限制了彩虹表的明文长度范围。
在上面的示例中,纯文本长度范围为 1 到 7。 因此,像"a"和"abcdefg
"这样的明文很可能包含在生成的彩虹表中。但是长度为8的明文"abcdefgh"将不被包含。

table_index 1

表索引

table_index参数选择缩减函数。
具有不同table_index参数的彩虹表,使用不同的缩减函数。

chain_len   1

链长度

这是彩虹链的长度。更长的彩虹连锁店存储更多的明文,需要更长的时间来生成。

chain_num   1

链数量

要生成的彩虹链数。
彩虹表只是一系列彩虹链。每个彩虹链的大小为16个字节。

part_index

索引块

要将大型彩虹表存储在许多较小的文件中,请对此部分使用此参数中的不同数字,并保持所有其他参数相同。

 

1 为了充分理解还原函数的含义和彩虹表的结构,阅读Philippe Oechslin的论文是必要的。

有许多彩虹表特征由表生成参数隐式确定:

Table Size

表容量

使用 .rt 彩虹表格式时,彩虹表的文件大小等于chain_num参数乘以16

Key Space

键空间

键空间是可能的明文数,根据字符集和明文长度范围参数中的字符数计算得出。
在上面的示例中,密钥空间为361 + 362 + 363 + 364 + 365 + 366 + 367 = 80603140212

Success Rate

成功率

时间记忆权衡算法是一种概率算法。
无论选择什么参数,生成的彩虹表中始终缺少许多明文(在选定的字符集和明文长度范围内)。
在上面的示例中,所有 6 个彩虹表的成功率为 99.9%
成功率由除hash_algorithm参数之外的所有表生成参数确定。

 

要开始生成第一个彩虹表,请在命令窗口中运行以下命令:

rtgen md5 loweralpha-numeric 1 7 0 3800 33554432 0

CPU将开始计算彩虹链。在具有多核处理器的系统上,所有内核都得到了充分利用。

要暂停表生成,只需按Ctrl + C rtgen程序将退出。下次如果rtgen程序使用完全相同的参数执行,则将恢复表生成。

在一般处理器上,此命令需要数小时才能完成。

完成后,大小为 512 MB 的文件"md5_loweralpha-numeric#1-7_0_3800x33554432_0.rt"位于当前目录中。文件名包含所有表生成参数。

现在生成剩余的 5 个彩虹表:

rtgen md5 loweralpha-numeric 1 7 1 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 2 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 3 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 4 3800 33554432 0
rtgen md5 loweralpha-numeric 1 7 5 3800 33554432 0

最后,生成了 6 个彩虹表:

536,870,912 md5_loweralpha-numeric#1-7_0_3800x33554432_0.rt
536,870,912 md5_loweralpha-numeric#1-7_1_3800x33554432_0.rt
536,870,912 md5_loweralpha-numeric#1-7_2_3800x33554432_0.rt
536,870,912 md5_loweralpha-numeric#1-7_3_3800x33554432_0.rt
536,870,912 md5_loweralpha-numeric#1-7_4_3800x33554432_0.rt
536,870,912 md5_loweralpha-numeric#1-7_5_3800x33554432_0.rt

使用rtsort程序对彩虹表进行排序

彩虹表是彩虹链的阵列。每个彩虹链都有一个起点和一个终点。rtsort程序按端点对彩虹链进行排序,以使二进制搜索成为可能。

运行以下命令对当前目录中的所有 .rt 彩虹表进行排序:

rtsort .

切勿中断 rtsort 程序,否则,正在排序的彩虹表可能会损坏。

如果可用内存空间小于要排序的彩虹表的大小,则需要与彩虹表大小一样大的临时硬盘空间来存储中间结果。

 

 

© 2020 RainbowCrack Project


下载

Version 1.8 (August 25, 2020)

Software

Operating System

GPU Supported

Note

rainbowcrack-1.8-win64.zip

Windows 7, 10

-


rainbowcrack-1.8-win64-gpu.zip

Windows 7, 10

AMD GPU: gfx1010, gfx1011, gfx1012
  NVIDIA GPU: with compute capability 5.* 6.* 7.* 8.*

only works with purchased tables

rainbowcrack-1.8-linux64.zip

Ubuntu 18.04, 20.04

-


rainbowcrack-1.8-linux64-gpu.zip

Ubuntu 18.04, 20.04

AMD GPU: gfx1010, gfx1011, gfx1012
  NVIDIA GPU: with compute capability 5.* 6.* 7.* 8.*

only works with purchased tables


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。