使用的版本RainbowCrack版本为1.7
工具下载地址为:http://project-rainbowcrack.com/
彩虹表目的就是破解Hash:
“破解Hash的任务就是,对于给出的一个q,反算出一个p来满足q = H(p)。通常我们能想到的两种办法,一种就是暴力破解法,把P中的每一个p都算一下H(p),直到结果等于q;另一种办法是查表法,搞一个很大的数据 库,把每个p和对应的q都记录下来,按q做一下索引,到时候查一下就知道了。这两种办法理论上都是可以的,但是前一种可能需要海量的时间,后一种需要海量 的存储空间,以至于以目前的人类资源无法实现。”
所以为了平衡了时间和空间,彩虹表产生了,一组包含明文与密文的hash链表。使得解密的时间和空间可以承受。
基本步骤:
生成彩虹表(rtgen)——> 排序(rtsort)——> 破解(rcrack)
生成彩虹表可以用以下命令:
rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index
翻译如下:
rtgen 哈希类型 字符范围 最小位数 最大位数 表索引 链长度 链数量 索引块
哈希类型:LM,HTLM,MD5,SHA1,SHA256,几种常见HASH
其中有两个参数不太好理解:table_index和part_index。如果想详细研究可以参考以下论文: Philippe Oechslin's original paper
首先生成一个覆盖率较低的Rainbow Table,然后用此表来破解
md5("11111")= b0baee9d279d34fa1dfd71aadb908c3f
如果是linux ,可以采用openssl来进行测试
echo -n 11111 | openssl md5 # 生成11111的md5值
关于openssl可以参考我的另外一篇博文,
https://www.jianshu.com/p/ee0ee6da3aa7
rtgen md5 numeric 5 5 0 100 200 0
rtsort .
这里不能省略. ,"." 表示当前文件夹。
rcrack . -h b0baee9d279d34fa1dfd71aadb908c3f
如下图所示表示破解成功。
文章主要参考http://blog.csdn.net/haungrui/article/details/7259945,并根据系统情况作了适当修正。