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