📄 rcracktutorial.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>RainbowCrack v1.0 tutorial</title>
</head>
<body>
<h1>RainbowCrack tutorial</h1>
<p><font size="2">by Zhu Shuanglei <shuanglei@hotmail.com><br>
<a href="http://www.antsight.com/zsl/rainbowcrack/">http://www.antsight.com/zsl/rainbowcrack/</a></font></p>
<hr size="1">
<p>RainbowCrack is a general propose implementation of <a href="http://lasecwww.epfl.ch/philippe.shtml">Philippe
Oechslin</a>'s <a href="http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Oech03">faster
time-memory trade-off technique</a>.
In this tutorial, we will guide you through the steps to build a instant
windows password cracker. You can always take Philippe Oechslin's paper as a
good reference if you
want some in depth understanding of the theory.<br>
</p>
<h2>1. Some basis of Time-Memory Trade-Off
</h2>
<p>There are two typical attacks in cryptanalysis of block ciphers: brute force
and table precomputation. In brute force, an attacker tries all possible keys to
encrypt a known plaintext for which he has the corresponding ciphertext. The
idea of table precomputation is to precompute and store encryptions of a chosen
plaintext and corresponding keys for all possible keys. </p>
<p>RainbowCrack use the second method. It precompute and store all possible
plaintext - hash pairs in files so called "rainbow
table". Any time the plaintext of a hash is required, you just look up the precomputed tables and find the
plaintext in seconds.<br>
</p>
<h2>2. Select the configuration
</h2>
<p>First of all, we will select the configuration of the attack. There ars so
many parameters to be adjusted in the theory: the success rate you want, the
charset to use, the hard disk space you can afford and so on. If you know
the theory well, you can work on you own. If not, we have prepared some typical parameter configurations for you. They are optimized to
the best of my knowledge.
</p>
<p>NOTE: All the configurations below are ready for a 666MHz CPU. If your CPU
is faster, the performance will be better.
</p>
<table border="1" width="100%" cellspacing="0">
<tr>
<td width="100%" colspan="2">configuration #0</td>
</tr>
<tr>
<td width="39%">hash algorithm</td>
<td width="61%"> lm</td>
</tr>
<tr>
<td width="39%">charset</td>
<td width="61%"> alpha (ABCDEFGHIJKLMNOPQRSTUVWXYZ)</td>
</tr>
<tr>
<td width="39%">plaintext length range</td>
<td width="61%"> 1 - 7</td>
</tr>
<tr>
<td width="39%">key space</td>
<td width="61%"> 26^1 + 26^2 + 26^3 + 26^4 + 26^5 + 26^6 + 26^7 = 8353082582</td>
</tr>
<tr>
<td width="39%">t</td>
<td width="61%">2100</td>
</tr>
<tr>
<td width="39%">m</td>
<td width="61%">8000000</td>
</tr>
<tr>
<td width="39%">l</td>
<td width="61%">5</td>
</tr>
<tr>
<td width="39%">disk usage</td>
<td width="61%">m * 16 * l = 640000000 B = 610 MB</td>
</tr>
<tr>
<td width="39%">success rate</td>
<td width="61%"> 0.9990</td>
</tr>
<tr>
<td width="39%">mean cryptanalysis time</td>
<td width="61%"> 3.7841 s</td>
</tr>
<tr>
<td width="39%">mean cryptanalysis time on a low memory system (free memory
size much smaller than 122MB)</td>
<td width="61%" valign="top"> 8.2836 s</td>
</tr>
<tr>
<td width="39%">max cryptanalysis time</td>
<td width="61%"> 31.1441 s</td>
</tr>
<tr>
<td width="39%" valign="top">table precomputation commands</td>
<td width="61%">rtgen lm alpha 1 7 0 2100 8000000 all<br>
rtgen lm alpha 1 7 1 2100 8000000 all<br>
rtgen lm alpha 1 7 2 2100 8000000 all<br>
rtgen lm alpha 1 7 3 2100 8000000 all<br>
rtgen lm alpha 1 7 4 2100 8000000 all</td>
</tr>
<tr>
<td width="39%" valign="top">table precomputation time</td>
<td width="61%">2 days 18 hours</td>
</tr>
</table>
<p>Some explanations:
</p>
<table border="0" width="100%" cellspacing="0">
<tr>
<td width="22%">
hash algorithm</td>
<td width="78%"> we will generate rainbow tables for lanmanager hash(lm),
other hash algorithms(md5, sha1 ...) are also possible</td>
</tr>
<tr>
<td width="22%">
charset</td>
<td width="78%"> we use alpha characters as the plaintext charset</td>
</tr>
<tr>
<td width="22%">
plaintext length range</td>
<td width="78%"> length range of the plaintext<br>
for example: if you use charset alpha and plaintext length range
"4-6", "AAAA" and "ZZZZZZ" are among the key
space; "AAA" is not because it has a length 3</td>
</tr>
<tr>
<td width="22%">
key space</td>
<td width="78%">There are 8353082582 different alpha only
plaintexts.</td>
</tr>
<tr>
<td width="22%">t</td>
<td width="78%">rainbow chain length, see the <a href="http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Oech03">paper</a>
for detail</td>
</tr>
<tr>
<td width="22%">m</td>
<td width="78%">
rainbow chain count of each rainbow table, see the <a href="http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Oech03">paper</a>
for detail</td>
</tr>
<tr>
<td width="22%">l</td>
<td width="78%">
rainbow table count, see the <a href="http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Oech03">paper</a>
for detail</td>
</tr>
<tr>
<td width="22%" valign="top">
disk usage</td>
<td width="78%"> disk space required to store all generated rainbow
tables<br>
each rainbow chain will take 16 bytes (8 bytes for a start point and 8 bytes for
a end point)</td>
</tr>
<tr>
<td width="22%" valign="top">
success rate</td>
<td width="78%">When the rainbow tables have been generated, you will have
the probability 99.9% to crack an alpha only password.<br>
Due to the nature of the theory, this is not a granted attack.</td>
</tr>
<tr>
<td width="22%" valign="top">mean cryptanalysis time</td>
<td width="78%">You need 3.7841 seconds to crack an alpha password on
average.<br>
It does not take into account the time spent on "false alarm".<br>
See the <a href="http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Oech03">paper</a>
to find out what is a "false alarm".</td>
</tr>
<tr>
<td width="22%" valign="top">mean cryptanalysis time on a low memory system</td>
<td width="78%">If you don't have enough free physical memory to hold one
rainbow table a time, the program (rcrack.exe) will have to load the table
chunk by chunk and search the table chunk by chunk. Losing the change of
finding the password in early time.<br>
It does not take into account the time spent on "false alarm".</td>
</tr>
<tr>
<td width="22%" valign="top">max cryptanalysis time</td>
<td width="78%">If the password you are searching is not covered by the
rainbow tables. You will have to search all tables only to find nothing.<br>
It does not take into account the time spent on "false alarm".</td>
</tr>
<tr>
<td width="22%" valign="top">table precomputation commands</td>
<td width="78%">Use the utility "rtgen.exe" in the distribution
and these commands to generate the rainbow tables which are required to launch the
attack.<br>
(see next section of the tutorial for more)</td>
</tr>
<tr>
<td width="22%" valign="top">table precomputation time</td>
<td width="78%">Table precomputation is time expensive. This is the meaning
of "Time-Memory Trade-Off".</td>
</tr>
</table>
<table border="1" width="100%" cellspacing="0">
<tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -