home *** CD-ROM | disk | FTP | other *** search
/ Guide To Cracking 2002 / Guide_to_Cracking_2002.iso / Programming / yaac10.arj / YAAC.ENG < prev    next >
Encoding:
Text File  |  1999-10-15  |  32.5 KB  |  836 lines

  1.  
  2. THIS IS MACHINE TRANSLATION!
  3. --------------------------------------- -------------------------
  4. Changes in versions:
  5.  
  6. 1.0:
  7. - No more beta-version, that means no further development of YAAC 
  8. functionality YAAC is expected - only bug-fixing;
  9. - Bugs fixed:
  10.   1) In very rare situations couldn't crack password
  11.   2) The message " not defined .c (1) " was produced;
  12. - ARJ 2.70 and ARJ32 3.0+ support, including LFN;
  13. - Last PCL version linked, including the password printing
  14. in hex;
  15. - The special character set $s(3) is included, a sense of $s(1) and $s(2)
  16. is changed;
  17. - Extended -v option;
  18. - Pentium Pro/II support (10% faster), Linux (ELF) executable added.
  19.  
  20. 0.97b:
  21.   - "5th line" bug in PCL 2.0 fixed. Only password definitions
  22. greather than 4 lines have been affected. Thanks to Dmitry Lisiy.
  23. Some minor bugs in -f option fixed (thanks to Mikhail Leitus).
  24.  
  25. 0.97a
  26.   - 0.95a version "know-how" was applied and speed was increased a bit.
  27.  
  28. 0.97:
  29.   - PCL v. 2.0 added. Thus, appeared: support of different languages
  30. and encodings, charset definition, new modifiers and their parameters,
  31. timing and benchmarking functions, maximal password length is
  32. now 255. Due to the invaluable Vyacheslav Semyonov's help many heuristics
  33. are improved, therefore up to a half of the
  34. passwords is discarded beforehand. The options -g and -l now mean
  35. length of the password, not '*'.
  36.  
  37. 0.96:
  38. - Some bugs fixed affected ARJ > 2.60 archives only.
  39.  
  40. 0.95b:
  41. - New ARJ > 2.50 encryption scheme (-hg option) check (not support) added.
  42.  
  43. 0.95a:
  44. - 25-40% speedup on Pentiums.
  45.  
  46. 0.95:
  47. - Library Password Cracking Library (PCL) v. 1.1 added, allowing
  48. multifunctional dictionary attacky, brute force attack with
  49. known symbols, recovery of the incorrectly typed password and much.
  50. - Small bug fixed, connected that on very rare files of block ratio number
  51. can nevertheless be more than 1.1
  52. - In connection with transition to the gcc compiler the 386+ processor and
  53. DPMI-host is now required.
  54.  
  55. 0.91b:
  56. - Bug fixed, because of which seldom the 3-rd symbol incorrectly
  57. turned out;
  58. - Conclusion of length of files in an option -c is added;
  59.  
  60. 0.91:
  61. - First version released.
  62.  
  63. --------------------------------------- -------------------------
  64.  
  65.  
  66.  
  67.           Y A A C (Yet Another ARJ Cracker) v. 1.0
  68.  
  69.         (ß) Copyright PSW-soft 1994-99 by P. Semjanov
  70.  
  71.     THIS PROGRAM IS  DISTRIBUTED "AS  IS". You CAN USE IT AT YOUR
  72. OWN RISK.  ANY  CLAIMS ON  WORKING  of the  PROGRAM  WILL  NOT BE
  73. ACCEPTED. The AUTHOR also DOES NOT GUARANTEE  FURTHER SUPPORT and
  74. UPDATING  of future  VERSIONS of THIS  PROGRAM.  This  program is
  75. FREEWARE and can be distributed freely under following conditions:
  76. the  program code may  not  be changed  and  the  program  has to
  77. be distributed in original form.
  78.     Any commercial use is prohibited.
  79.  
  80.  
  81. 1. Purpose and characteristics.
  82.  
  83. The YAAC program is intended for definition of the "forgotten"
  84. password at ARJ-archives. The program correctly works with ARJ archives 
  85. versions 2.30-2.70 and ARJ32 3.0+ (but should work and with high versions,
  86. if the file format will not change). Since version 2.55 the ARJ's author introduced the
  87. new procedure of encoding it is not supported by the given program
  88. (see item 6).
  89. Also this program is intended for demonstrating possibilities of the Password
  90. Cracking Library (PCL) library.
  91. For operation the YAAC program needs the computer with at least
  92. 80386 processor and 256K of the main memory, and also any DPMI-host.
  93. Thus it is recommended to use the program on as more
  94. powerful processor as possible (code is optimized for Pentium II).
  95. The YAAC program  _DOES NOT_ use exhaustive search, in particular, it 
  96. authentically determines variants of first and third character of 
  97. the password. Further, at exhaustive search the majority of the passwords 
  98. is discarded beforehand, if their beginning does not satisfy with some 
  99. heuristics. Therefore it is enough difficultly to estimate speed of 
  100. operation of the program. The speed of exhaustive search of the counted up 
  101. passwords makes about 1000000 pwd/s on Pentium II/333, but actually 
  102. correct password you will receive much faster. Basically using YAAC 
  103. is really to break 12-14-chars password, that is impossible by 
  104. use any other program. At attack under the dictionary the speed makes 
  105. about 300000 pwd/s. 
  106.  
  107.  
  108. 2. Requirement to entry archive.
  109.  
  110.  
  111.     For successful work of the program for given of ARJ-archive the following
  112. requirements should be carried out:
  113.   - All files were ciphered with the identical password;
  114.   - options -jh, -m0, -m4, -hg were not used.
  115.     The program will work especially effectively, if in archive:
  116.   - it is a lot of files. In no event it is not
  117. necessary up to work of the program to throw out from archive some (long)
  118. files;
  119.   - is of a little bit small files (100-500 byte).
  120. If you have besides ciphered archive at least one file from it in plain,
  121. decompressed text, very effective attack in the plain text can be
  122. applied. There is the program SOLVEPWD.COM by Anantolyn Skoblov (enters a package
  123. BRKARJ).
  124.     YAAC supports some of selfextracting archives (see item 5.8)
  125.  
  126.  
  127.  
  128. 3. Operation with the program.
  129.  
  130. The program has two modes of operations: automatic and for advanced users.
  131. For operation with the program at first it is necessary to
  132. create password definition file (see item 4). Also DPMI-host
  133. is necessary for start of the program  (from QEMM, Windows
  134. etc.), or FREEWARE CWSDPMI.
  135.  
  136. 3.1. Automatic mode.
  137.  
  138. For start of the program in this mode use the command:
  139.  
  140. YAAC [options] archive [.ARJ]
  141.  
  142. If the password consists no more, than from 3 characters, it at once is
  143. produced on the screen.
  144. Differently program will produce probable combinations of first two
  145. characters of the password (" The password may begin with: ") and third
  146. character (" The 3rd char is: "). These assumptions it makes, being
  147. based on all possible characters which are included in set '?' (see
  148. 4.2.1).
  149. Further it produces a recommended character set (" Recommended set of
  150. chars: "). On the basis of this information you can foresee, of what characters
  151. the password consists.
  152. Here it is possible to give the following advices:
  153. - The majority of the passwords are limited to small latin characters ($a );
  154. - The program is most exact determines the first and third character
  155. of the password, therefore just on the basis of them you should accept
  156. solution, what character set to use;
  157. - Use full sets of characters will increase time of search of the password in
  158. comparison with set $a on some orders.
  159. Found password is produced on screen as:
  160.  
  161. Truepass CRC OK
  162.  
  163. All other messages of the program, both with a mark "CRC ERROR", and without
  164. it, are not right passwords.
  165.  
  166. Options in this mode are:
  167.    -lXX - establishes  minimum password length, where XX ranges from
  168. 1 to 255, (by  default = 1). This options affects only if '*' presents
  169. in password definition (See  item 4.1.1).
  170.  
  171.    -gXX - establishes  maximum password length, where XX ranges from
  172. 1 to 255, (by default = 5).
  173.  
  174.    -n - is usual the program truncates set of first two characters
  175. $s(2) up to what get in recommended. This option cancels it.
  176.  
  177.    -pXXX - sets a name of the password definition file (by  default
  178. "PASSWORD.DEF"). LFN is support on Windows 95/98 only!
  179.  
  180.    -b  - make some benchmarks.
  181.  
  182.    -v  - verbose debug mode (see 5.1), could be used for printing
  183. defined charsets. Also this option generates all passwords 
  184. according to their description, but instead of testing outputs them on the 
  185. screen, so you could check up their definition. 
  186. ATTENTION: using this mode with the description of the passwords 
  187. containing regular character '**, not all passwords will be printed on the 
  188. screen, since some of them will be discarded beforehand. 
  189. The really tested passwords will contain a mark "slow test".
  190.  
  191.  
  192. 3.2. Mode for advanced users.
  193.  
  194. The necessity for introduction of such mode is connected that the author did
  195. not manage to construct the function authentically defining first two
  196. characters of the password. However it can be made manually on
  197. To the following scheme:
  198.  
  199. 1) From your archive (let it is named YOUR.ARJ) select some small files;
  200. 2) Start the program
  201.  
  202. YAAC -c YOUR.ARJ
  203.  
  204. to find out original length and the ratio for these files, and also version of ARJ used;
  205.  
  206. For each of them do the following (for example, for the SAMPLE.EXE file of
  207. length 10000, ratio = 0.6):
  208.  
  209. 3) Find on the hard disk files with the same extension
  210. (*.EXE) and approximately such length + - 50 % (7500-15000);
  211. 4) Arhive these files by the archiver ARJ of the same version in other
  212. archive OTHER.ARJ;
  213. 5) Start the program
  214.  
  215. YAAC -c OTHER.ARJ
  216.  
  217. Also select among them those, the ratio which differs from source
  218. no more than on 2-3 % (0.57-0.63);
  219. 6) For these files find maximum and minimum value from a column Block ratio
  220. (let it will be 0.66 and 0.75);
  221. 7) Add in the YAAC.SIZ file a line
  222.  
  223. SAMPLE.EXE 0.66 0.75
  224.  
  225. After a closing up with all files
  226.  
  227. 8) Start the program
  228.  
  229. YAAC -f YOUR.ARJ
  230.  
  231. Some remarks:
  232. - If you can not find files with such extension, try to look for files with
  233. similar length (+ - 10 %), and then select what give same ratio;
  234. - If you have found only 1-2 suitable files, take away from minimum value Block
  235. ratio and add to maximum on 0.05;
  236. - Numbers Block ratio can be more than 1.0, but can not be more than 1.2, and
  237. very much hardly less than 0.3. Usual values are 0.75.. 0.95;
  238. - It is possible also to try compress the found files, using options ARJ
  239. -jm, -m2, -m3.
  240.  
  241. In this mode together with an option -f it is possible to use
  242. Any options of an automatic mode.
  243.  
  244. 4. Choice of operation mode and  password set with the help of  a
  245. password description file.
  246.  
  247. The password definition file is a main managing file. Its compilation
  248. and processing is purely the basic problem of library PCL. Its format
  249. is independent of the application, to which PCL is connected, therefore
  250. this library can be used with any program, engaged in detection of passwords.
  251.  
  252. 4.1. Format of the password definition file.
  253.  
  254.  
  255. Password definition file is a plain text file divided on two parts:
  256. dictionaries and character sets descriptions and password description.
  257. These parts are divided by line '##':
  258.  
  259. [ <the description of the dictionaries and character sets> ]
  260. ##
  261. <the description of the passwords>
  262.  
  263. The first part can be absent, then the file should begin with symbols '##'.
  264. Thus in any other place the symbol '#' is considered as the beginning of
  265. the comment. The blanks and tabulation in a file of the descriptions are
  266. ignored and can divide any components.
  267. For a convenience, at the beginning, as against a sequence of the descriptions in
  268. a file, we shall consider the mechanism of the description of the passwords,
  269. and then description of character sets.
  270.  
  271. 4.2. Description of the passwords.
  272.  
  273. It is a main part of a file, NECESSARY PRESENT IN ANY PASSWORD DEFINITION FILE
  274. AFTER '##' LINE. It consists of textual lines, each  of
  275. which sets the set of the passwords and working mode, i.e. which
  276. algorithm will be used. Each line is independent and is processed
  277. separately, thus the total number of the checked passwords is counted up.
  278. The basic components of the  password definition file  are: character sets
  279. and words from  the dictionaries.  They set  one or  several symbols,
  280. which will be in the  password on appropriate places.
  281.  
  282. 4.2.1. Character sets.
  283.  
  284. The character set (charset) is set of symbols, which can be on  a
  285. actual place in the password  (but there is, naturally, only  one
  286. of them). To can be the following:
  287.  
  288.  1) Simple single symbols (a, b, and etc.). Meaning, that in  the
  289. given  position  of  the  password  there  is just this symbol.
  290.  
  291.  2) Shielded symbols. The special symbols, if they are met in the
  292. password, they should be shielded. The sense coincides with  previous.
  293. They are:
  294.  
  295.   \$, \., \*, \?, \=     - "$", ".", "*", "?", "="
  296.   \], \[, \ , \}, \(, \) - appropriate brackets
  297.   \ (space)              - space
  298.   \\                     - "\"
  299.   \XX, where X is hex-digit - any symbol in hex-code
  300.   \0 - empty symbol (absence of a symbol). Is usually applied  in
  301. association with the "present" symbol (see examples below).
  302.  
  303. Basically, any symbols can be  shielded, if they are not hex-digits.
  304.  
  305.   3) Symbol set macros.  These sets are
  306. defined(determined) in the first part of a file of the descriptions (see item
  307. 4.3.2). Meaning, that in a current  position
  308. of the  password there  is any  symbols, determined  by following
  309. macros:
  310.  
  311.   $a - lower Latin letters (if not redefined, in total 26 possibilities);
  312.   $A - upper Latin letters (if not redefined, in total 26 possibilities);
  313.   $! - special marks (if not redefined,  32 possibilities);
  314.   $1 - Figures (if not redefined,  10 possibilities);
  315.   $i - lower national letters;
  316.   $I - upper national letters;
  317.   $o - User's set;
  318.   ?  - Any symbol, i.e. all chars included in these macroses.
  319.  
  320. Note: $v and $p (see 4.3.4) could not be used to generate passwords.
  321.  
  322. 4) The combination of any of the listed symbols above. Is written
  323. down with the help of  square brackets. The sense coincides  with
  324. previous.
  325.  
  326. Examples:
  327.  
  328. [$a $A] - any Latin letter;
  329. [abc] - or a, or b, or c;
  330. [$1 abcdef] - hex-digit;
  331. [s \0] - or s, or nothing;
  332. [$a $A $1 $! $i $I $o] - is equivalent to ?.
  333.  
  334. 5) Regular symbol of recurrence "*". Means that the previous cha-
  335. racter set needs to be repeated 0 or more time in the appropriate
  336. positions of the password. Examples:
  337.  
  338. $a * - password of any length from the small Latin letters;
  339. [ab] * - is empty, a, b, aa, ab, ba, bb, aaa...
  340. [$a $A] [$a $A $1] * - "identifier" - sequence of the letters and
  341. figures, and first letter.
  342.  
  343.  Let's note, that the zero length password has the certain
  344. physical sense, and is not always equivalent to absence of the password.
  345. Length of recurrence is calculated automatically on the basis of given maximal
  346. and minimal length of the password. Let's note, that these parameters influence only
  347. length of the password generated with the help of a symbol '*' and are not
  348. using, if the password consists only of words or static symbols.
  349. It is recommended to use "*" as often as possible due to the fact  that
  350. it will create the most effective brute force attack.
  351. Current restriction - "*" can only be the last element of a line.
  352.  
  353. 4.2.2. Word from the dictionaries and their modifiers.
  354.  
  355. Contrary to a character set, the word set uses not one, but a few
  356. symbols of the password  in succession. The PCL  library supports
  357. two dictionaries  basic (where more often used words are found )
  358. and user (where the specific information such as names or dates).
  359. The dictionary is a text file, consisting of  words, divided by end of a  li-
  360. ne(EOL) symbols. Files such as DOS- (CR/LF), and UNIX-format (LF)
  361. can be used. It is  desirable (including brute force speed) to have
  362. all words in one (lower) case.
  363.  
  364.   Thus, two macros exist:
  365.  
  366. $w - Word from the basic dictionary
  367. $u - Word from the user dictionary.
  368.  
  369. Also as the words  can be described special sets, since they  can have
  370. any length. They are designated $s(1), $s(2),... And are determi-
  371. ned to be specific to a problem. For this program are three
  372. special sets:
  373.  
  374. $s(1) - first character of the password
  375. $s(2) - two first characters
  376. $s(3) - third character.
  377.  
  378. It is necessary to mean what to use special character sets it is 
  379. meaningful only in a defined place, namely, $s(1) and $s(2) should be
  380. at the beginning (their length is 1 and 2 characters accordingly), and 
  381. $s(3) should get on a third position in the password (length is equal 1).
  382. Thus, only following examples make sense:
  383.  
  384. $s(2) $s(3)
  385. $s(2) ?
  386. $s(1) ? $s (3)
  387. $s(1) ??
  388. ?? $s(3).
  389.  
  390.  
  391. It is impossible to consider anyone others, though and generating
  392. passwords, correct.
  393.  
  394. As is frequently known the passwords are altered words. Therefore
  395. for determining such  passwords the whole  set of modified  words
  396. are entered. Use following switches:
  397.  
  398. .u (upper) - convert to uppercase;
  399. .l (lower) - convert to lowercaser;
  400. .t (truncate) - truncate at given length;
  401. .c (convert) - transform the word;
  402. .j (joke) - convert to uppercase some letters;
  403. .r (reverse) - reverse the word;
  404. .s (shrink) -  reduce a word;
  405. .d (duplicate) - repeat a word 2 times.
  406.  
  407. The modifiers can have parameters which are written down in parentheses. For
  408. modifiers intended for work with the separate letters, it is possible to set as
  409. parameter the number of the letter; absence of parameter or zero parameter means -
  410. " the whole word ". Further, numbers of the letters can be set both from a
  411. beginning of a word, and from the end. The end of a word is designated by a
  412. symbol '-'.
  413. For today there are only 3 of such modifiers: .u, .l, .t.
  414. So,
  415.  
  416. .u or .u(0) - uppercase the whole word (PASSWORD);
  417. .u(1), .u(2) - uppercase only first (second) letter (Password, pAssword);
  418. .u(-), .u(-1) - uppercase last (last but one) letter (passworD, passwoRd);
  419. .t(-1) - cut off last letter in a word (passwor).
  420.  
  421. Other modifiers work only with the whole words and parameter sets a conversion
  422. mode. For today the following parameters to modifiers are legal:
  423.  
  424. .j(0) or .j - uppercase the odd letters (PaSsWoRd);
  425. .j(1) - uppercase the even letters (pAsSwOrD):
  426. .j(2) - uppercase the vowels (pAsswOrd);
  427. .j(3) - uppercase the consonants (PaSSWoRD);
  428. .r(0) or .r - reverse a word (drowssap);
  429. .s(0) or .s - reduce a word by removing vowels, if it is not first char (password - > psswrd, offset - > offst);
  430. .d(0) or .d - duplicate a word (passwordpassword);
  431. .d(1) - add the reversed word (passworddrowssap);
  432. .c(<number>) - convert all letters in a word according to the
  433. conversion string (see item 4.3.3).
  434.  
  435. All modifiers will correctly work both with latin, and with the national
  436. letters, if national character  are set correctly.
  437. Certainly, that the modifier can be not unique (restriction of their
  438. number in succession - 63, which hardly is possible to exceed).
  439. Examples (let $w - password):
  440.  
  441. $w.u(1).u(-) - PassworD
  442. $w.s.t(4) - pssw
  443. $w.t(4).s - pss
  444.  
  445.  
  446. 4.2.3.  Permutation brackets.
  447.  
  448. Maybe you remember the  password, but it does not  match. Pro-
  449. bably, you  were mistaken when you typed it. For  restoration of  such
  450. passwords, the program has its own proper algorithm . It conside-
  451. res, the errors in typing can be following:
  452. two letters are swaped (psasword), one letter
  453. is removed (pasword), extra letter is inserted (passweord) or one is replaced
  454. with other (passwird). Let's name such changes of the password "permutations".
  455. To indicate  the  start  and  end  of  a  possible  permutation in the
  456. password permutation brackets "{" and  "}" are applied . "}" is
  457. followed  by  the  permutation  number  (by  default - 1), separated by "."
  458. or in in parentheses. Physical sense of permutation number is the
  459. amount of simultaneously allowed errors. Examples:
  460.  
  461.  
  462. {abc} - will receive 182 (different) passwords, such as:
  463.   bac, acb - 2 swaps;
  464.   bc, ac, bc - 3 removals;
  465.   aabc, babc... - 4 * 26 - 3 inserts;
  466.   bbc, cbc... - 3 * 25 replacements;
  467.   abc - and the word;
  468.  
  469. {Password}.2 or {Password}(2) - in particular, words as:
  470.  "psswrod", "passwdro" and "paasswor" will be received;
  471.  
  472. {$w} - all words with one error from the basic dictionary.
  473.  
  474. Notes:
  475. 1) It is normal, that some passwords will not be found at  on-
  476. ce, and, the higher the permutation number is, the more recur-
  477. rences there will be. Efforts on reduction of recurrences were
  478. made in the program, but they are purely empirical and are untrusted
  479. on permutation numbers greater than 2. Or else, for large numbers
  480. there is no guarantee that any password
  481. will not be wrongly throw out.
  482. 2) For insert and replacement  it is necessary to know,  which
  483. set of symbols to insert. If this set is not defined (see item 4.3.4),
  484. this program defines it automatically, inserting the set of
  485. the standard set these symbols belong (i.e. {password} should be in-
  486. serted - $a, {Password} - [$a $A]). For words the similar ope-
  487. ration must  be carried  out on  the first  word from the dic-
  488. tionary, thus  modifiers are  taken into  account.
  489.  3)  Current restrictions: the symbol  "{" should  be first
  490. in  a   line.  The   expressions  as good_{password} are not
  491. suppoted, but {good}_password are supported.
  492.  
  493. 4.3. Description of the dictionaries and character sets.
  494.  
  495. All descriptions make in the beginning of a password definition file
  496. above to symbols '##'.
  497.  
  498. 4.3.1. Description of the dictionaries.
  499.  
  500. In the beginning are usually described the basic and user dictionary (see
  501. item 4.2.2). It is necessary  only if password description will be used words
  502. from the dictionaries, i.e. $w or $ u.
  503. The dictionaries are set as follows:
  504.  
  505. $w = "<dictionary_filename>"  # the basic dictionary
  506. $u = "c:\\dict\\user.dic"     # additional
  507. Is it necessary to quote the filenames, and to shield the path symbols.
  508.  
  509. 4.3.2. Definition of used character sets.
  510.  
  511. Used character sets further are usually defined. They are divided
  512. on predefined and set by the user. Predefined consist from:
  513.  
  514. $a - small latin letters, only 26 pieces;
  515. $A - large latin letters, only 26 pieces;
  516. $! - special symbols  {}:"<>?[];\',./~!@#$%^&*()_+`-=\|  - 32 pieces;
  517. $1 - figures, 10 pieces.
  518.  
  519. User-defined sets consist of:
  520.  
  521. $i - lowercase letters of the national alphabet;
  522. $I - uppercase letters of the national alphabet;
  523. $o - additional set (for example, any non-typed on keyboard symbols).
  524.  
  525. The definition of sets occurs to the help of the following format:
  526.  
  527. $<set> = [< single symbols or character sets >]
  528.  
  529. Or else, the character set enters the name with the help of combination of
  530. symbols (see item 4.2.1), for example:
  531.  
  532. $o = [$! $1 \FF]
  533.  
  534. NOTES:
  535. 1) Yoy may define any character sets, including predefined. For example,
  536. it is possible to add in set $! additional symbols, such as a blank or \FF.
  537. 2) The definition of sets $i and $I automatically determines
  538. rules of upper/lowercase conversion. Therefore it is
  539. important, that the letters in these sets is in the same order.
  540.  
  541. Only after all character sets are defined, the complete set of
  542. symbols '?' will be formed, consisting of [$a $A $1 $! $i $I $o],
  543. and just in such order (it is important for following item).
  544.  
  545. 4.3.3. Definition of convert modifiers.
  546.  
  547. Convert modifiers .c (see item 4.2.2) can be set further, with reference
  548. to complete set of symbols '?'. It could be done using the lines
  549. with format:
  550.  
  551. ?.c(<number>) = " < conversion line > "
  552.  
  553. Each symbol available in complete set will be transformed in appropriate to
  554. it, taking place in the same position in a conversion string. For
  555. example, let
  556.  
  557. ?      = [1234567890], then
  558. ?.c(0) = "!@#$%^&*()"
  559.  
  560. sets shift-conversion.
  561. In the conversion string it is necessary to shield symbols '\' and '"".
  562. Parameters at convert modifiers can be from 0 up to 255.
  563.  
  564. 4.3.4. Definition of special character sets
  565.  
  566. To special character sets concern:
  567. $v - the set of vowels (in all alphabets) - is required only, if
  568. the modifiers .s and .j are used.
  569. $p - the set for insert with permutation brackets - is
  570. required only, if for some reason does not arrange automatic reception of this
  571. set (see item 4.2.3).
  572. They are set similarly to other character sets.
  573.  
  574.  
  575. 4.4. Useful examples of password descriptions.
  576.  
  577. 0) "$s(2) $s(3) $a * " - most typical description of the password similar 
  578. to the previous versions of the program. Means to use first three 
  579. characters, obtained by the program, and then to add small latin 
  580. characters. 
  581. In connection with that second character of the password is 
  582. determined rather inexactly, the following description also is 
  583. recommended  : 
  584. "$s(1) $a $s(3) $a * ".
  585. If you carry on exhaustive search on other set of characters, do not 
  586. forget to put it in the second position of the password, for 
  587. example: 
  588. "$s(1) [$! $1] $s(3) [$! $1] * "
  589.  
  590.  
  591. 1) Let me  give you a  fragment from the  documentation on the
  592. program ZEXPL2L:  " I  assume, that  you have  archive with  a
  593. password, similar to " Heaven!!!", but you have forgotten, how
  594. many '!' were at the end  of a word, and which -  lower/upper
  595. case vowels were.
  596.  This  password would  be written  down in  PCL language as
  597. such:
  598.  "He [aA] v [eE] n! * "
  599. We shall assume  in addition, that  you were mistaken  about a
  600. set of the basic part of the password. Then it is necessary to
  601. try following:  "{He [aA]  v [eE]  n} !  * "
  602.  
  603. 2) Another citation : " Assuming, you have two variants of a line
  604. of the password:  "myprog", "MyProg","my_prog" and  "My_Prog".
  605. It should be written down as:
  606. "[mM] y [_ \0] [pP] rog".
  607.  
  608. 3) Often passwords consist of two intelligent words, separated
  609. by some sign. The appropriate description:
  610.  "$w [$1 $!] $w" or
  611.  "$w.u(1) [$1 $!] $w.u(1)"
  612. It is important to note, that both $w are not equal here , and
  613. will generate a total of (if there are 20000 words in the dic-
  614. tionary): 20000 * 42 * 20000 = 1.68E10 passwords.
  615. Accordingly,  it  is  simple  two  words separated by a number
  616. break in 42 times faster.
  617.  
  618. 4)  You  remember,  that  your  password  was "MyVeryLongGoodPassword",
  619. but it  does not match  for some reason.  Try these
  620. combinations:
  621.   "{MyVeryLongGoodPassword}"   - 2382 passwords, 1 sec
  622.   "{MyVeryLongGoodPassword}.2" - 2836413 pass., 1 min
  623.  
  624.  
  625. 5) You know, that the password consists of an intelligent word,
  626. inside which on any position figure is inserted. The description:
  627.  
  628. $p = [$1]  # define insert set
  629. ##
  630. {$w}
  631.  
  632. 6) Attack on syllables. Create the dictionary of allowable syllables of your
  633. language, and then it is possible to touch all intelligent-sounding word
  634. as follows:
  635.  
  636. $u      # all one-syllable word
  637. $u$u    # two-syllables
  638. $u$u$u  #etc.
  639. $u$u$u$u
  640. ...
  641.  
  642. 7) To parrallel the work on 2 computers, set to them
  643. the following descriptions:
  644. "[abcdefghijklm] $a * " - first
  645. "[nopqrstuvwxyz] $a * " - second.
  646. Similarly act for n of computers.
  647.  
  648.  
  649.              5. Originating problems (FAQ).
  650.  
  651. 1. Message "No matching passwords" is printed.
  652.  
  653. The following reasons and ways of their elimination are possible(probable):
  654.  
  655. 1) In case in archive there are a lot of files, it can occur because of 
  656. imperfection of an automatic mode. First of all remove from it the
  657. large files (more than 10-15è). 
  658.  
  659. 2) If it will not help, start the program YAAC by an option -v
  660. and analyse the target information. It consists for each file in archive
  661. of its name, after which there are four numbers and then set of allowable
  662. first two symbols of the password, processing suitable the ambassador of this
  663. file. Therefore, if the information looks like as:
  664.  
  665. FILE1.EXT 1881 940 2050 1504
  666. po = 422
  667. pp = 421
  668. pr = 427
  669. ps = 426
  670. pt = 425
  671. pu = 424
  672. pv = 431
  673. pw = 430
  674. px = 429
  675. py = 428
  676. pz = 435
  677. FILE2.EXT 959 479 1045 764
  678. FILE3.EXT 1317 658 1435 1052
  679.  
  680.  
  681. That, how it is visible, on a file FILE2.EXT the set of the first two symbols
  682. has become empty and this file IS NECESSARY FOR REMOVING from archive. Can
  683. be also that stabilized set of the first two symbols
  684. suddenly sharply decreases, such file is better for removing too.
  685. If also it will not help, delete from archive all first half.
  686. 3) In the password non-standard symbols are used. Include all possible
  687. symbols to $o charset.
  688. 4) Refuse automatic mode of operations.
  689.  
  690. 2. How to interrupt and to continue the brute-force searching?
  691.  
  692. The program can  be painlessly interrupted after a conclusion
  693. of the message " Testing XX-chars passwords... " and continued
  694. with the help of an  option -lXX (here both XX are equal).
  695.  
  696. 3. How to continue from XXX password.
  697. Currently no way. Probably such feature will be in PCL 3.0.
  698.  
  699.  
  700. 4. The program counts 10-th day, but nothing was found.
  701.  
  702. Alas! There is no help here. Either the password is too long,  or
  703. it  is  incorrectly  described.  Additional  information  on  the
  704. password is necessary. See 5.1.
  705.  
  706. 5. I've tested your program. It's one big bug! It couldn't find such
  707. passwords as "aaa2".
  708.  
  709. RTFM. Standard password.def file does brute-force searching using only
  710. lowercase latin letters. Just change password definition to
  711. "s(1) s(2) [$a $1] *" and everything will be ok.
  712.  
  713.  
  714. 5a. I had password "abc", and the program does not find it.
  715.  
  716. If the password consists less, than from four characters, it can be
  717. produced as "double-length" password.
  718. It is not an error, it's small defect only.
  719.  
  720. 5b. I had password "A$rrr", and the program does not find it, although
  721. first three characters are printed correctly.
  722.  
  723. Try -n option. Without it the program truncates first three characters
  724. set to the recommended set and '$' symbol may be not included in it.
  725.  
  726. 6. In archive there are files with the different passwords. What to do?
  727.  
  728. It is necessary manually to search for files with the same passwords.
  729. Probably, the easiest way to do it is to leave in archive one smallest file,
  730. to find its password and to check up files this password matches. Then  
  731. delete all these files and repeat the procedure once again. 
  732.  
  733. 7. Your program does not recognize self-exctracting archive.
  734.  
  735. Then you need to find a beginning of archived data (by signature 
  736. 60 EA) and to delete all code from a beginning up to this place,  
  737. receiving an ordinary ARJ-archive. 
  738.  
  739.  
  740. 8. I have one file in plain text. It can help?
  741.  
  742. Yes. Use the SOLVEPWD.COM program.
  743.  
  744. 9. How to save report to the file?
  745.  
  746. You are not UNIX user. Just type
  747.    crark [options] > file.
  748. If you don't like it, use tee utility.
  749.  
  750. 10. Your distribution is password protected!!! Is not funny!
  751.  
  752. If you are reading this file, you have solved the problem.
  753.  
  754. 11. Your program works 2 times slower under Windows NT than
  755. under MS-DOS or Windows 95.
  756.  
  757. Give 100% CPU time to the program.  Easiest way to do it is click
  758. on  blank space on  the taskbar and  next  click on  the  program
  759. window.
  760.  
  761.  
  762.               6. Outputs and perspectives.
  763.  
  764. 1) Probably, nevertheless it is possible to write more - less áñѬóáΓ
  765. ìπε the function defining Block ratio and by that to refuse from inconvenient
  766. unautomatic mode of operations.
  767. 2) Is similar, that is possible to expand used algorithm so, that the
  768. exhaustive search will be conducted only up to 7-9 character passwords, and
  769. then it will be possible to touch only passwords, which beginning from 7-9
  770. characters satisfies to some criterion. It will allow to increase effective
  771. length «ΓúáñδóáѼ«ú« of the password till 13-15 of characters.
  772. 3) Very easily it is possible to open the password, if in archive there are
  773. files with single ¬«¼»αÑßß¿Ñ⌐ (-m0).
  774. In version ARJ 2.55 encoding archives on âÄæÆπ (option -hg) has appeared. If
  775. this encoding and ever will be supported by the given program, the speed it
  776. will fall on 1-2 order.
  777. Wishing to me to help and to become the co-authors can communicate with me. The
  778. knowledge of the programming language distinct from BASIC, and source codes
  779. UNARJ 2.41 is necessary.
  780.  
  781. 7. Concerning library PCL.
  782.  
  783. The  author distributes  the library PCL as
  784. FREEWARE files .LIB (under Borland, Watcom C) or .a (under DJGPP)
  785. with the requirement of the certitude of reference of it in  your
  786. programs. Receipt of the sources is a separate subject.
  787.  
  788.  
  789. 8. How to contact to the author.
  790.  
  791. Only by e-mail.
  792. e-mail: psw@ssl.stu.neva.ru
  793. FIDO:   2:5030/145.17
  794. WWW;    http://www.ssl.stu.neva.ru/psw/
  795.  
  796.  
  797. THE NEW VERSIONS of the PROGRAM ARE ONLY ON the FOLLOWING WWW-address.
  798. I AM NOT ENGAGED in THEIR DISTRIBUTION In ANY SORT!
  799.  
  800. http://www.ssl.stu.neva.ru/psw/crack.html
  801.  
  802. Though, as I already have told, any claims to be accepted will not be, I shall
  803. be grateful to the instruction(indication) on obvious errors, such as:
  804. - The program hangs up at exhaustive search (that she(it) nothing outputs thus
  805. on the screen, is not tag of hangup);
  806. - The program does not find such password in such archive, though the set of
  807. characters of exhaustive search is given correctly and first three characters
  808. are output correctly:
  809. - The program incorrectly finds third character of the password;
  810. - The program does not find the password at the described above circuit(scheme)
  811. of operation in a unautomatic mode.
  812. As I shall be glad to any constructive sentences on π½πτΦÑ
  813. ì¿ε of operation of the program.
  814. I shall not refuse still, if someone, whom this program has rescued life to, as
  815. gratitude wants to transfer(translate) this file on good English.
  816. The discussion of algorithm of the program and source codes is possible only at
  817. your interest in development of this program.
  818. Do not ask, that I have made service such as continuation of exhaustive search
  819. from the current password either imaging of the current password or
  820. interruption at any moment on Ctrl-Break!
  821.  
  822. 9. Special thanks.
  823.  
  824. Anatoly Skoblov for the program BRKARJ, serving by a push to a writing of
  825. this program;
  826. Mikael Malakhov for the program ARJ_PSW, the initial texts of which were used;
  827. Vyacheslav Semyonov for it the invaluable help on
  828. improvement heuristics,
  829. All by rest, who helped, advised and tested YAAC.
  830.  
  831. Good luck!
  832.  
  833. Pavel Semjanov, St.-Petersburg.
  834.  
  835.  
  836.