10Sstevel@tonic-gate /*
2*9798SJoep.Vesseur@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
30Sstevel@tonic-gate * Use is subject to license terms.
40Sstevel@tonic-gate */
50Sstevel@tonic-gate
60Sstevel@tonic-gate /*
70Sstevel@tonic-gate * This program is copyright Alec Muffett 1993. The author disclaims all
80Sstevel@tonic-gate * responsibility or liability with respect to it's usage or its effect
90Sstevel@tonic-gate * upon hardware or computer systems, and maintains copyright as set out
100Sstevel@tonic-gate * in the "LICENCE" document which accompanies distributions of Crack v4.0
110Sstevel@tonic-gate * and upwards.
120Sstevel@tonic-gate */
130Sstevel@tonic-gate
140Sstevel@tonic-gate #include "packer.h"
150Sstevel@tonic-gate
160Sstevel@tonic-gate
170Sstevel@tonic-gate static char *r_destructors[] = {
180Sstevel@tonic-gate ":", /* noop - must do this to test raw word. */
190Sstevel@tonic-gate "[", /* trimming leading/trailing junk */
200Sstevel@tonic-gate "]",
210Sstevel@tonic-gate "[[",
220Sstevel@tonic-gate "]]",
230Sstevel@tonic-gate "[[[",
240Sstevel@tonic-gate "]]]",
250Sstevel@tonic-gate
260Sstevel@tonic-gate "/?p@?p", /* purging out punctuation/symbols/junk */
270Sstevel@tonic-gate "/?s@?s",
280Sstevel@tonic-gate "/?X@?X",
290Sstevel@tonic-gate /* attempt reverse engineering of password strings */
300Sstevel@tonic-gate "/$s$s",
310Sstevel@tonic-gate "/$s$s/0s0o",
320Sstevel@tonic-gate "/$s$s/0s0o/2s2a",
330Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e",
340Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s",
350Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/1s1i",
360Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/1s1l",
370Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/1s1i/4s4a",
380Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/1s1i/4s4h",
390Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/1s1l/4s4a",
400Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/1s1l/4s4h",
410Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/4s4a",
420Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/4s4h",
430Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/4s4a",
440Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/5s5s/4s4h",
450Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/1s1i",
460Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/1s1l",
470Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/1s1i/4s4a",
480Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/1s1i/4s4h",
490Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/1s1l/4s4a",
500Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/1s1l/4s4h",
510Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/4s4a",
520Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/4s4h",
530Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/4s4a",
540Sstevel@tonic-gate "/$s$s/0s0o/2s2a/3s3e/4s4h",
550Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s",
560Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/1s1i",
570Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/1s1l",
580Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/1s1i/4s4a",
590Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/1s1i/4s4h",
600Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/1s1l/4s4a",
610Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/1s1l/4s4h",
620Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/4s4a",
630Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/4s4h",
640Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/4s4a",
650Sstevel@tonic-gate "/$s$s/0s0o/2s2a/5s5s/4s4h",
660Sstevel@tonic-gate "/$s$s/0s0o/2s2a/1s1i",
670Sstevel@tonic-gate "/$s$s/0s0o/2s2a/1s1l",
680Sstevel@tonic-gate "/$s$s/0s0o/2s2a/1s1i/4s4a",
690Sstevel@tonic-gate "/$s$s/0s0o/2s2a/1s1i/4s4h",
700Sstevel@tonic-gate "/$s$s/0s0o/2s2a/1s1l/4s4a",
710Sstevel@tonic-gate "/$s$s/0s0o/2s2a/1s1l/4s4h",
720Sstevel@tonic-gate "/$s$s/0s0o/2s2a/4s4a",
730Sstevel@tonic-gate "/$s$s/0s0o/2s2a/4s4h",
740Sstevel@tonic-gate "/$s$s/0s0o/2s2a/4s4a",
750Sstevel@tonic-gate "/$s$s/0s0o/2s2a/4s4h",
760Sstevel@tonic-gate "/$s$s/0s0o/3s3e",
770Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s",
780Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/1s1i",
790Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/1s1l",
800Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/1s1i/4s4a",
810Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/1s1i/4s4h",
820Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/1s1l/4s4a",
830Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/1s1l/4s4h",
840Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/4s4a",
850Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/4s4h",
860Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/4s4a",
870Sstevel@tonic-gate "/$s$s/0s0o/3s3e/5s5s/4s4h",
880Sstevel@tonic-gate "/$s$s/0s0o/3s3e/1s1i",
890Sstevel@tonic-gate "/$s$s/0s0o/3s3e/1s1l",
900Sstevel@tonic-gate "/$s$s/0s0o/3s3e/1s1i/4s4a",
910Sstevel@tonic-gate "/$s$s/0s0o/3s3e/1s1i/4s4h",
920Sstevel@tonic-gate "/$s$s/0s0o/3s3e/1s1l/4s4a",
930Sstevel@tonic-gate "/$s$s/0s0o/3s3e/1s1l/4s4h",
940Sstevel@tonic-gate "/$s$s/0s0o/3s3e/4s4a",
950Sstevel@tonic-gate "/$s$s/0s0o/3s3e/4s4h",
960Sstevel@tonic-gate "/$s$s/0s0o/3s3e/4s4a",
970Sstevel@tonic-gate "/$s$s/0s0o/3s3e/4s4h",
980Sstevel@tonic-gate "/$s$s/0s0o/5s5s",
990Sstevel@tonic-gate "/$s$s/0s0o/5s5s/1s1i",
1000Sstevel@tonic-gate "/$s$s/0s0o/5s5s/1s1l",
1010Sstevel@tonic-gate "/$s$s/0s0o/5s5s/1s1i/4s4a",
1020Sstevel@tonic-gate "/$s$s/0s0o/5s5s/1s1i/4s4h",
1030Sstevel@tonic-gate "/$s$s/0s0o/5s5s/1s1l/4s4a",
1040Sstevel@tonic-gate "/$s$s/0s0o/5s5s/1s1l/4s4h",
1050Sstevel@tonic-gate "/$s$s/0s0o/5s5s/4s4a",
1060Sstevel@tonic-gate "/$s$s/0s0o/5s5s/4s4h",
1070Sstevel@tonic-gate "/$s$s/0s0o/5s5s/4s4a",
1080Sstevel@tonic-gate "/$s$s/0s0o/5s5s/4s4h",
1090Sstevel@tonic-gate "/$s$s/0s0o/1s1i",
1100Sstevel@tonic-gate "/$s$s/0s0o/1s1l",
1110Sstevel@tonic-gate "/$s$s/0s0o/1s1i/4s4a",
1120Sstevel@tonic-gate "/$s$s/0s0o/1s1i/4s4h",
1130Sstevel@tonic-gate "/$s$s/0s0o/1s1l/4s4a",
1140Sstevel@tonic-gate "/$s$s/0s0o/1s1l/4s4h",
1150Sstevel@tonic-gate "/$s$s/0s0o/4s4a",
1160Sstevel@tonic-gate "/$s$s/0s0o/4s4h",
1170Sstevel@tonic-gate "/$s$s/0s0o/4s4a",
1180Sstevel@tonic-gate "/$s$s/0s0o/4s4h",
1190Sstevel@tonic-gate "/$s$s/2s2a",
1200Sstevel@tonic-gate "/$s$s/2s2a/3s3e",
1210Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s",
1220Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/1s1i",
1230Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/1s1l",
1240Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/1s1i/4s4a",
1250Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/1s1i/4s4h",
1260Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/1s1l/4s4a",
1270Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/1s1l/4s4h",
1280Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/4s4a",
1290Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/4s4h",
1300Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/4s4a",
1310Sstevel@tonic-gate "/$s$s/2s2a/3s3e/5s5s/4s4h",
1320Sstevel@tonic-gate "/$s$s/2s2a/3s3e/1s1i",
1330Sstevel@tonic-gate "/$s$s/2s2a/3s3e/1s1l",
1340Sstevel@tonic-gate "/$s$s/2s2a/3s3e/1s1i/4s4a",
1350Sstevel@tonic-gate "/$s$s/2s2a/3s3e/1s1i/4s4h",
1360Sstevel@tonic-gate "/$s$s/2s2a/3s3e/1s1l/4s4a",
1370Sstevel@tonic-gate "/$s$s/2s2a/3s3e/1s1l/4s4h",
1380Sstevel@tonic-gate "/$s$s/2s2a/3s3e/4s4a",
1390Sstevel@tonic-gate "/$s$s/2s2a/3s3e/4s4h",
1400Sstevel@tonic-gate "/$s$s/2s2a/3s3e/4s4a",
1410Sstevel@tonic-gate "/$s$s/2s2a/3s3e/4s4h",
1420Sstevel@tonic-gate "/$s$s/2s2a/5s5s",
1430Sstevel@tonic-gate "/$s$s/2s2a/5s5s/1s1i",
1440Sstevel@tonic-gate "/$s$s/2s2a/5s5s/1s1l",
1450Sstevel@tonic-gate "/$s$s/2s2a/5s5s/1s1i/4s4a",
1460Sstevel@tonic-gate "/$s$s/2s2a/5s5s/1s1i/4s4h",
1470Sstevel@tonic-gate "/$s$s/2s2a/5s5s/1s1l/4s4a",
1480Sstevel@tonic-gate "/$s$s/2s2a/5s5s/1s1l/4s4h",
1490Sstevel@tonic-gate "/$s$s/2s2a/5s5s/4s4a",
1500Sstevel@tonic-gate "/$s$s/2s2a/5s5s/4s4h",
1510Sstevel@tonic-gate "/$s$s/2s2a/5s5s/4s4a",
1520Sstevel@tonic-gate "/$s$s/2s2a/5s5s/4s4h",
1530Sstevel@tonic-gate "/$s$s/2s2a/1s1i",
1540Sstevel@tonic-gate "/$s$s/2s2a/1s1l",
1550Sstevel@tonic-gate "/$s$s/2s2a/1s1i/4s4a",
1560Sstevel@tonic-gate "/$s$s/2s2a/1s1i/4s4h",
1570Sstevel@tonic-gate "/$s$s/2s2a/1s1l/4s4a",
1580Sstevel@tonic-gate "/$s$s/2s2a/1s1l/4s4h",
1590Sstevel@tonic-gate "/$s$s/2s2a/4s4a",
1600Sstevel@tonic-gate "/$s$s/2s2a/4s4h",
1610Sstevel@tonic-gate "/$s$s/2s2a/4s4a",
1620Sstevel@tonic-gate "/$s$s/2s2a/4s4h",
1630Sstevel@tonic-gate "/$s$s/3s3e",
1640Sstevel@tonic-gate "/$s$s/3s3e/5s5s",
1650Sstevel@tonic-gate "/$s$s/3s3e/5s5s/1s1i",
1660Sstevel@tonic-gate "/$s$s/3s3e/5s5s/1s1l",
1670Sstevel@tonic-gate "/$s$s/3s3e/5s5s/1s1i/4s4a",
1680Sstevel@tonic-gate "/$s$s/3s3e/5s5s/1s1i/4s4h",
1690Sstevel@tonic-gate "/$s$s/3s3e/5s5s/1s1l/4s4a",
1700Sstevel@tonic-gate "/$s$s/3s3e/5s5s/1s1l/4s4h",
1710Sstevel@tonic-gate "/$s$s/3s3e/5s5s/4s4a",
1720Sstevel@tonic-gate "/$s$s/3s3e/5s5s/4s4h",
1730Sstevel@tonic-gate "/$s$s/3s3e/5s5s/4s4a",
1740Sstevel@tonic-gate "/$s$s/3s3e/5s5s/4s4h",
1750Sstevel@tonic-gate "/$s$s/3s3e/1s1i",
1760Sstevel@tonic-gate "/$s$s/3s3e/1s1l",
1770Sstevel@tonic-gate "/$s$s/3s3e/1s1i/4s4a",
1780Sstevel@tonic-gate "/$s$s/3s3e/1s1i/4s4h",
1790Sstevel@tonic-gate "/$s$s/3s3e/1s1l/4s4a",
1800Sstevel@tonic-gate "/$s$s/3s3e/1s1l/4s4h",
1810Sstevel@tonic-gate "/$s$s/3s3e/4s4a",
1820Sstevel@tonic-gate "/$s$s/3s3e/4s4h",
1830Sstevel@tonic-gate "/$s$s/3s3e/4s4a",
1840Sstevel@tonic-gate "/$s$s/3s3e/4s4h",
1850Sstevel@tonic-gate "/$s$s/5s5s",
1860Sstevel@tonic-gate "/$s$s/5s5s/1s1i",
1870Sstevel@tonic-gate "/$s$s/5s5s/1s1l",
1880Sstevel@tonic-gate "/$s$s/5s5s/1s1i/4s4a",
1890Sstevel@tonic-gate "/$s$s/5s5s/1s1i/4s4h",
1900Sstevel@tonic-gate "/$s$s/5s5s/1s1l/4s4a",
1910Sstevel@tonic-gate "/$s$s/5s5s/1s1l/4s4h",
1920Sstevel@tonic-gate "/$s$s/5s5s/4s4a",
1930Sstevel@tonic-gate "/$s$s/5s5s/4s4h",
1940Sstevel@tonic-gate "/$s$s/5s5s/4s4a",
1950Sstevel@tonic-gate "/$s$s/5s5s/4s4h",
1960Sstevel@tonic-gate "/$s$s/1s1i",
1970Sstevel@tonic-gate "/$s$s/1s1l",
1980Sstevel@tonic-gate "/$s$s/1s1i/4s4a",
1990Sstevel@tonic-gate "/$s$s/1s1i/4s4h",
2000Sstevel@tonic-gate "/$s$s/1s1l/4s4a",
2010Sstevel@tonic-gate "/$s$s/1s1l/4s4h",
2020Sstevel@tonic-gate "/$s$s/4s4a",
2030Sstevel@tonic-gate "/$s$s/4s4h",
2040Sstevel@tonic-gate "/$s$s/4s4a",
2050Sstevel@tonic-gate "/$s$s/4s4h",
2060Sstevel@tonic-gate "/0s0o",
2070Sstevel@tonic-gate "/0s0o/2s2a",
2080Sstevel@tonic-gate "/0s0o/2s2a/3s3e",
2090Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s",
2100Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/1s1i",
2110Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/1s1l",
2120Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/1s1i/4s4a",
2130Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/1s1i/4s4h",
2140Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/1s1l/4s4a",
2150Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/1s1l/4s4h",
2160Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/4s4a",
2170Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/4s4h",
2180Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/4s4a",
2190Sstevel@tonic-gate "/0s0o/2s2a/3s3e/5s5s/4s4h",
2200Sstevel@tonic-gate "/0s0o/2s2a/3s3e/1s1i",
2210Sstevel@tonic-gate "/0s0o/2s2a/3s3e/1s1l",
2220Sstevel@tonic-gate "/0s0o/2s2a/3s3e/1s1i/4s4a",
2230Sstevel@tonic-gate "/0s0o/2s2a/3s3e/1s1i/4s4h",
2240Sstevel@tonic-gate "/0s0o/2s2a/3s3e/1s1l/4s4a",
2250Sstevel@tonic-gate "/0s0o/2s2a/3s3e/1s1l/4s4h",
2260Sstevel@tonic-gate "/0s0o/2s2a/3s3e/4s4a",
2270Sstevel@tonic-gate "/0s0o/2s2a/3s3e/4s4h",
2280Sstevel@tonic-gate "/0s0o/2s2a/3s3e/4s4a",
2290Sstevel@tonic-gate "/0s0o/2s2a/3s3e/4s4h",
2300Sstevel@tonic-gate "/0s0o/2s2a/5s5s",
2310Sstevel@tonic-gate "/0s0o/2s2a/5s5s/1s1i",
2320Sstevel@tonic-gate "/0s0o/2s2a/5s5s/1s1l",
2330Sstevel@tonic-gate "/0s0o/2s2a/5s5s/1s1i/4s4a",
2340Sstevel@tonic-gate "/0s0o/2s2a/5s5s/1s1i/4s4h",
2350Sstevel@tonic-gate "/0s0o/2s2a/5s5s/1s1l/4s4a",
2360Sstevel@tonic-gate "/0s0o/2s2a/5s5s/1s1l/4s4h",
2370Sstevel@tonic-gate "/0s0o/2s2a/5s5s/4s4a",
2380Sstevel@tonic-gate "/0s0o/2s2a/5s5s/4s4h",
2390Sstevel@tonic-gate "/0s0o/2s2a/5s5s/4s4a",
2400Sstevel@tonic-gate "/0s0o/2s2a/5s5s/4s4h",
2410Sstevel@tonic-gate "/0s0o/2s2a/1s1i",
2420Sstevel@tonic-gate "/0s0o/2s2a/1s1l",
2430Sstevel@tonic-gate "/0s0o/2s2a/1s1i/4s4a",
2440Sstevel@tonic-gate "/0s0o/2s2a/1s1i/4s4h",
2450Sstevel@tonic-gate "/0s0o/2s2a/1s1l/4s4a",
2460Sstevel@tonic-gate "/0s0o/2s2a/1s1l/4s4h",
2470Sstevel@tonic-gate "/0s0o/2s2a/4s4a",
2480Sstevel@tonic-gate "/0s0o/2s2a/4s4h",
2490Sstevel@tonic-gate "/0s0o/2s2a/4s4a",
2500Sstevel@tonic-gate "/0s0o/2s2a/4s4h",
2510Sstevel@tonic-gate "/0s0o/3s3e",
2520Sstevel@tonic-gate "/0s0o/3s3e/5s5s",
2530Sstevel@tonic-gate "/0s0o/3s3e/5s5s/1s1i",
2540Sstevel@tonic-gate "/0s0o/3s3e/5s5s/1s1l",
2550Sstevel@tonic-gate "/0s0o/3s3e/5s5s/1s1i/4s4a",
2560Sstevel@tonic-gate "/0s0o/3s3e/5s5s/1s1i/4s4h",
2570Sstevel@tonic-gate "/0s0o/3s3e/5s5s/1s1l/4s4a",
2580Sstevel@tonic-gate "/0s0o/3s3e/5s5s/1s1l/4s4h",
2590Sstevel@tonic-gate "/0s0o/3s3e/5s5s/4s4a",
2600Sstevel@tonic-gate "/0s0o/3s3e/5s5s/4s4h",
2610Sstevel@tonic-gate "/0s0o/3s3e/5s5s/4s4a",
2620Sstevel@tonic-gate "/0s0o/3s3e/5s5s/4s4h",
2630Sstevel@tonic-gate "/0s0o/3s3e/1s1i",
2640Sstevel@tonic-gate "/0s0o/3s3e/1s1l",
2650Sstevel@tonic-gate "/0s0o/3s3e/1s1i/4s4a",
2660Sstevel@tonic-gate "/0s0o/3s3e/1s1i/4s4h",
2670Sstevel@tonic-gate "/0s0o/3s3e/1s1l/4s4a",
2680Sstevel@tonic-gate "/0s0o/3s3e/1s1l/4s4h",
2690Sstevel@tonic-gate "/0s0o/3s3e/4s4a",
2700Sstevel@tonic-gate "/0s0o/3s3e/4s4h",
2710Sstevel@tonic-gate "/0s0o/3s3e/4s4a",
2720Sstevel@tonic-gate "/0s0o/3s3e/4s4h",
2730Sstevel@tonic-gate "/0s0o/5s5s",
2740Sstevel@tonic-gate "/0s0o/5s5s/1s1i",
2750Sstevel@tonic-gate "/0s0o/5s5s/1s1l",
2760Sstevel@tonic-gate "/0s0o/5s5s/1s1i/4s4a",
2770Sstevel@tonic-gate "/0s0o/5s5s/1s1i/4s4h",
2780Sstevel@tonic-gate "/0s0o/5s5s/1s1l/4s4a",
2790Sstevel@tonic-gate "/0s0o/5s5s/1s1l/4s4h",
2800Sstevel@tonic-gate "/0s0o/5s5s/4s4a",
2810Sstevel@tonic-gate "/0s0o/5s5s/4s4h",
2820Sstevel@tonic-gate "/0s0o/5s5s/4s4a",
2830Sstevel@tonic-gate "/0s0o/5s5s/4s4h",
2840Sstevel@tonic-gate "/0s0o/1s1i",
2850Sstevel@tonic-gate "/0s0o/1s1l",
2860Sstevel@tonic-gate "/0s0o/1s1i/4s4a",
2870Sstevel@tonic-gate "/0s0o/1s1i/4s4h",
2880Sstevel@tonic-gate "/0s0o/1s1l/4s4a",
2890Sstevel@tonic-gate "/0s0o/1s1l/4s4h",
2900Sstevel@tonic-gate "/0s0o/4s4a",
2910Sstevel@tonic-gate "/0s0o/4s4h",
2920Sstevel@tonic-gate "/0s0o/4s4a",
2930Sstevel@tonic-gate "/0s0o/4s4h",
2940Sstevel@tonic-gate "/2s2a",
2950Sstevel@tonic-gate "/2s2a/3s3e",
2960Sstevel@tonic-gate "/2s2a/3s3e/5s5s",
2970Sstevel@tonic-gate "/2s2a/3s3e/5s5s/1s1i",
2980Sstevel@tonic-gate "/2s2a/3s3e/5s5s/1s1l",
2990Sstevel@tonic-gate "/2s2a/3s3e/5s5s/1s1i/4s4a",
3000Sstevel@tonic-gate "/2s2a/3s3e/5s5s/1s1i/4s4h",
3010Sstevel@tonic-gate "/2s2a/3s3e/5s5s/1s1l/4s4a",
3020Sstevel@tonic-gate "/2s2a/3s3e/5s5s/1s1l/4s4h",
3030Sstevel@tonic-gate "/2s2a/3s3e/5s5s/4s4a",
3040Sstevel@tonic-gate "/2s2a/3s3e/5s5s/4s4h",
3050Sstevel@tonic-gate "/2s2a/3s3e/5s5s/4s4a",
3060Sstevel@tonic-gate "/2s2a/3s3e/5s5s/4s4h",
3070Sstevel@tonic-gate "/2s2a/3s3e/1s1i",
3080Sstevel@tonic-gate "/2s2a/3s3e/1s1l",
3090Sstevel@tonic-gate "/2s2a/3s3e/1s1i/4s4a",
3100Sstevel@tonic-gate "/2s2a/3s3e/1s1i/4s4h",
3110Sstevel@tonic-gate "/2s2a/3s3e/1s1l/4s4a",
3120Sstevel@tonic-gate "/2s2a/3s3e/1s1l/4s4h",
3130Sstevel@tonic-gate "/2s2a/3s3e/4s4a",
3140Sstevel@tonic-gate "/2s2a/3s3e/4s4h",
3150Sstevel@tonic-gate "/2s2a/3s3e/4s4a",
3160Sstevel@tonic-gate "/2s2a/3s3e/4s4h",
3170Sstevel@tonic-gate "/2s2a/5s5s",
3180Sstevel@tonic-gate "/2s2a/5s5s/1s1i",
3190Sstevel@tonic-gate "/2s2a/5s5s/1s1l",
3200Sstevel@tonic-gate "/2s2a/5s5s/1s1i/4s4a",
3210Sstevel@tonic-gate "/2s2a/5s5s/1s1i/4s4h",
3220Sstevel@tonic-gate "/2s2a/5s5s/1s1l/4s4a",
3230Sstevel@tonic-gate "/2s2a/5s5s/1s1l/4s4h",
3240Sstevel@tonic-gate "/2s2a/5s5s/4s4a",
3250Sstevel@tonic-gate "/2s2a/5s5s/4s4h",
3260Sstevel@tonic-gate "/2s2a/5s5s/4s4a",
3270Sstevel@tonic-gate "/2s2a/5s5s/4s4h",
3280Sstevel@tonic-gate "/2s2a/1s1i",
3290Sstevel@tonic-gate "/2s2a/1s1l",
3300Sstevel@tonic-gate "/2s2a/1s1i/4s4a",
3310Sstevel@tonic-gate "/2s2a/1s1i/4s4h",
3320Sstevel@tonic-gate "/2s2a/1s1l/4s4a",
3330Sstevel@tonic-gate "/2s2a/1s1l/4s4h",
3340Sstevel@tonic-gate "/2s2a/4s4a",
3350Sstevel@tonic-gate "/2s2a/4s4h",
3360Sstevel@tonic-gate "/2s2a/4s4a",
3370Sstevel@tonic-gate "/2s2a/4s4h",
3380Sstevel@tonic-gate "/3s3e",
3390Sstevel@tonic-gate "/3s3e/5s5s",
3400Sstevel@tonic-gate "/3s3e/5s5s/1s1i",
3410Sstevel@tonic-gate "/3s3e/5s5s/1s1l",
3420Sstevel@tonic-gate "/3s3e/5s5s/1s1i/4s4a",
3430Sstevel@tonic-gate "/3s3e/5s5s/1s1i/4s4h",
3440Sstevel@tonic-gate "/3s3e/5s5s/1s1l/4s4a",
3450Sstevel@tonic-gate "/3s3e/5s5s/1s1l/4s4h",
3460Sstevel@tonic-gate "/3s3e/5s5s/4s4a",
3470Sstevel@tonic-gate "/3s3e/5s5s/4s4h",
3480Sstevel@tonic-gate "/3s3e/5s5s/4s4a",
3490Sstevel@tonic-gate "/3s3e/5s5s/4s4h",
3500Sstevel@tonic-gate "/3s3e/1s1i",
3510Sstevel@tonic-gate "/3s3e/1s1l",
3520Sstevel@tonic-gate "/3s3e/1s1i/4s4a",
3530Sstevel@tonic-gate "/3s3e/1s1i/4s4h",
3540Sstevel@tonic-gate "/3s3e/1s1l/4s4a",
3550Sstevel@tonic-gate "/3s3e/1s1l/4s4h",
3560Sstevel@tonic-gate "/3s3e/4s4a",
3570Sstevel@tonic-gate "/3s3e/4s4h",
3580Sstevel@tonic-gate "/3s3e/4s4a",
3590Sstevel@tonic-gate "/3s3e/4s4h",
3600Sstevel@tonic-gate "/5s5s",
3610Sstevel@tonic-gate "/5s5s/1s1i",
3620Sstevel@tonic-gate "/5s5s/1s1l",
3630Sstevel@tonic-gate "/5s5s/1s1i/4s4a",
3640Sstevel@tonic-gate "/5s5s/1s1i/4s4h",
3650Sstevel@tonic-gate "/5s5s/1s1l/4s4a",
3660Sstevel@tonic-gate "/5s5s/1s1l/4s4h",
3670Sstevel@tonic-gate "/5s5s/4s4a",
3680Sstevel@tonic-gate "/5s5s/4s4h",
3690Sstevel@tonic-gate "/5s5s/4s4a",
3700Sstevel@tonic-gate "/5s5s/4s4h",
3710Sstevel@tonic-gate "/1s1i",
3720Sstevel@tonic-gate "/1s1l",
3730Sstevel@tonic-gate "/1s1i/4s4a",
3740Sstevel@tonic-gate "/1s1i/4s4h",
3750Sstevel@tonic-gate "/1s1l/4s4a",
3760Sstevel@tonic-gate "/1s1l/4s4h",
3770Sstevel@tonic-gate "/4s4a",
3780Sstevel@tonic-gate "/4s4h",
3790Sstevel@tonic-gate "/4s4a",
3800Sstevel@tonic-gate "/4s4h",
3810Sstevel@tonic-gate /* done */
3820Sstevel@tonic-gate (char *)0
3830Sstevel@tonic-gate };
3840Sstevel@tonic-gate
3850Sstevel@tonic-gate
3860Sstevel@tonic-gate int
FascistLook(PWDICT * pwp,char * instring)3870Sstevel@tonic-gate FascistLook(PWDICT *pwp, char *instring)
3880Sstevel@tonic-gate {
389*9798SJoep.Vesseur@Sun.COM int i;
3900Sstevel@tonic-gate char *password;
391*9798SJoep.Vesseur@Sun.COM uint32_t notfound;
3920Sstevel@tonic-gate char rpassword[PATH_MAX];
3930Sstevel@tonic-gate
3940Sstevel@tonic-gate notfound = PW_WORDS(pwp);
3950Sstevel@tonic-gate
3960Sstevel@tonic-gate (void) strlcpy(rpassword, instring, TRUNCSTRINGSIZE);
3970Sstevel@tonic-gate password = rpassword;
3980Sstevel@tonic-gate
3990Sstevel@tonic-gate (void) strcpy(password, Lowercase(password));
4000Sstevel@tonic-gate (void) Trim(password);
4010Sstevel@tonic-gate
4020Sstevel@tonic-gate /*
4030Sstevel@tonic-gate * it should be safe to use Mangle with its reliance on PATH_SIZE
4040Sstevel@tonic-gate * since password cannot be longer than TRUNCSTRINGSIZE;
4050Sstevel@tonic-gate * nonetheless this is not an elegant solution
4060Sstevel@tonic-gate */
4070Sstevel@tonic-gate
4080Sstevel@tonic-gate for (i = 0; r_destructors[i]; i++) {
409*9798SJoep.Vesseur@Sun.COM char *a;
4100Sstevel@tonic-gate
4110Sstevel@tonic-gate if (!(a = Mangle(password, r_destructors[i]))) {
412*9798SJoep.Vesseur@Sun.COM continue;
4130Sstevel@tonic-gate }
4140Sstevel@tonic-gate
4150Sstevel@tonic-gate if (FindPW(pwp, a) != notfound) {
416*9798SJoep.Vesseur@Sun.COM return (DICTIONARY_WORD);
4170Sstevel@tonic-gate }
4180Sstevel@tonic-gate }
4190Sstevel@tonic-gate
4200Sstevel@tonic-gate (void) strlcpy(password, Reverse(password), PATH_MAX);
4210Sstevel@tonic-gate
4220Sstevel@tonic-gate for (i = 0; r_destructors[i]; i++) {
423*9798SJoep.Vesseur@Sun.COM char *a;
4240Sstevel@tonic-gate
4250Sstevel@tonic-gate if (!(a = Mangle(password, r_destructors[i]))) {
4260Sstevel@tonic-gate continue;
4270Sstevel@tonic-gate }
4280Sstevel@tonic-gate if (FindPW(pwp, a) != notfound) {
429*9798SJoep.Vesseur@Sun.COM return (REVERSE_DICTIONARY_WORD);
4300Sstevel@tonic-gate }
4310Sstevel@tonic-gate }
4320Sstevel@tonic-gate
4330Sstevel@tonic-gate return (0);
4340Sstevel@tonic-gate }
4350Sstevel@tonic-gate
4360Sstevel@tonic-gate int
DictCheck(char * password,char * path)4370Sstevel@tonic-gate DictCheck(char *password, char *path)
4380Sstevel@tonic-gate {
4390Sstevel@tonic-gate PWDICT *pwp;
4400Sstevel@tonic-gate int r;
4410Sstevel@tonic-gate
4421914Scasper if ((pwp = PWOpen(path, "rF")) == NULL)
4430Sstevel@tonic-gate return (DATABASE_OPEN_FAIL);
4440Sstevel@tonic-gate
4450Sstevel@tonic-gate r = FascistLook(pwp, password);
4460Sstevel@tonic-gate (void) PWClose(pwp);
4470Sstevel@tonic-gate return (r);
4480Sstevel@tonic-gate }
449