home *** CD-ROM | disk | FTP | other *** search
/ Steganos Hacker Tools / SHT151.iso / programme / pw_system / john-16w / run / john.ini < prev    next >
Encoding:
INI File  |  1998-12-02  |  10.1 KB  |  496 lines

  1. #
  2. # This file is part of John the Ripper password cracker,
  3. # Copyright (c) 1996-98 by Solar Designer
  4. #
  5.  
  6. [Options]
  7. # Wordlist file name, to be used in batch mode
  8. Wordfile = ~/password.lst
  9. # Crash recovery file saving delay in seconds
  10. Save = 600
  11. # Beep when a password is found (who needs this anyway?)
  12. Beep = N
  13.  
  14. # "Single crack" mode rules
  15. [List.Rules:Single]
  16. # Simple rules come first...
  17. :
  18. -s x**
  19. -c (?acQ
  20. -c lQ
  21. -s-c x**MlQ
  22. # These were not included in crackers I've seen, but are pretty efficient,
  23. # so I include them near the beginning
  24. >6'6
  25. >7l'7
  26. >6/?ul'6
  27. >5'5
  28. # Weird order, eh? Can't do anything about it, the order is based on the
  29. # number of successful cracks...
  30. <*d
  31. rc
  32. <*dMcQ
  33. >5/?ul'5
  34. uQ
  35. r(?al
  36. <*!?A[lc]p
  37. <*cQd
  38. >7/?u'7
  39. >4l'4
  40. <+(?lcr
  41. <+r(?lcr
  42. >3'3
  43. >4/?u'4
  44. >3/?ul'3
  45. uQr
  46. <*lQf
  47. # About 50% of single-mode-crackable passwords get cracked by now...
  48. >2x12
  49. >3x13
  50. >4x14
  51. >5x15
  52. >6x16
  53. >7x17
  54. >8x18
  55. >3x22
  56. >4x23
  57. >5x24
  58. >6x25
  59. >7x26
  60. >8x27
  61. >9x28
  62. >4x32
  63. >5x33
  64. >6x34
  65. >7x35
  66. >8x36
  67. >9x37
  68. >2/?ulx12
  69. >3/?ulx13
  70. >4/?ulx14
  71. >5/?ulx15
  72. >6/?ulx16
  73. >7/?ulx17
  74. >8/?ulx18
  75. >3/?ulx22
  76. >4/?ulx23
  77. >5/?ulx24
  78. >6/?ulx25
  79. >7/?ulx26
  80. >8/?ulx27
  81. >9/?ulx28
  82. >4/?ulx32
  83. >5/?ulx33
  84. >6/?ulx34
  85. >7/?ulx35
  86. >8/?ulx36
  87. >9/?ulx37
  88. # Now to the suffix stuff...
  89. <*l$[1-9!0a-z"-/:-@\[-`{-~]
  90. <*(?ac$[1-9!0a-z"-/:-@\[-`{-~]
  91. <*lr$[1-9!]
  92. <*/?au$[1-9!]
  93. <-l$!$!
  94. <-(?ac$!$!
  95. l$!<-$!$!
  96. (?ac$!<-$!$!
  97. # Removing vowels...
  98. /?v@?v>2l
  99. /?v@?v>2(?ac
  100. /?v@?v>2<*d
  101. # crack -> cracked, crack -> cracking
  102. <*l[PI]
  103. <*l[PI](?ac
  104. # mary -> marie
  105. <*(?a[lc])yro0ir$e
  106. # marie -> mary
  107. <*(?a[lc])er=1iD0o0yr
  108. # The following 3l33t rules are based on original Crack's dicts.rules
  109. l/asa4[:c]
  110. l/ese3[:c]
  111. l/lsl1[:c]
  112. l/oso0[:c]
  113. l/sss$[:c]
  114. l/asa4/ese3[:c]
  115. l/asa4/lsl1[:c]
  116. l/asa4/oso0[:c]
  117. l/asa4/sss$[:c]
  118. l/ese3/lsl1[:c]
  119. l/ese3/oso0[:c]
  120. l/ese3/sss$[:c]
  121. l/lsl1/oso0[:c]
  122. l/lsl1/sss$[:c]
  123. l/oso0/sss$[:c]
  124. l/asa4/ese3/lsl1[:c]
  125. l/asa4/ese3/oso0[:c]
  126. l/asa4/ese3/sss$[:c]
  127. l/asa4/lsl1/oso0[:c]
  128. l/asa4/lsl1/sss$[:c]
  129. l/asa4/oso0/sss$[:c]
  130. l/ese3/lsl1/oso0[:c]
  131. l/ese3/lsl1/sss$[:c]
  132. l/ese3/oso0/sss$[:c]
  133. l/lsl1/oso0/sss$[:c]
  134. l/asa4/ese3/lsl1/oso0[:c]
  135. l/asa4/ese3/lsl1/sss$[:c]
  136. l/asa4/ese3/oso0/sss$[:c]
  137. l/asa4/lsl1/oso0/sss$[:c]
  138. l/ese3/lsl1/oso0/sss$[:c]
  139. l/asa4/ese3/lsl1/oso0/sss$[:c]
  140. # Now to the prefix stuff...
  141. l^[1a-z2-90A-Z"-/:-@\[-`{-~]
  142. <9(?a[lc]^e^h^[tT]
  143. <9(?a[lc]^y^m^[aA]
  144. <9(?a[lc]^r^[mdMD]
  145. <9(?a[lc]^.^r^[mdMD]
  146. <9(?a[lc]^_^_
  147. <-!?Alp^[240-9]
  148. # Some word pair rules...
  149. # johnsmith -> JohnSmith, johnSmith
  150. (?a2(?ac1[cl]
  151. # JohnSmith -> john smith, john_smith, john-smith
  152. 1<-$[ _\-]+l
  153. # JohnSmith -> John smith, John_smith, John-smith
  154. 1<-(?ac$[ _\-]2l
  155. # JohnSmith -> john Smith, john_Smith, john-Smith
  156. 1<-l$[ _\-]2(?ac
  157. # johnsmith -> John Smith, John_Smith, John-Smith
  158. 1<-(?ac$[ _\-]2(?ac
  159. # Applying different simple rules to each of the two words
  160. 1[ur]2l
  161. 2(?ac1[ur]
  162. 1l2[ur]
  163. 1(?ac2[ur]
  164. # jsmith -> smithj, etc...
  165. (?a[lc][{}]
  166. (?a[lc]}}
  167. (?a[lc]{{
  168. # Toggle case...
  169. T[1-7]Q
  170. lMT[1-7]Q
  171. >2[lu]MT0T2T4T6T8Q
  172. # Deleting chars...
  173. D[1-7]Q
  174. D[1-7]Q/?ul
  175. D[1-7]Q(?ac
  176. # Inserting a dot...
  177. >3(?a[lc]i[12].
  178. # More suffix stuff...
  179. <-l$[19]$[0-9]
  180. <-(?ac$[19]$[0-9]
  181. <-l$6$9
  182. <-(?ac$6$9
  183. <-l$[72]$[0-9]
  184. <-(?ac$[72]$[0-9]
  185. <*(?a[lc]$[A-Z]
  186. # cracking -> CRACKiNG
  187. u/IsIi
  188. # Crack96 -> cRACK96
  189. CQ
  190. # Crack96 -> cRACK(^
  191. SQ
  192. # Crack96 -> CRaCK96
  193. /?vVQ
  194. # Really weird charset conversions, like "england" -> "rmh;smf"
  195. :[RL]Q
  196. lQ[RL]
  197. (?acQ[RL]
  198. RRQ
  199. LLQ
  200. # Both prefixing and suffixing...
  201. <-l^1$1
  202. <-l^!$!
  203. <-l^@$@
  204. <-l^#$#
  205. <-l^$$$
  206. <-l^%$%
  207. <-l^^$^
  208. <-l^&$&
  209. <-l^*$*
  210. <-l^($)
  211. <-l^-$-
  212. <-l^=$=
  213. <-l^_$_
  214. <-l^+$+
  215. <-l^.$.
  216. <-l^?$?
  217. <-l^{$}
  218. <-l^\[$]
  219. <-l^<$>
  220. <-l^|$|
  221. <-l^:$:
  222. <-l^'$'
  223. <-l^"$"
  224. # The rest of two-digit suffix stuff, rare numbers...
  225. <-l$6$[0-8]
  226. <-(?ac$6$[0-8]
  227. <-l$[3-580]$[0-9]
  228. <-(?ac$[3-580]$[0-9]
  229. # Some three-digit numbers...
  230. (?a[lc]$0<-$0$7
  231. (?a[lc]$1<-$1$1
  232. (?a[lc]$1<-$2$3
  233. (?a[lc]$2<-$2$2
  234. (?a[lc]$3<-$3$3
  235. (?a[lc]$4<-$4$4
  236. (?a[lc]$5<-$5$5
  237. (?a[lc]$6<-$6$6
  238. (?a[lc]$7<-$7$7
  239. (?a[lc]$8<-$8$8
  240. (?a[lc]$9<-$9$9
  241. # Some [birth] years...
  242. l$1<-$9$[7-90-6]>-
  243. l$1$9<-$[7-90-6]$[0-9]
  244. # Uncomment the following lines if you're really crazy
  245. ;# Insert/overstrike some characters...
  246. ;!?Ali[1-6][a-z]
  247. ;!?Alo[0-7][a-z]
  248. ;# Toggle case everywhere...
  249. ;lMT[*7]T[*6]T[*5]T[*4]T[*3]T[*2]T[*1]T[*0]Q
  250. ;# Very slow stuff...
  251. ;l$[1-90]<-$[0-9]$[0-9]
  252. ;(?ac$[1-90]<-$[0-9]$[0-9]
  253. ;<-l$[a-z]$[a-z]
  254. ;<9l^[a-z]^[a-z]
  255. ;<-l^[a-z]$[a-z]
  256.  
  257. # Wordlist mode rules
  258. [List.Rules:Wordlist]
  259. # Try words as they are
  260. :
  261. # Lowercase every pure alphanumeric word
  262. -c >3!?XlQ
  263. # Capitalize every pure alphanumeric word
  264. -c >2(?a!?XcQ
  265. # Lowercase and pluralize pure alphabetic words
  266. <*>2!?Alp
  267. # Lowercase pure alphabetic words and append '1'
  268. <*>2!?Al$1
  269. # Capitalize pure alphabetic words and append '1'
  270. -c <*>2!?Ac$1
  271. # Duplicate reasonably short pure alphabetic words (fred -> fredfred)
  272. <7>1!?Ald
  273. # Lowercase and reverse pure alphabetic words
  274. >3!?AlMrQ
  275. # Prefix pure alphabetic words with '1'
  276. >2!?Al^1
  277. # Uppercase pure alphanumeric words
  278. -c >2!?XuQ
  279. # Lowercase pure alphabetic words and append a digit or simple punctuation
  280. <*>2!?Al$[2!37954860.?]
  281. # Words containing punctuation, which is then squeezed out, lowercase
  282. /?p@?p>3l
  283. # Words with vowels removed, lowercase
  284. /?v@?v>3l
  285. # Words containing whitespace, which is then squeezed out, lowercase
  286. /?w@?w>3l
  287. # Capitalize and duplicate short pure alphabetic words (fred -> FredFred)
  288. -c <7>1!?Acd
  289. # Capitalize and reverse pure alphabetic words (fred -> derF)
  290. -c <+>2!?Acr
  291. # Reverse and capitalize pure alphabetic words (fred -> Derf)
  292. -c >2!?AMrQc
  293. # Lowercase and reflect pure alphabetic words (fred -> fredderf)
  294. <7>1!?AlMrQrf
  295. # Uppercase the last letter of pure alphabetic words (fred -> freD)
  296. -c <+>2!?AMrQcr
  297. # Prefix pure alphabetic words with '2' or '4'
  298. >2!?Al^[24]
  299. # Capitalize pure alphabetic words and append a digit or simple punctuation
  300. -c <*>2!?Ac$[2!3957468.?0]
  301. # Prefix pure alphabetic words with digits
  302. >2!?Al^[379568]
  303. # Capitalize and pluralize pure alphabetic words of reasonable length
  304. -c <*>2!?Acp
  305. # Lowercase/capitalize pure alphabetic words of reasonable length and convert:
  306. # crack -> cracked, crack -> cracking
  307. <*>2!?Al[PI]
  308. -c <*>2!?Ac[PI]
  309. # Try the second half of split passwords
  310. -s x**
  311. -s-c x**MlQ
  312.  
  313. # Incremental modes
  314. [Incremental:All]
  315. File = ~/all.chr
  316. MinLen = 0
  317. MaxLen = 8
  318. CharCount = 95
  319.  
  320. [Incremental:Alpha]
  321. File = ~/alpha.chr
  322. MinLen = 1
  323. MaxLen = 8
  324. CharCount = 26
  325.  
  326. [Incremental:Digits]
  327. File = ~/digits.chr
  328. MinLen = 1
  329. MaxLen = 8
  330. CharCount = 10
  331.  
  332. [Incremental:LanMan]
  333. File = ~/lanman.chr
  334. MinLen = 0
  335. MaxLen = 7
  336. CharCount = 69
  337.  
  338. # Some pre-defined word filters
  339. [List.External:Filter_Alpha]
  340. void filter()
  341. {
  342.     int i, c;
  343.  
  344.     i = 0;
  345.     while (c = word[i++])
  346.     if (c < 'a' || c > 'z') {
  347.         word = 0; return;
  348.     }
  349. }
  350.  
  351. [List.External:Filter_Digits]
  352. void filter()
  353. {
  354.     int i, c;
  355.  
  356.     i = 0;
  357.     while (c = word[i++])
  358.     if (c < '0' || c > '9') {
  359.         word = 0; return;
  360.     }
  361. }
  362.  
  363. [List.External:Filter_LanMan]
  364. void filter()
  365. {
  366.     int i, c;
  367.  
  368.     word[7] = 0;            // Truncate at 7 characters
  369.  
  370.     i = 0;                // Convert to uppercase
  371.     while (c = word[i]) {
  372.         if (c >= 'a' && c <= 'z') word[i] &= 0xDF;
  373.         i++;
  374.     }
  375. }
  376.  
  377. # A simple cracker for LM hashes, similar to L0phtCrack
  378. [List.External:LanMan]
  379. int length;                // Current length
  380.  
  381. void init()
  382. {
  383.     word[0] = 'A' - 1;        // Start with "A"
  384.     word[length = 1] = 0;
  385. }
  386.  
  387. void generate()
  388. {
  389.     int i;
  390.  
  391.     i = length - 1;            // Start from the last character
  392.     while (++word[i] > 'Z')        // Try to increase it
  393.     if (i)                // Overflow here, any more positions?
  394.         word[i--] = 'A';    // Yes, move to the left, and repeat
  395.     else                // No
  396.     if (length < 7) {
  397.         word[i = ++length] = 0;    // Switch to the next length
  398.         while (i--)
  399.             word[i] = 'A';
  400.         return;
  401.     } else {
  402.         word = 0; return;    // We're done
  403.     }
  404. }
  405.  
  406. void restore()
  407. {
  408.     length = 0;            // Calculate the length
  409.     while (word[length]) length++;
  410. }
  411.  
  412. # Useful external mode example
  413. [List.External:Double]
  414. /*
  415.  * This cracking mode tries all the possible duplicated lowercase alphabetic
  416.  * "words" of up to 8 characters long. Since word halves are the same, it
  417.  * only has to try about 500,000 words.
  418.  */
  419.  
  420. /* Global variables: current length and word */
  421. int length, current[9];
  422.  
  423. /* Called at startup to initialize the global variables */
  424. void init()
  425. {
  426.     int i;
  427.  
  428.     i = length = 2;            // Start with 4 character long words
  429.     while (i--) current[i] = 'a';    // Set our half-word to "aa"
  430. }
  431.  
  432. /* Generates a new word */
  433. void generate()
  434. {
  435.     int i;
  436.  
  437. /* Export last generated word, duplicating it at the same time; here "word"
  438.  * is a pre-defined external variable. */
  439.     word[(i = length) << 1] = 0;
  440.     while (i--) word[length + i] = word[i] = current[i];
  441.  
  442. /* Generate a new word */
  443.     i = length - 1;            // Start from the last character
  444.     while (++current[i] > 'z')    // Try to increase it
  445.     if (i)                // Overflow here, any more positions?
  446.         current[i--] = 'a';    // Yes, move to the left, and repeat
  447.     else {                // No
  448.         current = 0;        // Request a length switch
  449.         break;            // Break out of the loop
  450.     }
  451.  
  452. /* Switch to the next length, unless we were generating 8 character long
  453.  * words already. */
  454.     if (!current && length < 4) {
  455.         i = ++length;
  456.         while (i--) current[i] = 'a';
  457.     }
  458. }
  459.  
  460. /* Called when restoring an interrupted session */
  461. void restore()
  462. {
  463.     int i;
  464.  
  465. /* Import the word back */
  466.     i = 0;
  467.     while (current[i] = word[i]) i++;
  468.  
  469. /* ...and calculate the half-word length */
  470.     length = i >> 1;
  471. }
  472.  
  473. # Simple parallel processing example
  474. [List.External:Parallel]
  475. /*
  476.  * This word filter makes John process some of the words only, for running
  477.  * multiple instances on different CPUs. It can be used with any cracking
  478.  * mode except for "single crack". Note: this is not a good solution, but
  479.  * is just an example of what can be done with word filters.
  480.  */
  481.  
  482. int node, total;            // This node's number, and node count
  483. int number;                // Current word number
  484.  
  485. void init()
  486. {
  487.     node = 1; total = 2;        // Node 1 of 2, change as appropriate
  488.     number = node - 1;        // Speedup the filter a bit
  489. }
  490.  
  491. void filter()
  492. {
  493.     if (number++ % total)        // Word for a different node?
  494.         word = 0;        // Yes, skip it
  495. }
  496.