|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: C T
Length: 6738 (0x1a52) Types: TextFile Names: »Crack«
└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen └─⟦this⟧ »./crack/Crack«
#!/bin/sh ### # This program is copyright Alec Muffett 1991, and is provided as part of # the Crack v4.1 Password Cracking package. The author disclaims all # responsibility or liability with respect to it's usage or its effect # upon hardware or computer systems, and maintains copyright as set out in # the "LICENCE" document which accompanies distributions of Crack v4.0 and # upwards. So there... ### ### # CRACK_HOME: You must put DOUBLE QUOTES around this and have /bin/csh if # you work relative to ~username - this is the Crack installation directory. # (currently developing on "dougal") ### CRACK_HOME="~aem/dougal/crack41f" ### # CRACK_OUT: This is the directory into which all the password guesser # output files are to be stored. This affects only the "out*" files, and # not "D*" or "P*", due to restraints on the support scripts. ### CRACK_OUT="$CRACK_HOME" ### # Umask for security's sake - stops files being world readable (if you # don't have it in your .login) ### umask 077 ### # DEFAULT_BIN : For non-network cracks, you can leave this as 'generic'. # Setting this to `arch` is non-portable. ### DEFAULT_BIN="generic" ### # List of standard dictionaries that you should have to provide words; # ### STDDICT="/usr/dict/words" ### # Compress: name of a compression prog (compress & pack supported) to be # applied to the bigdict to save filespace ### compress="/usr/ucb/compress" ### ############### FROM HERE ON IN IT'S ALL MY FAULT ############### ### version="4.1f RELEASE" # version number pwl="" # user specified domail="" # user specified fgnd="" # user specified remote="" # program specified nice="" # user specified rcvr="" # user specified inputfile="/tmp/pw.$$" # program specified, also in pwc.c verbose="" # user specified cf_file="Scripts/network.conf" # program specified bigdict="Dicts/bigdict" # program specified lockdict="Dicts/.lockfile" # program specified CRACK_HOME_UNRES="$CRACK_HOME" if [ -f "/bin/csh" ] # -x bombs on Ultrix then CRACK_OUT=` /bin/csh -fc "echo $CRACK_OUT" ` CRACK_HOME=` /bin/csh -fc "echo $CRACK_HOME" ` fi if [ ! -d "$CRACK_OUT" ] then echo "Warning: CRACK_OUT directory reset to directory '.'" CRACK_OUT="." fi export CRACK_HOME export CRACK_OUT export DEFAULT_BIN export CRACK_HOME_UNRES ### # Check existance of a home directory ### if [ "$CRACK_HOME" != "" -a -d "$CRACK_HOME" ] then cd $CRACK_HOME || exit 1 else echo "Fatal error: the directory $CRACK_HOME does not exist." echo "" echo "Please set the value of CRACK_HOME in the 'Crack' script to the name of echo "the installation directory." echo "" echo "The current working directory is" `pwd`" exit 1 fi ### # Announce ourselves. ### echo "Crack $version, The Password Cracker (c) Alec D.E. Muffett, 1992" echo "Invoked as: $0 $*" if [ $# = 0 ] then echo "Usage: $0 [options] [bindir] passwdfile [...]" echo "Or: $0 -network [options] passwdfile [...]" echo "Options:-" echo " -v - to produce verbose output" echo " -nnicevalue - to run niced to 'nicevalue'" echo " -rpointfile - to recover a crashed-out job" echo " -Rpointfile - to recover (with verify) a crashed-out job" echo " -f - to run in foreground (output to stdout)" echo " -m - to mail the user a warning message if cracked" exit 1 fi ### # Make the dictionaries. God this is SOOOOO much simpler... ### if [ ! -f $lockdict ] then echo "Making dictionary $bigdict - This may take some time..." ( for dictfile in $STDDICT DictSrc/* do case $dictfile in *.Z) zcat $dictfile ;; *.z) pcat $dictfile ;; *) cat $dictfile ;; esac done ) | grep -v '^#' | sort | uniq > $bigdict # I do not do "tr A-Z a-z" here because of words like LaTeX and # BiCapitalisation, which are potential passwords, but the structure of # which would be irrecoverably destroyed by lowercaseing. echo touch $lockdict # for future refs. touch $lockdict if [ "x$compress" != "x" -a -f "$compress" ] then echo $compress $bigdict # if this fails, tweak the $compress definition above... $compress $bigdict || exit 1 fi else echo Dictionary Dicts/* intact fi ### # Check your invocation... ### if [ "x$1" = "x-network" ] then shift Scripts/Crack.network $* exit 0 fi while : do case $1 in -network) echo "Error: -network (if specified) must be first argument" exit 1 ;; -X*) remote=$1 shift ;; -m*) domail=$1 shift ;; -l*) pwl=$1 shift ;; -f*) fgnd=$1 shift ;; -n*) nice=$1 shift ;; -r*) rcvr=$1 shift ;; -v*) verbose=$1 shift ;; -*) echo "Error: unknown argument $1" shift ;; *) break ;; esac done ### # Test first non-switch argument for existance, hence where to put binaries ### if [ -f "$1" ] then CRACK_ARCH="$CRACK_HOME/$DEFAULT_BIN" else CRACK_ARCH="$CRACK_HOME/$1" shift fi export CRACK_ARCH echo "Binary directory: $CRACK_ARCH" ### # Make the password cracker ### Scripts/do_pwc $CRACK_ARCH || exit 1 ### # Process input to the program ### echo "Sorting data for Crack." if [ "x$remote" != "x" ] then cat > $inputfile else out_init=$CRACK_OUT/out.$$ Scripts/do_join $out_init $* > $inputfile || exit 1 if [ "x$domail" != "x" ] then MISCREANTS=`awk '/Guessed/{print $6}' < $out_init` echo Sending Warning Mail to $MISCREANTS Scripts/nastygram $MISCREANTS fi if [ "x$fgnd" != "x" ] then cat $out_init || exit 1 rm -f $out_init fi fi ### # Check the runtime scratch file directory for pwc ### if [ ! -d Runtime ] then echo "Creating Runtime Directory." mkdir Runtime || exit 1 fi ### # Kick it off into the background ? ### # This is the message which has drawn the most complaints... However, I # have no way of knowing the name in advance, and I can't have crack-pwc # print it on stdout due to hanging file descriptors which bollox a # network crack. Hence I HAVE to be vague... ### flags="$remote $fgnd $XXdomail $pwl $nice $rcvr $verbose -i $inputfile" echo "Flags:" $flags Dicts/* if [ "x$fgnd" != "x" ] then echo "Running program in foreground" $CRACK_ARCH/crack-pwc $flags Dicts/* < /dev/null 2>&1 else echo "Running program in background" # Apollos/Suns need first 7 descriptors closed to bg properly # from ksh - hence overkill - AEM nohup $CRACK_ARCH/crack-pwc $flags Dicts/* </dev/null >/dev/null \ 2>&1 3>&1 4>&1 5>&1 6>&1 7>&1 8>&1 9>&1 & echo "Output will be written to a file in directory $CRACK_OUT" echo "named 'out<something>'" fi sleep 1 test -f nohup.out && rm nohup.out ### # There are horrible timeraces involved in removing $tmpfile, so I dont. # Crack-pwc does. Still. Hohum. ### exit 0