home *** CD-ROM | disk | FTP | other *** search
- Xref: wupost alt.sources:3891 alt.security:3703
- Path: wupost!uunet!mcsun!ukc!strath-cs!gdt!aber!aem
- From: aem@aber.ac.uk (Alec David Muffett)
- Newsgroups: alt.sources,alt.security
- Subject: Crack v3.2a - a Sensible password cracker. Part04/04
- Message-ID: <1991Aug23.092441.7782@aber.ac.uk>
- Date: 23 Aug 91 09:24:41 GMT
- Sender: aem@aber.ac.uk (Alec David Muffett)
- Organization: University College of Wales, Aberystwyth
- Lines: 771
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 4 (of 4)."
- # Contents: Docs/README.ps
- # Wrapped by aem@aberda on Fri Aug 23 09:57:54 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Docs/README.ps' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Docs/README.ps'\"
- else
- echo shar: Extracting \"'Docs/README.ps'\" \(37992 characters\)
- sed "s/^X//" >'Docs/README.ps' <<'END_OF_FILE'
- X%!PS-Adobe-3.0
- X%%Creator: groff version 1.02
- X%%DocumentNeededResources: font Times-Bold
- X%%+ font Times-Italic
- X%%+ font Times-Roman
- X%%+ font Courier
- X%%DocumentSuppliedResources: procset grops 1.02 0
- X%%Pages: 6
- X%%PageOrder: Ascend
- X%%Orientation: Portrait
- X%%EndComments
- X%%BeginProlog
- X%%BeginResource: procset grops 1.02 0
- X
- X/setpacking where {
- X pop
- X currentpacking
- X true setpacking
- X} if
- X
- X/grops 120 dict dup begin
- X
- X% The ASCII code of the space character.
- X/SC 32 def
- X
- X/A /show load def
- X/B { 0 SC 3 -1 roll widthshow } bind def
- X/C { 0 exch ashow } bind def
- X/D { 0 exch 0 SC 5 2 roll awidthshow } bind def
- X/E { 0 rmoveto show } bind def
- X/F { 0 rmoveto 0 SC 3 -1 roll widthshow } bind def
- X/G { 0 rmoveto 0 exch ashow } bind def
- X/H { 0 rmoveto 0 exch 0 SC 5 2 roll awidthshow } bind def
- X/I { 0 exch rmoveto show } bind def
- X/J { 0 exch rmoveto 0 SC 3 -1 roll widthshow } bind def
- X/K { 0 exch rmoveto 0 exch ashow } bind def
- X/L { 0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow } bind def
- X/M { rmoveto show } bind def
- X/N { rmoveto 0 SC 3 -1 roll widthshow } bind def
- X/O { rmoveto 0 exch ashow } bind def
- X/P { rmoveto 0 exch 0 SC 5 2 roll awidthshow } bind def
- X/Q { moveto show } bind def
- X/R { moveto 0 SC 3 -1 roll widthshow } bind def
- X/S { moveto 0 exch ashow } bind def
- X/T { moveto 0 exch 0 SC 5 2 roll awidthshow } bind def
- X
- X% name size font SF -
- X
- X/SF {
- X findfont exch
- X [ exch dup 0 exch 0 exch neg 0 0 ] makefont
- X dup setfont
- X [ exch /setfont cvx ] cvx bind def
- X} bind def
- X
- X% name a c d font MF -
- X
- X/MF {
- X findfont
- X [ 5 2 roll
- X 0 3 1 roll % b
- X neg 0 0 ] makefont
- X dup setfont
- X [ exch /setfont cvx ] cvx bind def
- X} bind def
- X
- X/level0 0 def
- X/RES 0 def
- X/PL 0 def
- X/LS 0 def
- X
- X% BP -
- X
- X/BP {
- X /level0 save def
- X 1 setlinecap
- X 1 setlinejoin
- X 72 RES div dup scale
- X LS {
- X 90 rotate
- X } {
- X 0 PL translate
- X } ifelse
- X 1 -1 scale
- X} bind def
- X
- X/EP {
- X level0 restore
- X showpage
- X} bind def
- X
- X
- X% centerx centery radius startangle endangle DA -
- X
- X/DA {
- X newpath arcn stroke
- X} bind def
- X
- X% x y SN - x' y'
- X% round a position to nearest (pixel + (.25,.25))
- X
- X/SN {
- X transform
- X .25 sub exch .25 sub exch
- X round .25 add exch round .25 add exch
- X itransform
- X} bind def
- X
- X% endx endy startx starty DL -
- X% we round the endpoints of the line, so that parallel horizontal
- X% and vertical lines will appear even
- X
- X/DL {
- X SN
- X moveto
- X SN
- X lineto stroke
- X} bind def
- X
- X% centerx centery radius DC -
- X
- X/DC {
- X newpath 0 360 arc closepath
- X} bind def
- X
- X
- X/TM matrix def
- X
- X% width height centerx centery DE -
- X
- X/DE {
- X TM currentmatrix pop
- X translate scale newpath 0 0 .5 0 360 arc closepath
- X TM setmatrix
- X} bind def
- X
- X% these are for splines
- X
- X/RC /rcurveto load def
- X/RL /rlineto load def
- X/ST /stroke load def
- X/MT /moveto load def
- X/CL /closepath load def
- X
- X% fill the last path
- X
- X% amount FL -
- X
- X/FL {
- X currentgray exch setgray fill setgray
- X} bind def
- X
- X% fill with the ``current color''
- X
- X/BL /fill load def
- X
- X/LW /setlinewidth load def
- X% new_font_name encoding_vector old_font_name RE -
- X
- X/RE {
- X findfont
- X dup maxlength dict begin
- X {
- X 1 index /FID ne { def } { pop pop } ifelse
- X } forall
- X /Encoding exch def
- X dup /FontName exch def
- X currentdict end definefont pop
- X} bind def
- X
- X/DEFS 0 def
- X
- X% hpos vpos EBEGIN -
- X
- X/EBEGIN {
- X moveto
- X DEFS begin
- X} bind def
- X
- X/EEND /end load def
- X
- X/CNT 0 def
- X/level1 0 def
- X
- X% llx lly newwid wid newht ht newllx newlly PBEGIN -
- X
- X/PBEGIN {
- X /level1 save def
- X translate
- X div 3 1 roll div exch scale
- X neg exch neg exch translate
- X % set the graphics state to default values
- X 0 setgray
- X 0 setlinecap
- X 1 setlinewidth
- X 0 setlinejoin
- X 10 setmiterlimit
- X [] 0 setdash
- X /setstrokeadjust where {
- X pop
- X false setstrokeadjust
- X } if
- X /setoverprint where {
- X pop
- X false setoverprint
- X } if
- X newpath
- X /CNT countdictstack def
- X /showpage {} def
- X} bind def
- X
- X/PEND {
- X clear
- X countdictstack CNT sub { end } repeat
- X level1 restore
- X} bind def
- X
- Xend def
- X
- X/setpacking where {
- X pop
- X setpacking
- X} if
- X%%EndResource
- X%%IncludeResource: font Times-Bold
- X%%IncludeResource: font Times-Italic
- X%%IncludeResource: font Times-Roman
- X%%IncludeResource: font Courier
- Xgrops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL
- X792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron
- X/Ydieresis/trademark/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- X/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
- X/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam
- X/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright
- X/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven
- X/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J
- X/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
- X/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z
- X/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
- X/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl/endash
- X/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut/dotaccent/breve
- X/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash/quotedblbase/OE/Lslash
- X/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis
- X/copyright/ordfeminine/guilsinglleft/logicalnot/minus/registered/macron/degree
- X/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla
- X/onesuperior/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
- X/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla
- X/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth
- X/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave
- X/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex
- X/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
- X/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde
- X/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn
- X/ydieresis]def/Courier@0 ENC0/Courier RE/Times-Roman@0 ENC0/Times-Roman RE
- X/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
- X%%EndProlog
- X%%Page: 1 1
- X%%BeginPageSetup
- XBP
- X%%EndPageSetup
- X/F0 12/Times-Bold@0 SF("Crack V)235.398 123 Q(ersion 3.2")-1.104 E 3(AS)184.428
- X138 S(ensible Password Checker for)202.764 138 Q/F1 9.6/Times-Bold@0 SF(UNIX)3
- XE F0<ae>A/F2 10/Times-Italic@0 SF(Alec D.E. Muffett)253.005 162 Q/F3 10
- X/Times-Roman@0 SF(Computer Unit, University College of W)198.685 180 Q(ales)-.8
- XE(Aberystwyth, W)222.99 192 Q(ales, SY23 3DB)-.8 E F2(aem@aber)254.52 204 Q
- X(.ac.uk)-1.11 E F3(+44 970 622492)255.18 216 Q F2(ABSTRACT)264.385 252 Q/F4 10
- X/Times-Bold@0 SF(Crack)133 279.6 Q/F5 7/Times-Roman@0 SF(1)159.66 275.5 Q F3
- X.018(is a freely available program designed to \214nd standard)165.678 279.6 R
- X/F6 8/Times-Roman@0 SF(UNIX)2.518 E F3(eight-character)2.518 E .744
- X(DES encrypted passwords by standard guessing techniques outlined below)108
- X291.6 R 5.745(.I)-.65 G 3.245(ti)423.73 291.6 S 3.245(sw)432.535 291.6 S
- X(ritten)446.89 291.6 Q 1.431(to be \215exible, con\214gurable and fast, and to\
- X be able to make use of several networked)108 303.6 R(hosts via the Berkeley)
- X108 315.6 Q/F7 10/Courier@0 SF(rsh)2.5 E F3
- X(program \(or similar\), where possible.)2.5 E F4 2.5(1. Intent)72 351.6 R
- X(of this pr)2.5 E(ogram)-.18 E F3
- X(My intentions, whilst writing this program, were)72 367.2 Q 14.17(1\) T)72
- X382.8 R 2.828(op)-.7 G .328(rovide the average system manager with a simple, \
- X\215exible and fast tool to \214nd passwords which)115.238 382.8 R
- X(would be easily compromised by a dictionary search.)97 394.8 Q 14.17(2\) T)72
- X410.4 R 4.295(ow)-.7 G 1.794
- X(eaken the complacency which has developed amongst many \(in\)?experienced)
- X118.925 410.4 R F6(UNIX)4.294 E F3(systems)4.294 E .526
- X(managers about password security)97 422.4 R 3.026(.J)-.65 G .526
- X(ust because the)244.814 422.4 R F7(crypt\(\))3.026 E F3 .526
- X(function cannot be reversed does not)3.026 F .582
- X(mean that your passwords are secure.)97 434.4 R .582
- X(If this program helps to raise the overall quotient of paranoia)5.582 F(just \
- Xone little bit, then it will have served its purpose and is all to the good.)97
- X446.4 Q 2.769(Ia)72 462 S 2.769(mq)82.539 462 S .269(uite certain that some ch\
- Xildish morons out there will abuse the work that I have put into creating this)
- X98.088 462 R 2.794(program. It')72 474 R 2.794(su)-.55 G 2.794(pt)134.248 474 S
- X2.794(ot)144.822 474 S .294(hem how they use it, but if it')155.396 474 R 2.794
- X(su)-.55 G .294(sed for some illegal purpose it')286.918 474 R 2.793(sn)-.55 G
- X.293(ot my intention, nor)423.671 474 R(my fault. I hope they get caught.)72
- X486 Q .252(Crack was not designed to do anything)72 501.6 R F2(nasty)2.752 E F3
- X2.752(,o)C .252(ther than to attack passwords in sensible order)263.166 501.6 R
- X5.253(.T)-.55 G .253(his is why)462.934 501.6 R 2.877(If)72 513.6 S .376
- X(eel I can post it to the net without fear of recrimination.)81.537 513.6 R
- X.376(This version of Crack is supplied with a \(hope-)5.376 F .697
- X(fully\) portable version of)72 525.6 R F7(fcrypt\(\))3.197 E F3 3.197(,f)C
- X.697(or speed reasons.)234.575 525.6 R .698
- X(Fcrypt\(\) is not yet widely available, but several)5.697 F 2.148
- X(versions have now been posted to USENET)72 537.6 R 4.648(,a)-.74 G 2.148
- X(nd with the growing ability to access anonymous FTP)271.266 537.6 R 1.081
- X(databases like)72 549.6 R F4(Ar)3.581 E(chie)-.18 E F3 3.581(,Ib)C 1.082(elie\
- Xve that people who really want access to such programs as fcrypt\(\) will be)
- X179.174 549.6 R .388(able to get them easily)72 561.6 R 5.388(.P)-.65 G .388
- X(eople who need them but don')176.34 561.6 R 2.888(th)-.18 G .387
- X(ave the time to look, on the other hand, will not)310.138 561.6 R .013
- X(get them.)72 573.6 R .013
- X(This is not a good thing if you are a systems manager)5.013 F 2.513(,b)-.4 G
- X.013(ecause it gives the crackers an advantage.)337.592 573.6 R
- X(My philosophy is:)72 585.6 Q F2
- X(give it to everyone, then at least the people who need it can get it)2.5 E F3
- X(.)A F4 2.5(2. Fcrypt\(\))72 609.6 R(Statistics)2.5 E F3 .469(The version of f\
- Xcrypt\(\) that comes with Crack is some 3.4 times faster than the version that\
- X was originally)72 625.2 R 1.593(supplied to me, and should outperform most ot\
- Xhers which are publicly available.)72 637.2 R 4.094(Ih)6.594 G(aven')430.452
- X637.2 Q 4.094(tt)-.18 G 1.594(ried many)462.136 637.2 R .738
- X(speed-demon style tricks, but rather I have gone for portability)72 649.2 R
- X3.238(,e)-.65 G .738(legance and simplicity)338.68 649.2 R 3.237(,w)-.65 G .737
- X(here applicable)442.453 649.2 R F7(8-\).)72 661.2 Q F3 .131(On a DECStation 5\
- X000/200, fcrypt\(\) iterates ~550 times per second, and overall, I measure thi\
- Xs to be)5.131 F .967(13 times faster than standard crypt\(\).)72 673.2 R .967
- X(There are faster versions available, but at least I feel free to redis-)5.967
- XF(trubute this version without stepping on anyones toes.)72 685.2 Q .32 LW 144
- X708.2 72 708.2 DL/F8 5.6/Times-Roman@0 SF(1)82 716.72 Q/F9 8/Courier@0 SF
- X(Crack)2 3.28 M F6(is available for anonymous FTP from)2 E/F10 8/Times-Italic@0
- XSF(wuar)2 E(chive.wustl.edu)-.296 E F6(\(128.252.135.4\) in)2 E F10(~/packages)
- X2 E EP
- X%%Page: 2 2
- X%%BeginPageSetup
- XBP
- X%%EndPageSetup
- X/F0 10/Times-Roman@0 SF(-2-)282.17 48 Q 3.378<418c>72 84 S .879(nal note about\
- X my motives: If you think that I am a moron for writing and then distributing \
- Xthis pro-)88.158 84 R .824(gram, and you think that the program is in itself d\
- Xangerous, I suggest that you carefully consider the fact)72 96 R
- X(that any moron could have written this program.)72 108 Q(Flames to)5 E/F1 10
- X/Courier@0 SF(/dev/null)2.5 E F0 2.5(,p)C(lease.)375.98 108 Q/F2 10
- X/Times-Bold@0 SF 2.5(3. Implementation)72 132 R F0 4.031(Ih)72 147.6 S 1.531
- X(ave tried to make Crack as portable as possible without compromising speed.)
- X84.361 147.6 R 1.531(Needless to say)6.531 F 4.032(,i)-.65 G 4.032(ti)490.518
- X147.6 S(s)500.11 147.6 Q .592(imperfect in the this respect, but I have tried.)
- X72 159.6 R .591(If you have problems getting Crack up, please let me know)5.592
- XF .489
- X(what these problems were, and what system you were trying to put Crack up on.)
- X72 171.6 R 2.989(Ib)5.489 G .489(elieve that Crack will)416.713 171.6 R .187
- X(work on)72 183.6 R F2(Xenix)2.687 E F0 .186(and various versions of)2.686 F F2
- X.186(System V)2.686 F F0 2.686(,b)C .186(ut it may require a little ef)282.536
- X183.6 R .186(fort if your)-.18 F/F3 8/Times-Roman@0 SF(UNIX)2.686 E F0 .186
- X(is not fairly)2.686 F(modern.)72 195.6 Q .956(There have been some nasty stor\
- Xies sent back to me about problems encountered due to the Crack script)72 211.2
- XR .619(being written in c-shell.)72 223.2 R .619
- X(Because of this, I enclose a program)5.619 F F1(Crack.sh)3.119 E F0 .618
- X(which is a functionally equiva-)3.119 F .44
- X(lent script in Bourne shell, using)72 235.2 R F1(nohup)2.94 E F0 .44
- X(to kick the cracker of)2.94 F 2.94(fi)-.18 G .44(nto the background.)335.68
- X235.2 R .44(If your version of c-)5.44 F 1.398
- X(shell is non standard \(ie: not BSDish\) or you are worried, you may use)72
- X247.2 R F1(Crack.sh)3.897 E F0(in)3.897 E F1(Crack)3.897 E F0 2.497 -.55('s p)D
- X(lace.).55 E .059(Note, though, that if you want to use the network options, y\
- Xou will also have to edit)72 259.2 R F1(Scripts/RCrack)2.56 E F0(to)2.56 E
- X(change the program-name that is called on remote machines to)72 271.2 Q F1
- X(Crack.sh)2.5 E F0 5(.F)C(or more on this, see below)386.34 271.2 Q(.)-.65 E
- X2.835 -.7(To u)72 286.8 T 1.435(se the).7 F F1 1.434(Crack -network)3.934 F F0
- X1.434(option, you must have)3.934 F F1(rsh)3.934 E F0 3.934(,o)C 3.934(ras)
- X335.692 286.8 S 1.434(imilar program.)355.22 286.8 R F1(rsh)6.434 E F0 1.434
- X(is a BSD-ism)3.934 F .611(which has become fairly common on non-BSD systems.)
- X72 298.8 R .611(If you don')5.611 F 3.111(th)-.18 G .611
- X(ave it or something similar)363.791 298.8 R 3.112(,l)-.4 G .612(et me)481.448
- X298.8 R 1.306(know what you do have which might, with a little ingenuity)72
- X310.8 R 3.805(,d)-.65 G 3.805(ot)334.87 310.8 S 1.305
- X(he job, and I shall see what I can do.)346.455 310.8 R(Again, have a look in)
- X72 322.8 Q F1(Scripts/RCrack)2.5 E F0(if you want to play around.)2.5 E F2 .314
- X(Note: Xenix)97 338.4 R F0 .314(users and some others have a)2.814 F F1(rcmd)
- X2.815 E F0 .315(program instead of)2.815 F F1(rsh)2.815 E F0 5.315(.I)C .315
- X('m not sure of the)406.64 338.4 R 1.19
- X(correct syntax for this program, but it should not be hard to get it to work.)
- X97 350.4 R 1.189(There is a note)6.189 F(about it in)97 362.4 Q F1
- X(Scripts/RCrack)2.5 E F0 1.1
- X(On such System V based systems, users may also be missing the BSD function)97
- X378 R F1(gethost-)3.6 E(name\(\))97 390 Q F0 8.102(.I)C 5.602(ft)146.932 390 S
- X3.102(his is so, but you)158.644 390 R F2(do)5.601 E F0 3.101(have the)5.601 F
- XF1(uname\(\))5.601 E F0 3.101(system call, de\214ne the macro)5.601 F F1
- X(CRACK_UNAME)97 402 Q F0(in)2.504 E F1(Sources/conf.h)2.504 E F0 .005
- X(instead. This ought to \214x the problem, but it)2.504 F/F4 10/Times-Italic@0
- XSF(may)2.505 E F0(need)2.505 E 4.131(al)97 414 S 1.631
- X(ittle user intervention \214rst \(it depends where your header \214le for)
- X108.351 414 R F1(uname\(\))4.13 E F0(is\).)4.13 E F4(Caveat)6.63 E(Emptor!)97
- X426 Q F2 2.5(4. Method)72 450 R(of Password Cracking)2.5 E F0 .268(Crack does \
- Xnot take the serial approach to password guessing that other programs like the)
- X72 465.6 R F2(COPS)2.769 E F0(password)2.769 E(cracker does.)72 477.6 Q(Rather)
- X5 E 2.5(,C)-.4 G(rack makes two passes over the users' password entries.)167.68
- X477.6 Q .372(The \214rst pass bases its guesses on the contents of the)72 493.2
- XR F4(gecos)2.872 E F0 .372
- X(\214eld \(containing the users' real name\), and the)2.872 F .282
- X(username itself.)72 505.2 R .283(The \214rst pass is fast and usually very fr\
- Xuitful, and completes quite quickly)5.283 F 5.283(.Y)-.65 G .283(ou would be)
- X453.994 505.2 R 1.395(surprised at the number of spods out there who still thi\
- Xnk that their middle name, backwards and capi-)72 517.2 R
- X(talised, is a good password.)72 529.2 Q 1.219(The second pass is made by encr\
- Xypting several pre-processed dictionaries on the \215y)72 544.8 R 3.72(,a)-.65
- XG 1.22(nd comparing the)431.57 544.8 R .197(results with users passwords.)72
- X556.8 R .197
- X(Crack optimises the number of calls to the encryption function by sorting the)
- X5.197 F .875(user passwords by their)72 568.8 R F4 .875(encryption salt)3.375 F
- XF0 .876(before loading, so that the dictionaries only have to be encrypted)
- X3.375 F 1.824(once for each dif)72 580.8 R 1.824(ferent salt.)-.18 F 1.823
- X(This generally saves about 30% of the calls you would have to make to)6.824 F
- XF1(crypt\(\))72 592.8 Q F0(.)A .083
- X(The preprocessed dictionaries are created my mer)72 608.4 R .084
- X(ging the source dictionaries found in the directory)-.18 F F1(Dict-)2.584 E
- X(Src)72 620.4 Q F0 .944
- X(and then truncating, sorting and uniq'ing the output from the preprocessor)
- X3.445 F 5.944(.T)-.55 G .944(he default dictionaries)413.242 620.4 R 6.628
- X(named are)72 632.4 R F1(/usr/dict/words)9.128 E F0 6.628
- X(which provides the bulk of the input data, and)9.128 F F1(Dict-)9.129 E
- X(Src/bad_pws.dat)72 644.4 Q F0 .498
- X(which is meant to provide all of those non-dictionary passwords, such as)2.999
- XF F4(12345678)2.998 E F0(or)72 656.4 Q F4(qwerty)2.5 E F0(.)A/F5 7
- X/Times-Roman@0 SF(2)112.55 652.3 Q F0 .739
- X(If you wish to add a dictionary of your own, just copy it into the)72 672 R F1
- X(DictSrc)3.238 E F0 .738(directory and then delete the)3.238 F .926
- X(contents of the)72 684 R F1(Dicts)3.426 E F0(directory)3.426 E 5.926(.Y)-.65 G
- X.926(our new dictionary will be mer)219.68 684 R .926(ged in on the next run.)
- X-.18 F .927(Do not worry)5.926 F .161
- X(about replication of data, as the preprocessor driver script sorts and uniq')
- X72 696 R 2.661(st)-.55 G .161(he data before putting it into the)374.714 696 R
- X.32 LW 144 704 72 704 DL/F6 5.6/Times-Roman@0 SF(2)82 712.52 Q F3 1.319
- X(Extra dictionaries \(those used in Dan Klein')2 3.28 N 3.319(sp)-.44 G(aper)
- X245.569 715.8 Q 3.319(,b)-.32 G 1.32
- X(elow\) can be obtained via anonymous FTP from)268.336 715.8 R/F7 8
- X/Times-Italic@0 SF(uunet.uu.net)72 725.8 Q F3(\(192.48.96.2\) as)2 E F7
- X(~/pub/dictionaries.tar)2 E(.Z)-.888 E EP
- X%%Page: 3 3
- X%%BeginPageSetup
- XBP
- X%%EndPageSetup
- X/F0 10/Times-Roman@0 SF(-3-)282.17 48 Q/F1 10/Courier@0 SF(Dicts)72 84 Q F0
- X(directory)2.5 E(.)-.65 E(The formats of the output dictionaries are:)72 99.6 Q
- X14.73(a\) Unique)72 115.2 R 1.144
- X(words that have been forced lowercase, forwards.)3.644 F 1.145
- X(These are the most common passwords)6.145 F
- X(you will \214nd, thus they are tried \214rst.)97 127.2 Q 14.17(b\) Dictionary)
- X72 142.8 R .473(words which have been arti\214cially pluralised, because not m\
- Xany dictionaries contain plu-)2.974 F(rals.)97 154.8 Q 14.73(c\) Dictionary)72
- X170.4 R(words which were supplied in mixed-case \(eg:)2.5 E/F2 10
- X/Times-Italic@0 SF(Capitalised)2.5 E F0(\).)A 14.17(d\) Dictionary)72 186 R
- X(words forced lowercase and backwards.)2.5 E 14.73(e\) Dictionary)72 201.6 R
- X.401(words, forced lowercase, with a leading or trailing 0 or 1 \(this may be \
- Xextended by hack-)2.9 F(ing Sources/crack-pp.c\).)97 213.6 Q 15.84
- X(f\) Dictionary)72 229.2 R(words, forced uppercase, forwards.)2.5 E 14.17
- X(g\) Dictionary)72 244.8 R(words, forced uppercase, backwards.)2.5 E 14.17
- X(h\) Dictionary)72 260.4 R
- X(words which were supplied in mixed-case, backwards \(eg:)2.5 E F2(desilatipaC)
- X2.5 E F0(\).)A .065
- X(This choice of attack is entirely empirical, my own, and made up on the spot.)
- X72 288 R .064(It has also been horrendously)5.064 F .209(successful, and becau\
- Xse Crack uses each of these dictionaries in turn, it tends to get passwords fa\
- Xster than a)72 300 R(program like the)72 312 Q/F3 10/Times-Bold@0 SF(COPS)2.5 E
- XF0(password cracker which tries words every-which-way for each user)2.5 E(.)
- X-.55 E/F4 7/Times-Roman@0 SF(3)441.62 307.9 Q F0 2.115
- X(Optimisation Note: Crack has an)97 327.6 R F3(compile-time)4.615 E F0 2.115
- X(option, called)4.615 F F1(CRACK_SHORT_PASSWDS)4.615 E F0(,)A .095(which, if)97
- X339.6 R F3(not)2.595 E F0 .094(de\214ned, makes the dictionary preprocessor)
- X2.595 F F2(thr)2.594 E .094(ow away)-.37 F F0 .094(words which are less than)
- X2.594 F 2.644(5c)97 351.6 S .144(haracters long.)109.084 351.6 R .144
- X(The reasoning for this is that many sites, with a semi-sensible)5.144 F F1
- X(passwd)2.644 E F0(pro-)2.644 E
- X(gram, will not have passwords shorter than 5 characters long.)97 363.6 Q .561
- X(It is up to you whether you bother testing these short passwords, but I would\
- X recommend that)97 379.2 R 1.983(you do so at least once, to be safe.)97 391.2
- XR 1.983(\(Setting the option also leads to having smaller pre-)6.983 F
- X(processed dictionaries.)97 403.2 Q(The option, however)5 E 2.5(,i)-.4 G 2.5
- X(sd)283.51 403.2 S(e\214ned by default\))294.9 403.2 Q F3 2.5(5. Installation)
- X72 427.2 R F0 .212
- X(Crack is one of those most unusual of beasties, a self-installing program.)72
- X442.8 R .212(Once the necessary con\214guration)5.212 F(options have been set,\
- X the executables are created via 'make' by running the main shellscript.)72
- X454.8 Q .122(Some people have complained about this apparent weirdness, but it\
- X has grown up with Crack ever since the)72 470.4 R .714(earliest network versi\
- Xon, when I could not be bothered to log into several dif)72 482.4 R .714
- X(ferent machines with several)-.18 F(dif)72 494.4 Q
- X(ferent architectures, just in order to build the binaries.)-.18 E 1.587
- X(Crack needs to know where it has been installed.)72 510 R 1.588
- X(Please edit the)6.588 F F1(CRACK_HOME)4.088 E F0 1.588(variable in the Crack)
- X4.088 F .918(shellscript to the correct value.)72 522 R .917
- X(This variable should be set to an absolute path name \(relative to)5.917 F F2
- X(~user)3.417 E F0(is)3.417 E .334
- X(OK\) through which the directory containing Crack may be accessed on)72 534 R
- XF3(all)2.835 E F0 .335(the machines that Crack will be)2.835 F(run on.)72 546 Q
- X1.133(The other bit of installation you will have to do is decide whether you \
- Xwill want to use the)72 561.6 R F1(-network)3.633 E F0 .358
- X(option. If you do, edit the \214le)72 573.6 R F1(Sources/conf.h)2.859 E F0
- X.359(and de\214ne the)2.859 F F1(CRACK_NETWORK)2.859 E F0 2.859(symbol. This)
- X2.859 F(forces)2.859 E .323(Crack to create all of its output \214les with an \
- Xembedded hostname \(obtained by the)72 585.6 R F1(gethostname\(\))2.822 E F0
- X(rou-)2.822 E .111
- X(tine\) so that you can keep track of output from all over the network.)72
- X597.6 R .112(If you have no)5.112 F F1(gethostname\(\))2.612 E F0(but)2.612 E
- X6.528(have a)72 609.6 R F1(uname\(\))9.028 E F0 6.528
- X(system call, you can use that instead, by de\214ning)9.028 F F1(CRACK_UNAME)
- X9.027 E F0(in)9.027 E F1(Sources/conf.h)72 621.6 Q F0(.)A -1(Yo)72 637.2 S
- X3.776(uw)1 G 1.276(ill then have to generate a)99.216 637.2 R F1
- X(Scripts/network.conf)3.776 E F0 1.276
- X(\214le. This contains a list of hostnames to)3.776 F F1(rsh)72 649.2 Q F0 .337
- X(to, what their binary type is \(useful when running a network Crack on severa\
- Xl dif)2.837 F .336(ferent architectures\),)-.18 F 2.563(ag)72 661.2 S .063
- X(uesstimate of their relative power \(take your slowest machine as unary)84.003
- X661.2 R 2.564(,a)-.65 G .064(nd measure all others relative to)375.65 661.2 R
- X.214(it\), and a list of per)72 673.2 R .214(-host default \215ags.)-.2 F .214
- X(There is an example of such a \214le provided in the Scripts directory -)5.214
- XF(take a look at it.)72 685.2 Q .32 LW 144 698.2 72 698.2 DL/F5 5.6
- X/Times-Roman@0 SF(3)82 706.72 Q/F6 8/Times-Roman@0 SF .151(For more informatio\
- Xn, see "Foiling the Cracker: A Survey of, and Improvements to, Password Securi\
- Xty" by)2 3.28 N(Daniel Klein, available from major FTP sites.)72 720 Q EP
- X%%Page: 4 4
- X%%BeginPageSetup
- XBP
- X%%EndPageSetup
- X/F0 10/Times-Roman@0 SF(-4-)282.17 48 Q 3.106(Ia)72 84 S .606
- X(lso recommend that you play around with the)82.876 84 R/F1 10/Courier@0 SF
- X(#define)3.106 E F0 3.106(si)C 3.106(nt)323.37 84 S .606(he \214le)334.256 84 R
- XF1(Sources/conf.h)3.106 E F0 5.606(.E)C .606(ach switch)460.904 84 R .661
- X(has a small note explaining its meaning.)72 96 R .66
- X(Where I've been in doubt about the portability of certain library)5.661 F .324
- X(functions, usually I've re-written it, so it shouldn')72 108 R 2.824(tb)-.18 G
- X2.824(em)283.842 108 S .325(uch of a problem.)298.886 108 R .325
- X(Let me know of your problems.)5.325 F F1(8-\).)72 120 Q/F2 10/Times-Bold@0 SF
- X2.5(6. Crack)72 144 R(Usage)2.5 E F1(Crack)148.285 165.6 Q F0([)2.5 E/F3 10
- X/Times-Italic@0 SF(options)A F0 2.5(][)C F3(bindir)222.725 165.6 Q F0(])A F1
- X(/etc/passwd)2.5 E F0([...other passwd \214les])2.5 E F1(Crack -network)148.285
- X189.6 Q F0([)2.5 E F3(options)A F0(])A F1(/etc/passwd)2.5 E F0
- X([...other passwd \214les])2.5 E(Where)72 211.2 Q F2(bindir)3.422 E F0 .921
- X(is the optional name of the directory where you want the binaries installed.)
- X3.422 F .921(This is useful)5.921 F .944
- X(where you want to be able to run versions of Crack on several dif)72 223.2 R
- X.944(ferent architectures. If)-.18 F F2(bindir)3.444 E F0 .944(does not)3.444 F
- X(exist, a warning will be issued, and the directory)72 235.2 Q 2.5(,c)-.65 G
- X(reated.)274.65 235.2 Q(Note:)97 250.8 Q F2(bindir)2.5 E F0
- X(defaults to the name)2.5 E F1(generic)2.5 E F0(if not supplied.)2.5 E F2 -1.11
- X(Ye)97 266.4 S .859(llow Pages \(NIS\) Users:)1.11 F F0 3.359(Ih)3.359 G .859
- X(ave had some queries about how to get Crack running from a)225.435 266.4 R
- X.736(YP password \214le.)97 278.4 R .737
- X(There are several methods, but by far the simplest is to generate a passwd)
- X5.737 F(format \214le by running:-)97 290.4 Q F1(ypcat passwd > passwd.yp)216
- X308.4 Q F0(and then running Crack on this \214le.)97 326.4 Q F2 2.5(7. Options)
- X72 350.4 R(-network)72 366 Q F0 .775
- X(Throws Crack into network mode, in which it reads the)97 378 R F1
- X(Scripts/network.conf)3.274 E F0 .774(\214le, splits its)3.274 F .251
- X(input into chunks which are sized according to the power of the tar)97 390 R
- X.252(get machine, and calls)-.18 F F1(rsh)2.752 E F0 .252(to run)2.752 F 1.217
- X(Crack on that machine.)97 402 R 1.216(Options for Crack running on the tar)
- X6.217 F 1.216(get machine may be supplied on the)-.18 F .998(command line \(eg\
- X: verbose or recover mode\), or in the network.conf \214le if they pertain to \
- Xspeci\214c)97 414 R(hosts \(eg:)97 426 Q F1(nice\(\))2.5 E F0(values\).)2.5 E
- XF2(-v)72 441.6 Q F0 .851
- X(Sets verbose mode, whereby Crack will print every guess it is trying on a per)
- X97 441.6 R .85(-user basis.)-.2 F .85(This is a)5.85 F 2.852
- X(very quick way of \215ooding your \214lestore.)97 453.6 R 2.852
- X(If you unde\214ne the)7.852 F F1(CRACK_VERBOSE)5.353 E F0 2.853(symbol in)
- X5.353 F F1(Sources/conf.h)97 465.6 Q F0 2.5(,v)C
- X(erbose mode will be permanently disabled.)191 465.6 Q F2(-nvalue)72 481.2 Q F0
- X.547(Sets the process to be)97 493.2 R F1(nice\(\))3.047 E F0 .547(ed to)B F3
- X(value)3.046 E F0 3.046(,s)C 3.046(ot)278.744 493.2 S .546(hat the switch)
- X289.57 493.2 R F1(-n19)3.046 E F0 .546(sets the Crack process to run at)3.046 F
- X(the lowest priority)97 505.2 Q(.)-.65 E F2(-rpoint\214le)72 520.8 Q F0 .582
- X(This is only for use when running in)97 532.8 R F3 -.37(re)3.082 G(cover).37 E
- XF0 3.082(mode. When)3.082 F 3.082(ar)3.082 G .583
- X(unning Crack starts pass 2, it periodi-)350.794 532.8 R .997
- X(cally saves its state in a \214le named)97 544.8 R F1(point.<pid>)3.497 E F0
- X(or)3.497 E F1(point.<hostname>.<pid>)3.497 E F0(depending)3.497 E .89
- X(on your naming convention \(see "Installation", above\).)97 556.8 R .891
- X(This \214le can be used to recover where you)5.891 F .192
- X(were should a host crash.)97 568.8 R .191(Simply invoke Crack in)5.191 F F2
- X(exactly)2.691 E F0 .191(the same manner as the last time, with the)2.691 F
- X1.212(addition of the)97 580.8 R F1(-rpoint.file.name)3.712 E F0 3.712
- X(switch. Crack)3.712 F 1.212(will startup and read the \214le, and jump to)
- X3.712 F .013(slightly before where it left of)97 592.8 R 2.513(f. If)-.18 F
- X.013(you are cracking a very lar)2.513 F .012
- X(ge password \214le, this can save oodles of)-.18 F(time after a crash.)97
- X604.8 Q .35(If you are running a)97 620.4 R F3(network)2.85 E F0 .35
- X(Crack, then the jobs will again be spawned onto all the machines)2.85 F .181
- X(of the original Crack.)97 632.4 R .18
- X(The program will then check that the host it is running on is the same as)
- X5.181 F .785(is mentioned in the point\214le.)97 644.4 R .786
- X(If it is not, it will silently die.)5.786 F .786
- X(Thus, assuming that you supply)5.786 F 2.007
- X(the same input data and do not change your)97 656.4 R F1(network.conf)4.506 E
- XF0 2.006(\214le, Crack should pick up)4.506 F F2(exactly)97 668.4 Q F0
- X(where it left of)2.5 E 2.5(f. This)-.18 F(is a bit inelegant, but it')2.5 E
- X2.5(sb)-.55 G(etter than nothing at the moment.)325.41 668.4 Q F2 2.5
- X(8. Multipr)72 692.4 R(ocessing and parallelism)-.18 E F0 .788(The method of e\
- Xrror recovery outlined above causes headaches for users who want to do multipr\
- Xocessing)72 708 R .499(on parallel architectures.)72 720 R .499
- X(Crack is in no way parallel, and because of the way it')5.499 F 2.998(ss)-.55
- XG .498(tructured, readind stdin)409.964 720 R EP
- X%%Page: 5 5
- X%%BeginPageSetup
- XBP
- X%%EndPageSetup
- X/F0 10/Times-Roman@0 SF(-5-)282.17 48 Q(from shellscript frontends, it is a pa\
- Xin to divide the work amongst several processes via)72 84 Q/F1 10/Courier@0 SF
- X(fork\(\))2.5 E F0(ing.)A .423
- X(The hack solution to get several copies of Crack running on one machine with)
- X72 99.6 R/F2 10/Times-Italic@0 SF(n)2.924 E F0 .424(processors at the moment)
- X2.924 F 1.546(is to run with the)72 111.6 R F1(CRACK_NETWORK)4.046 E F0 1.545
- X(option enabled, and insert)4.045 F F2(n)4.045 E F0 1.545
- X(copies of the entry for your parallel)4.045 F .697(machine into the)72 123.6 R
- XF1(Scripts/network.conf)3.197 E F0 .697(\214le. If you use the)3.197 F F1(-r)
- X3.197 E F0 .697(option in these circumstances how-)3.197 F(ever)72 135.6 Q
- X3.172(,y)-.4 G .672(ou will get)99.482 135.6 R F2(n)3.172 E F0 .671(copies of \
- Xthe recovered process running, only one of them will have the correct input)
- X3.172 F 3(data. I'm)72 147.6 R .5(working on this.)3 F .5(My current solution \
- Xis to save the current username in the checkpoint \214le, and)5.5 F .265
- X(test it on startup, but doing this)72 159.6 R F2(may)2.765 E F0 .264
- X(break your recovery if you supply dif)2.765 F .264
- X(ferent input data \(so that the data)-.18 F 1.325(is sorted even slightly dif)
- X72 171.6 R 3.826(ferently\). Hohum. If)-.18 F 1.326(you want to use this)3.826
- XF F2 1.326(verify username)3.826 F F0(facility)3.826 E 3.826(,u)-.65 G(se)
- X468.238 171.6 Q F1(-R)3.826 E F0(in)3.826 E(place of)72 183.6 Q F1(-r)2.5 E F0
- X(.)A(As for not using the)72 199.2 Q F1(network.conf)2.5 E F0
- X(\214le to provide multiprocessing, I'm working on it.)2.5 E/F3 10/Times-Bold@0
- XSF 2.5(9. Notes)72 223.2 R(on fast crypt\(\) implementations)2.5 E F0 .58
- X(The stdlib version of the)72 238.8 R F1(crypt\(\))3.08 E F0 .58
- X(subroutine is incredibly slow)3.08 F 5.58(.I)-.65 G 3.08(ti)348.58 238.8 S
- X3.08(sa)357.22 238.8 S F2(massive)A F0 .58(bottleneck to the execu-)3.08 F .838
- X(tion of Crack and on typical platforms that you get at universities, it is ra\
- Xre to \214nd a machine which will)72 250.8 R .343
- X(achieve more than 50 standard)72 262.8 R F1(crypt\(\))2.842 E F0 2.842(sp)C
- X.342(er second.)252.134 262.8 R .342
- X(On low-end diskless workstations, you may expect)5.342 F 3.026(2o)72 274.8 S
- X3.026(r3p)85.026 274.8 S .526(er second.)104.408 274.8 R .527
- X(It was this slowness of the)5.526 F F1(crypt\(\))3.027 E F0 .527
- X(algorithm which originally supplied much of the)3.027 F(security)72 286.8 Q/F4
- X8/Times-Roman@0 SF(UNIX)2.5 E F0(needed.)2.5 E/F5 7/Times-Roman@0 SF(4)159.472
- X282.7 Q F0(However)72 302.4 Q 2.557(,t)-.4 G .057(here are now)116.087 302.4 R
- XF1(many)2.557 E F0 .057(implementations of faster versions of)2.557 F F1
- X(crypt\(\))2.558 E F0 .058(to be found on the network.)2.558 F
- X(The one supplied with Crack v3.2 and upwards is called)72 314.4 Q F1
- X(fcrypt\(\))2.5 E F0(.)A F1(fcrypt\(\))72 330 Q F0 .898
- X(was originally written in May 1986 by Robert Baldwin at MIT)3.398 F 3.398(,a)
- X-.74 G .897(nd is a good version of the)392.516 330 R F1(crypt\(\))72 342 Q F0
- X2.837(subroutine. I)2.837 F .338
- X(received a copy from Icarus Sparry at Bath University)2.837 F 2.838(,w)-.65 G
- X.338(ho had made a couple of)404.28 342 R
- X(portability enhancements to the code.)72 354 Q 3.167(Ir)72 369.6 S .667(ewrot\
- Xe most of the tables and the KeySchedule generating algorithm in the original)
- X81.827 369.6 R F2(fdes-init.c)3.167 E F0 .666(to knock)3.166 F .406(40% of)72
- X381.6 R 2.906(ft)-.18 G .406(he execution overhead of)110.402 381.6 R F1
- X(fcrypt\(\))2.906 E F0 .407(in the form that it was shipped to me.)2.906 F
- X2.907(Ii)5.407 G .407(nlined a bunch of)433.069 381.6 R(stuf)72 393.6 Q 1.11(f\
- X, put it into a single \214le, got some advice from Matt Bishop and Bob Baldwi\
- Xn [both of whom I am)-.18 F .002(greatly indebted to] about what to do to the)
- X72 405.6 R F1(xform\(\))2.502 E F0 .002
- X(routine and to the fcrypt function itself, and tidied up)2.502 F 3.185
- X(some algorithms.)72 417.6 R 3.185(I've also added more lookup tables and redu\
- Xced several formula for faster use.)8.185 F F1(fcrypt\(\))72 429.6 Q F0
- X(is now barely recognisable as being based on its former incarnation.)2.5 E
- X.562(On a DecStation 5000/200, it is also ~13 times faster than the standard c\
- Xrypt \(your mileage may vary with)72 445.2 R .542
- X(other architectures and compilers\).)72 457.2 R .542(This speed puts)5.542 F
- XF1(fcrypt\(\))3.041 E F0 .541(into the "moderately fast" league of crypt)3.041
- XF 2.53(implementations. By)72 469.2 R(using)2.53 E F1(fcrypt\(\))2.53 E F0 .031
- X(with Crack, I extracted 135 passwords from my standard 1087 user)2.53 F .114
- X(password \214le in a little over 1 hour using 3 networked machines.)72 481.2 R
- X.114(This is from a moderately good password)5.114 F(\214le.)72 493.2 Q
- X(Why am I saying this sort of thing ? Am I scaremongering ? In a word, yes.)72
- X508.8 Q .087(If a fast version of)72 524.4 R F1(crypt\(\))2.587 E F0 .088
- X(is wired into a program like Crack it can break a poorly passworded site open)
- X2.587 F .249(in minutes.)72 536.4 R .249(There are such programs available, eg\
- X: the "Killer Cracker" written by the anonymous "Doctor)5.249 F .326
- X(Dissector", with anonymous motives.)72 548.4 R .326
- X(It comes with a modi\214ed version of Baldwin')5.326 F 2.826(sf)-.55 G .326
- X(crypt, as a MS-DOS)421.922 548.4 R(executable with a GNU copyleft licence.)72
- X560.4 Q .239(The point that needs to be hammered home is that unless something\
- X is done, and done soon, about the gen-)72 576 R .81
- X(eral quality of passwords on)72 588 R F4(UNIX)3.31 E F0 .811
- X(systems, then in the near future our doors will be wide open to people)3.31 F
- X(who have programs like Crack and questionable motives.)72 600 Q F3 2.5
- X(10. Solutions)72 624 R(and Conclusions)2.5 E F0
- X(What can be done about this form of attack ?)72 639.6 Q -1(Yo)72 655.2 S 2.754
- X(um)1 G .253(ust get a drop-in replacement for the)98.754 655.2 R F1(passwd)
- X2.753 E F0(and)2.753 E F1(yppasswd)2.753 E F0 .253
- X(commands; one which will stop peo-)2.753 F .79
- X(ple from choosing bad passwords in the \214rst place.)72 667.2 R .791
- X(There are several programs to do this; Matt Bishop')5.791 F(s)-.55 E F1
- X(passwd+)72 679.2 Q F0 .315(and Clyde Hoover)2.815 F -.55('s).37 G F1(npasswd)
- X3.365 E F0 .314(program are good examples which are freely available.)2.815 F
- X(Consult)5.314 E(an)72 691.2 Q F3(Ar)2.5 E(chie)-.18 E F0
- X(database for more details on where you can get them from.)2.5 E .32 LW 144
- X708.2 72 708.2 DL/F6 5.6/Times-Roman@0 SF(4)82 716.72 Q F4 .216
- X(See: "Password Security)2 3.28 N 2.216(,AC)-.52 G .215
- X(ase History" by Bob Morris & Ken Thomson, in the)182.624 720 R/F7 6.4
- X/Times-Roman@0 SF(UNIX)2.215 E F4 .215(Programmer Docs.)2.215 F EP
- X%%Page: 6 6
- X%%BeginPageSetup
- XBP
- X%%EndPageSetup
- X/F0 10/Times-Roman@0 SF(-6-)282.17 48 Q 3.046(Al)72 84 S .546(ittle common-sen\
- Xse is all that is required to vet passwords: I enclose a module in the Sources\
- X directory)85.046 84 R/F1 10/Times-Italic@0 SF(goodpass.c)72 96 Q F0 1.017
- X(which I use in a modi\214ed version of the)3.517 F/F2 10/Courier@0 SF
- X(yppasswd)3.517 E F0 1.016(in order to provide some security)3.517 F 6.016(.I)
- X-.65 G 3.516(ti)491.034 96 S(s)500.11 96 Q
- X(quite heavily customised for use in the UK, but it should be easily portable.)
- X72 108 Q(The routine is invoked:)5 E F2
- X(char *retval = GoodPass\(char *input\);)177 138 Q F0(where)72 159.6 Q F2
- X(input)2.848 E F0 .348(is the password under test, and)2.848 F F2(retval)2.848
- XE F0 .349(will be set either to NULL \(if the password is OK\))2.848 F .436
- X(or to a diagnostic string which says what is wrong with the password.)72 171.6
- XR .435(It is far less complex than a system)5.435 F .442(such as)72 183.6 R F1
- X(passwd+)2.942 E F0 2.942(,b)C .442(ut still ef)151.186 183.6 R .443
- X(fective enough to make a password \214le withstand)-.18 F F2(Crack)2.943 E F0
- X5.443(.I)C 2.943(tw)432.238 183.6 S .443(ould be nice if)445.181 183.6 R .959
- X(an or)72 195.6 R .959(ganisation \(such as)-.18 F/F3 10/Times-Bold@0 SF(CER)
- X3.459 E(T)-.35 E F0 3.459(?\) could)B .958(be persuaded to supply skeletons of)
- X3.459 F F1(sensible)3.458 E F0 .958(passwd commands)3.458 F .445
- X(for the public good, as well as an archive of security related utilities)72
- X207.6 R/F4 7/Times-Roman@0 SF(5)348.68 203.5 Q F0 .446(on top of the excellent)
- X355.125 207.6 R F2(COPS)2.946 E F0 5.446(.H)C(ow-)488.45 207.6 Q(ever)72 219.6
- XQ 3.216(,f)-.4 G(or)97.856 219.6 Q/F5 8/Times-Roman@0 SF(UNIX)3.216 E F0 .716(\
- Xsecurity to improve on a global scale, we will also require pressure on the ve\
- Xndors, so that)3.216 F(programs are written correctly from the beginning.)72
- X231.6 Q .32 LW 144 708.2 72 708.2 DL/F6 5.6/Times-Roman@0 SF(5)82 716.72 Q/F7 8
- X/Courier@0 SF(COPS)2 3.28 M F5(is available for anonymous FTP from)2 E/F8 8
- X/Times-Italic@0 SF(cert.sei.cmu.edu)2 E F5(\(128.237.253.5\) in)2 E F8(~/cops)2
- XE EP
- X%%Trailer
- Xend
- X%%EOF
- END_OF_FILE
- if test 37992 -ne `wc -c <'Docs/README.ps'`; then
- echo shar: \"'Docs/README.ps'\" unpacked with wrong size!
- fi
- # end of 'Docs/README.ps'
- fi
- echo shar: End of archive 4 \(of 4\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 4 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-