home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 May / PCWorld_2001-05_cd.bin / Software / TemaCD / crark / CRARK.TXT < prev    next >
Text File  |  2001-02-18  |  27KB  |  719 lines

  1.  
  2.                            c R A R k
  3.                    (First & Fastest RAR Cracker)
  4.                             v. 2.3a
  5.  
  6.          (c) Copyright PSW-soft 1995-2001 by P. Semjanov
  7.  
  8.  
  9. THIS PROGRAM VERSION  IS DISTRIBUTED "AS  IS". YOU MAY  USE IT
  10. AT YOUR OWN RISK. ALL THE CLAIMS TO PROGRAM OPERATION WILL  BE
  11. REJECTED.  THE  AUTHOR  DOES  NOT  ALSO GUARANTEE THIS PROGRAM
  12. FUTURE MAINTENANCE AND UPDATE.
  13.  
  14. This is FREEWARE program, so it can be distributed under the
  15. following conditions: program code is kept unchanged and the
  16. program is distributed in the form of distributive archive.
  17. Any commercial use of this program is prohibited!
  18.  
  19. 1. PURPOSES AND CHARACTERISTICS
  20.  
  21. The cRARk  program  is  designed  to  determine  a "forgotten"
  22. password for  RAR-archives. This  program operates  adequately
  23. with  RAR-archives   versions   2.0x (for RAR archvies version
  24. 1.5x use cRARk v, 1.5x)
  25.   and   also   with
  26. NOTE: Some RAR 2.0 BETA archives may be not supported.
  27.  
  28. To proceed  with cRARk program you  need a  computer with  the
  29. 80386 compatible processor or later. It is recommended to  use
  30. as powerful processor as  possible (the code is  optimized for
  31. Pentium/Pentium II).
  32.  
  33. cRARk is the tool for professionals,  no GUI or  great service
  34. is  provided.  But  it  tries  to  maximize your abilities for
  35. passwords definition and to  minimize search  time. cRARk uses
  36. Password  Cracking  Library  (PCL),   a  very  powerful   tool
  37. allowing you to define rules to generate passwords.
  38.  
  39. The rate of password search is approximately
  40.    2000
  41. ---------  pass/sec on a Pentium II/333 class computer, where
  42. [(n+1)/2]
  43.  
  44.    n  is the password length;
  45.   [x] is ceil (x),
  46.  
  47. so finding the 6-characters password of lower case  Latin
  48. letters will need about a  week. Rate for dictionary attack is about 400 pass/sec.
  49. For stored files the speed is much slower and depends of
  50. file length.
  51.  
  52. 2. REQUIREMENTS FOR INPUT ARCHIVE
  53.  
  54. To ensure  the program  to process  an RAR-archive  under test
  55. successfully, the following requirements are to be met:
  56.  
  57.   - There is at least one encrypted file.
  58.   - This file must not be split in a several archives using the -v option.
  59.   - For maximum speed, this file must be not stored (-m0 option). If
  60. the program displays the warning about it you could simply remove such file
  61. from archive. See -m option too.
  62.   In case  of solid-archives,  the first file should satisfy these requirements
  63. Therefore, if the files in archive were  encrypted
  64. with the different passwords, the password for fistr file will be found.
  65.    cRARk must be working with sfx-archives.
  66.  
  67. 3. Working with the program.
  68.  
  69. To  run  the  program  YOU  ARE TO CREATE PASSWORD
  70. DEFINITION FILE firstly (see section 4).
  71.  
  72. You  may  run  the  program  under MS-DOS, any Windows, Linux.
  73. You need  any DPMI-host  to run  the program  under MS-DOS. If
  74. you have  no DPMI-host,  you may  use FREEWARE  CWSDPMI (it is
  75. not    included    in    this    package),    get    it     at
  76. ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2misc/csdpmi5b.zip.
  77.  
  78. This is a command-line utility! To run the program you should use:
  79.  
  80. CRARK [options] archive
  81.  
  82. The password determined is printed in such a form:
  83.  
  84. truepass - CRC OK
  85. Next it is repeated in hexadecimal PCL-like form (see 4.2.1).
  86.  
  87. All other messages ARE NOT passwords and are intended as progress
  88. indication of the program.
  89.  
  90. Options in this mode are:
  91.  
  92.    -lXX  -  to  set  password  length  to  XX at least (XX =
  93. 0..255, XX =  1 by default).  This parameter affects  password
  94. length only when  '*' is used  in its definition  (see section
  95. 4.2.1);
  96.    -gXX - to set password length to XX at most (XX = 0..255,
  97. XX = 8 by default);
  98.    -mXX - Sets the first symbol of decompressed file in a
  99. hexadecimal form. It is frequently known from its extension
  100. (.EXE - 4D, .DOC -D0, .ARJ - 60 etc.). Using this option is allowed
  101. on stored files only and reduces the searching time.
  102.      -pXXXX  -  to  set  the  name of password definition file
  103. ("PASSWORD.DEF" by  default). Long  file names  are supported under
  104. Windows 95/98 only (not MS DOS or Windows NT);
  105.      -b - to perform benchmarking;
  106.      -v - debug mode (see section 5.1). It may be used to show
  107. character  sets  in  use.  This  option generates also all the
  108. passwords according to with their definition; it does not test
  109. but prints them, so you can check their validity.
  110.  
  111.    -5 - use Pentium optimized code.
  112.  
  113.    -6 - use Pentium Pro/II optimized code (also is better for AMD). If
  114. none of the last  2 options are not  defined, the CPU is  autodetected
  115. and the best code is chosen.
  116.  
  117.  
  118. 4. THE USE OF PASSWORD DEFINITION FILE IN CHOOSING OF MODE  OF
  119. OPERATION AND PASSWORD SET
  120.  
  121. Password   definition   file   is   the   main  control  file.
  122. Its translation  and processing  are   the main  task of   PCL
  123. library.  Its format  doesn't depend on application,  to which
  124. PCL is linked,  so this  library can be used for any  password
  125. searching program.
  126.  
  127. 4.1. Password definition file format
  128.  
  129. Password definition file is an ordinary text file and consists
  130. of  two   parts:  firstly,   dictionary  and   character   set
  131. definition, and secondly, passwords definition; the  parts are
  132. separated by a line of two '##' symbols:
  133.  
  134. [ <dictionary and character set definition> ]
  135. ##
  136. <passwords definition>
  137.  
  138. The  first  part  may  be  omitted,  in  that  case   password
  139. definition file is to begin with '##' symbols.
  140.  
  141. Anywhere  else  the  symbol  '#'  is  considered  as a comment
  142. beginning.
  143.  
  144. Space characters and tabs  are ignored in password  definition
  145. file and may separate any components.
  146.  
  147. For  convenience,  let  password  definition  mechanism be our
  148. first concern and character set definition be the second  one,
  149. contrary to their position in password  definition file.
  150.  
  151. 4.2. Password  definition
  152.  
  153. This is the main part of the file. IT NECESSARILY PRESENTS  IN
  154. ANY  PASSWORD  DEFINITION  FILE  (PASSWORD.DEF) AFTER THE LINE
  155. '##' and presets password generation rules to be checked later
  156. on. It consists  of text lines,  each giving its  own password
  157. set and  mode of  operation, i.  e. an  algorithm of  password
  158. search.  Each  line  is  in  its  own  right  and is processed
  159. separately,  so  the  total  number  of  passwords  checked is
  160. computed.
  161.  
  162. Character sets and dictionary words form password  definition.
  163. They  preset  one  or  more  characters,  which  will hold the
  164. appropriate position in a password.
  165.  
  166. 4.2.1. Character sets
  167.  
  168. Character  set  (charset)  is  a  set of characters, which can
  169. occupy current position  in a password  (but, of course,  only
  170. one of them holds it). These characters may be following:
  171.  
  172. 1) Ordinary characters (a, b, etc.). It means that it is  this
  173. character that occupies given position in a password;
  174.  
  175. 2) Shielded characters. Special  characters, if ever occur  in
  176. the password,  are to  be shielded.  The meaning  is identical
  177. with mentioned above. Among these are:
  178.  
  179.      \$, \., \*, \?, \=        '$', '.', '*', '?', '='
  180.      \], \[, \{, \}, \(, \)    corresponding brackets;
  181.      \ (space character)       space character
  182.     \XX, where X is a hexadecimal digit
  183.                                any hex-code character
  184.      \0                        no character. It is usually
  185. used in conjunction with "real" character (see examples below).
  186.  
  187. Generally, any  character can  be shielded  except hexadecimal
  188. digits.
  189.  
  190. 3) Macros of character set. It means that current position  in
  191. the password can  be occupied by  any character from  the set.
  192. These sets are specified in the first part of password defini-
  193. tion file (see section 4.3.2) and are denoted as:
  194.  
  195.      $a  -  lower-case  Latin  letters  (26  letters,   unless
  196.             otherwise specified);
  197.  
  198.      $A  -  upper-case  Latin  letters  (26  letters,   unless
  199.             otherwise specified);
  200.  
  201.      $!  -  special   characters   (32    characters,   unless
  202.             otherwise specified);
  203.  
  204.      $1  -  digits (10 digits, unless otherwise specified);
  205.  
  206.      $i  -  lower-case   letters of   national alphabet    (33
  207.             letters for Russian alphabet);
  208.  
  209.      $I  -  upper-case  letters   of  national  alphabet   (33
  210.             letters for Russian alphabet);
  211.  
  212.      $o  -  other user-specified characters;
  213.  
  214.      ?   -  any character (i. e. all the characters,  included
  215.             into the macros mentioned above).
  216.  
  217. NOTE: macros $v and $p (see section 4.3.4) cannot be used  for
  218. password definition.
  219.  
  220. 4) Any combinations of  the characters mentioned above.  It is
  221. written  in  square  brackets.  The  meaning is identical with
  222. mentioned above. For example:
  223.  
  224.     [$a $A]                    any Latin letter;
  225.     [abc]                a, or b, or c;
  226.     [$1 abcdef]            hexadecimal digit;
  227.     [s \0]                s or nothing;
  228.     [$a $A $1 $! $i $I $o]            this is equivalent to ?.
  229.  
  230. 5)  Regular  duplication  character  '*'.  It  means  that the
  231. preceding character set  is to be  duplicated 0 or  more times
  232. in  corresponding  (next)  positions  of  the  password.   For
  233. example:
  234.  
  235.      $a *     -  a password of arbitrary length, consisting
  236.                     of lower-case Latin letters;
  237.      [ab] *   -  space character, a, b, aa, ab, ba, bb,
  238.                  aaa, ...
  239.      [$a $A] [$a $A $1] *   -  "identifier", i. e. a sequence
  240.                  of letters and digits with a letter at first
  241.                  position.
  242.  
  243. Note that password of zero length is physically meaningful and
  244. is not always the same as no password at all.
  245.  
  246. The length   of duplication    is computed   automatically  by
  247. options,   on   the   basis   of   given  maximum  and minimum
  248. password  length.  Note,   that  these   parameters  influence
  249. only  password  length,  generated   with  the  use   of   '*'
  250. character,  and  are   not  taken  into  account for password,
  251. consisting  of  words  or   static  characters  only.  It   is
  252. recommended to use  '*' as wide  as possible. This  is because
  253. it allows to perform the  most  powerful search. Although  the
  254. constructions '? *'  and '? ? *'  seem  to be alike   from the
  255. logic standpoint,   the first   one will   be searched through
  256. faster.
  257.  
  258. Current   restriction:  '*'   can  be   the  last    character
  259. in the line only.
  260.  
  261. 4.2.2. Dictionary words and their modifiers
  262.  
  263. The  words  present  several  consecutive  characters  of  the
  264. password as  opposed to  character set.  Two dictionaries  are
  265. supported in PCL library: main (with ordinary words, as usual)
  266. and  user  (where  special  information  can  be  stored,  for
  267. example, names,  dates, etc.),  though there  is no difference
  268. between them.
  269.  
  270. Dictionary is a text  file, consisting of words,  separated by
  271. the  end-of-line  characters.  Both  DOS-format  (CR/LF)   and
  272. UNIX-format  (LF)  files  may  be  used.  It  is desirable (to
  273. increase search rate, among other factors) to use words of the
  274. same (lower) case in dictionaries.
  275.  
  276. Thus, there are two macros:
  277.  
  278.     $w    a word from the main dictionary;
  279.     $u    a word from the user dictionary.
  280.  
  281. It is known that altered words are often used as passwords. So
  282. to determine such passwords a  whole set of word modifiers  is
  283. put into use. Among these are:
  284.  
  285.     .u (upper)        to upper-case;
  286.     .l (lower)        to lower-case;
  287.     .t (truncate)        to truncate up to the given length;
  288.     .c (convert)        to convert the word;
  289.     .j (joke)        to upper-case some letters;
  290.     .r (reverse)        to reverse the word;
  291.     .s (shrink)        to shrink the word;
  292.      .d (duplicate)           to duplicate the word.
  293.  
  294. Modifiers may have parameters, written in round brackets.  For
  295. modifiers, intended for use with single letters, the number of
  296. the letter can be considered as a parameter; no parameters  or
  297. null  parameter  means  "the  whole  word".  Letters  can   be
  298. numerated both from the beginning of the word and from the end.
  299. The end of the word is denoted with the character '-'.
  300.  
  301. There are only three such modifiers for today: .u, .l, .t. So,
  302. use
  303.  
  304.      .u  or .u(0)     to upper-case the whole word (PASSWORD);
  305.      .u(1), .u(2)     to upper-case only the first (the second)
  306.                       letter (Password, pAssword);
  307.      .u(-), .u(-1)    to upper-case the last (the next to last)
  308.                       letter (passworD, passwoRd);
  309.      .t(-1)           to truncate the last letter in the word
  310.                       (passwor).
  311.  
  312. The  other  modifiers  operate  with  the whole words only and
  313. their parameters give the  way of modification. The  following
  314. modifier parameters are specified for today:
  315.  
  316.      .j(0) or .j      to upper-case odd letters (PaSsWoRd);
  317.      .j(1)            to upper-case even letters (pAsSwOrD):
  318.      .j(2)            to upper-case vowels (pAsswOrd);
  319.      .j(3)            to upper-case consonants (PaSSWoRD);
  320.      .r(0) or .r      to reverse the word (drowssap);
  321.      .s(0) or .s      to reduce the word by discarding vowels
  322.                       unless the first one is a vowel
  323.                       (password -> psswrd, offset -> offst);
  324.      .d(0) or .d      to duplicate the word (passwordpassword);
  325.      .d(1)            to add reversed word (passworddrowssap);
  326.      .c(<number>)     to convert all the letters in the word
  327.                       according to the appropriate conversion
  328.                       string (see section 4.3.3).
  329.  
  330. All the  modifiers operate   adequately with  both Latin   and
  331. national  letters,  provided  that   the  rules  of   national
  332. character sets definition are observed.  Clearly there can  be
  333. more than one modifier  (the number  of  consecutive modifiers
  334. is   limited by  63, which  is unlikely  to be  exceeded). For
  335. example: (let $w mean a password):
  336.  
  337.     $w.u(1).u(-)        PassworD
  338.     $w.s.t(4)        pssw
  339.     $w.t(4).s        pss
  340.  
  341.  
  342. 4.2.3. Permutation brackets
  343.  
  344. The problem is  widely met, when  you remember your  password,
  345. but it is not do for some reason. Probably, you have  mistaken
  346. while typing it. This program has its own algorithm to restore
  347. such passwords. The following typing mistakes are  considered:
  348. two neighboring  letters are  swapped (psasword),  a letter is
  349. omitted (pasword), an unneeded letter is inserted  (passweord)
  350. or  one  letter  is  replaced  with  another  (passwird). Such
  351. password changes will be referred to as permutations.
  352.  
  353. To indicate the beginning and  the end of that portion  of the
  354. password where permutations could appear, permutation brackets
  355. '{' and '}'  are used. The  bracket '}' can  be followed by  a
  356. number of permutations  (1 by default),  separated by a  point
  357. (or in round brackets). The physical meaning of the number  of
  358. permutations  is  the  number  of  simultaneous  mistakes. For
  359. example:
  360.  
  361.      {abc}  -  182  (different)  passwords  will  be obtained,
  362. including:
  363.  
  364.      bac, acb           2 swaps;
  365.      bc, ac, bc         3 omissions;
  366.      aabc, babc ...     4 * 26 - 3 insertions;
  367.      bbc, cbc ...       3 * 25 replacements;
  368.      abc                the desired word;
  369.  
  370.      {password}.2 or {password}(2) - the following words  will
  371. be generated: psswrod, passwdro, paasswor, etc.;
  372.  
  373.      {$w} - all  the words, containing  one mistake, from  the
  374. main  dictionary.
  375.  
  376. Notes:
  377. 1) It  is obvious  that some  passwords will  be obtained more
  378. than once, so  the larger is  the number of  permutations, the
  379. larger is the  number of replicas.  Efforts were made  in this
  380. program to reduce replicas, but they are purely empirical  and
  381. were made for  two permutations at  most. In other  words, for
  382. the  large  numbers  there  is  no certainty that a particular
  383. password  cannot  be  discarded  erroneously.  Fanatics of the
  384. theory  of  combinations  can  compute  the  exact  number for
  385. {password}.3, for  example, then  I'll be  able to  compare it
  386. with that one obtained by the program.
  387.  
  388. 2) For insertion  and replacement you  are to know  the set of
  389. characters to be inserted or  replaced. In the event this  set
  390. is not specified explicitly (see section 4.3.4), this  program
  391. forms  it  automatically  for  character  sets, in relation to
  392. standard set these characters  are from (i. e.  for {password}
  393. $a will be inserted, for {Password} [$a $A] will be inserted).
  394. The similar operation  with words is  performed, based on  the
  395. first word from the dictionary with modifiers being taken into
  396. account. In the event this set is specified explicitly, it  is
  397. just the set to be used.
  398.  
  399. 3)  Current  restriction  is  that  the  character  '{'   must
  400. necessarily   be   the     first    in   the     line.    Such
  401. expressions   as  good_{password} remain to be  supported, but
  402. {good}_password is quite possible.
  403.  
  404. 4.3. Dictionaries and character sets definitions
  405.  
  406. All  the  definitions  are  set  in  the beginning of password
  407. definition file up to the characters '##'.
  408.  
  409. 4.3.1. Dictionaries definition
  410.  
  411. The main and user dictionaries in use (see section 4.2.2)  are
  412. initially defined as  usual. It is  necessary only if  you are
  413. going  to  use  words  from  the  dictionaries  when  defining
  414. passwords, i. e. $w or $u.
  415.  
  416. The dictionaries are given as follows:
  417.  
  418. $w = "main.dic"                    # main dictionary
  419. $u = "c:\\dict\\user.dic"          # user dictionary
  420.  
  421. File  name  is  to  be  quoted,  the path characters are to be
  422. shielded. Long file names are adequate for Windows 95/98  only
  423. (not for MSDOS or Windows NT).
  424.  
  425. 4.3.2. Definition of the character sets in use
  426.  
  427. Then character  sets in  use are  defined, as  usual. They are
  428. classified  in  two   groups:  predefined  and   user-defined.
  429. Predefined sets include:
  430.  
  431.     $a    lower-cased Latin letters, 26 letters in all;
  432.     $A    upper-cased Latin letters, 26 letters in all;
  433.      $!       special characters {}:"<>?[];\',./~!@#$%^&*()_+`-=\|,
  434.               32 characters in all;
  435.     $1    digits, 10 digits in all.
  436.  
  437. User-defined sets include
  438.  
  439.     $i    lower-cased letters of national alphabet;
  440.     $I    upper-cased letters of national alphabet;
  441.      $o       additional character set (for example, any
  442.               non-typable characters).
  443.  
  444. Character sets are defined as follows:
  445.  
  446.     $<charset> = [ <single characters or character sets> ]
  447.  
  448. To  put  this  another  way,  character  set  is  written   as
  449. combination of characters (see section 4.2.1), for example:
  450.  
  451.     $i = [ !"#$%&'()*+,-./`abcdefghijklmnoq]
  452.     $o = [$! $1 \FF]
  453.  
  454. NOTES:
  455. 1) Any  character sets  are allowed  to be  defined, including
  456. pre-defined.  For  example,    you  may  include    additional
  457. characters, such as space character or \FF into the set $!
  458.  
  459. 2) When the sets $i and $I are being defined, the function  of
  460. switching between lower/upper  case is defined  automatically.
  461. So it is important to have letters being ordered uniformly  in
  462. these sets.
  463.  
  464. The full character  set '?', consisting  of [$a $A  $1 $!$i $I
  465. $o] (just such an order is of importance in the next section),
  466. is never formed until all the characters are defined.
  467.  
  468. 4.3.3. Definition of conversion modifiers
  469.  
  470. Then  conversion  modifiers  .c  may  be  defined (see section
  471. 4.2.2) in relation to the certain character set ?. It is
  472. performed with the line of the form
  473.  
  474.      ?.c(<a number>) = "<conversion string>"
  475.  
  476. Any  character  from  the   whole  set  is  converted into  an
  477. appropriate  character,   occupying  the   same  position   in
  478. transformation string. For example, let
  479.  
  480.     ?      = [1234567890], then
  481.     ?.c(0) = "!@#$%^&*()"
  482.  
  483. gives transformation  identical to  that for  Shift keystroke.
  484. The characters '\' and ' " ' are to be shielded in  conversion
  485. string. The numbers of modifiers may vary from 0 to 255.
  486.  
  487. 4.3.4.Special character sets definition
  488.  
  489. Among special character sets are:
  490.  
  491.      $v  - a set of vowels (in all alphabets being used). It is
  492.            needed only when .s and .j modifiers are used.
  493.      $p - a set for insertion and replacement for  permutation
  494.           brackets. It is needed only if automatic  generation
  495.           of this set does not  suit you for some reason  (see
  496.           section 4.2.3).
  497.  
  498. These sets are defined in a similar way to the other character
  499. sets.
  500.  
  501. 4.4. USEFUL EXAMPLES OF PASSWORD DEFINITION
  502.  
  503. 0) The most  typical password definition,  similar to that  of
  504. preceding program versions,  is "$s(2) $s(3)  $a *". It  means
  505. that the first three characters, obtained by the program,  are
  506. to be used and lower-cased Latin letters are to be added next.
  507.  
  508. The second password character is determined rather inaccurately, so the
  509. following definition is recommended also:
  510.  
  511.     "$s(1) $a $s(3) $a *"   (don't use quotes!)
  512.  
  513. If you are searching  through some other character  set, don't
  514. forget to set it to  the second position of the  password. For
  515. example:
  516.  
  517.     "$s(1) [$! $1] $s(3) [$! $1] *"   (don't use quotes!)
  518.  
  519. 1) Let me cite ZEXPL2L program specification:
  520. "Let  you  have  an  archive  with  the  password looking like
  521. "Heaven!!!", but you have forgotten, how many !s were there in
  522. the end and  what kind of  letters lower- or  upper-cased were
  523. used: "HeAvEn!!!", "Heaven!" or "HeAven!!!!". But  fortunately
  524. you remember your password to  be 10 characters at most  and 7
  525. characters at  least." This  password will  be written  in PCL
  526. language as follows:
  527.  
  528.      "He [aA] v [eE] n ! *" (don't use quotes!)
  529. and options -l7 -g10.
  530.  
  531. Suppose that among other things you have mistaken while typing
  532. the main part of the  password. So the following one  is worth
  533. attention:
  534.  
  535.      "{He [aA] v [eE] n} ! *" (don't use quotes!)
  536. and options -l7 -g10.
  537.  
  538. 2) One more citation from the same specification: "Let you
  539. have  two   variants  of   the  password   string:   "myprog",
  540. "MyProg", "my_prog" and "My_Prog".
  541.  
  542. It will be written as:
  543.  
  544.     "[mM] y [_ \0] [pP] rog" (don't use quotes!)
  545.  
  546. 3)  It  is  often  recommended  to  use  two meaningful words,
  547. separated   by   certain   character,   as   a  password.  The
  548. description is as following:
  549.  
  550.     "$w [$1 $!] $w" or
  551.     "$w.u(1) [$1 $!] $w.u(1)" (don't use quotes!)
  552.  
  553. It should be mentioned that  both $w are distinct here  (these
  554. are  distinct  words),  so  a  total  of  20000 * 42 * 20000 =
  555. 1.68E10 passwords (if there  are 20000 dictionary words)  will
  556. be generated , i. e. it takes, on the average, less than a day
  557. to crack passwords, considered to be extremely hard for  crac-
  558. king. Thus,  just two  successive words  are cracked  42 times
  559. faster.
  560.  
  561. 4)  Password  consists  of  exactly  six letters from national
  562. alphabet:
  563.  
  564.     "$i $i $i $i $i $i"    (don't use quotes!)
  565.  
  566. But "$i *" and -16 -g6 options are far more efficient.
  567.  
  568. 6) You remember your password to be  "MyVeryLongGoodPassword",
  569. but it is  not do for  some reason. Try  to use the  following
  570. ones:
  571.  
  572.     "{MyVeryLongGoodPassword}"    2382 passwords in 1 second
  573.     "{MyVeryLongGoodPassword}.2"    2836413 passwords in 1 minute
  574.     "{MyVeryLongGoodPassword}.3"    ??? passwords in 2-3 days
  575.  
  576. 7) You know you password to be a meaningful word with a  digit
  577. inserted elsewhere. The definition file is:
  578.  
  579. $p = [$1]    # the insertion set is defined as a set of digits
  580. ##
  581. {$w}
  582.  
  583. 8) Syllable attack. You are to set up a dictionary of possible
  584. syllables of your language and then to search through all  the
  585. meaningful words by proceeding as follows:
  586.  
  587.     $u        # monosyllabic words
  588.     $u$u        # disyllabic words
  589.     $u$u$u        # etc.
  590.     $u$u$u$u
  591. ...
  592.  
  593. 9) In order to run your program in parallel on two  computers,
  594. give them the following definition files:
  595.  
  596.     "[abcdefghijklm] $a *"    for the first one,
  597.     "[nopqrstuvwxyz] $a *"    for the second one.
  598.  
  599. Proceed similarly with n computers.
  600.  
  601. 5. Possible problems (FAQ).
  602.  
  603. 1. How to break and then to continue the search.
  604.  
  605. The program may be broken painlessly once the message "Testing
  606. XX-chars passwords..." is displayed,  and then the search  may
  607. be continued with - lXX option (both XX are equal).
  608.  
  609. 2. How to resume search from the password XXX?
  610.  
  611. In no way as yet. I hope, it will be done in the PCL 3.0.
  612.  
  613. 3. The program has been searching for 10 days, but my password
  614. is not yet at hand.
  615.  
  616. Alas! It can't be helped. May be your password is too long, or
  617. the search set  is wrong.  Additional  information  on  the
  618. password is necessary.
  619.  
  620. 4. There are  files with different  passwords in the  archive.
  621. What am I to do?
  622.  
  623. Just remove (using RAR) files with already known passwords.
  624.  
  625. 5. I have  tested your program.  To my mind,  your program is
  626. nothing  but  utter  error,  it  cannot  even find "aaa2"-like
  627. password.
  628.  
  629. RTFM. Distributive file password.def searches through only lo-
  630. wer-cased Latin  letters. Change  your password  definition to
  631. "[$a $1] *" and everything will be ok.
  632.  
  633. 6. I've got beginning of one file from archive in plain text.
  634. Will it be useful to me?
  635.  
  636. No. At least, I couldn't use it. Could you? RAR encryption sources
  637. are available in WinRAR distribution.
  638.  
  639. 7. I'd like to optimize your program. How can I get the sources?
  640.  
  641. You don't need them. Take UnRar sources and optimize the
  642. SetCryptKeys() function. Next contact me.
  643.  
  644. 8. Is there any option to save program operation log?
  645.  
  646. Probably, you have never dealt with UNIX. Use
  647.  
  648.    crark [options] > file.
  649.  
  650. If you don't like this, use "tee" utility.
  651.  
  652. 9. Your program operates in Windows NT two times slower  than
  653. in MS-DOS.
  654.  
  655. Allow this program the 100% CPU  time. All you have to do   is
  656. to click  mouse button  at the  free space  in the taskbar and
  657. then click at your program window.
  658.  
  659. 10. Your   distribution kit   is packed   with a   password in
  660. itself!!! I do not find it funny!
  661.  
  662. You are reading this file, so you have solved this problem.
  663.  
  664. 6. On PCL library
  665.  
  666. PCL library is  distributed by the  author as FREEWARE  in the
  667. form of source text as well as .LIB (for Borland, Watcom C) or
  668. .a (for DJGPP)  files. The reference  to PCL as  an obligatory
  669. requirement for your programs. Now it is under development, so
  670. I'll be very glad to any comments on defect and errors in  the
  671. program, especially to those guiding the way for  improvements
  672. and supplements.
  673.  
  674. 7. How to contact the author
  675.  
  676. Only by e-mail.
  677. FIDO:    2:5030/145.17
  678. e-mail:    psw@ssl.stu.neva.ru
  679. WWW:    http://www.ssl.stu.neva.ru/psw/
  680.  
  681. Program support URL is:
  682.      http://www.password-crackers.com/crack/crark.html
  683.  
  684. A lot of free, benchmarked password crackers you'll find at
  685.  
  686. http://www.password-crackers.com
  687.  
  688. cRARk is a  FREE program, so  all the claims  will be rejected.
  689. Anyway,  I'll  be  very  grateful  for  pointing  out manifest
  690. errors, such as:
  691.  
  692. - the program hangs up while searching (the lack of  displayed
  693. messages is not an evidence of hangup);
  694.  
  695. -  the   program  cannot   find  such-and-such   password   in
  696. such-and-such  archive,  although  the  set  of  characters in
  697. search is specified correctly
  698.  
  699. I'll  be  also  glad   to  any  constructive  suggestions   on
  700. improvements of program operation.
  701.  
  702. The  discussion  of  program  algorithm  and  souse  codes  is
  703. possible  if  you  are   just   interested  in  this   program
  704. development.
  705.  
  706.  
  707. 8. Special thanks.
  708.  
  709.   To Eugene Roshal for good encryption algorithm;
  710.   To John Vandermeersch <vanderme@tornado.be> for correcting this
  711. docs;
  712.   To Phil Frisbie, Jr. (pfrisbie@geocities.com) for CPU
  713. identification function.
  714.  
  715.  
  716. Good luck!
  717.  
  718. Pavel Semjanov, St.-Petersburg.
  719.