1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
#!/bin/sh
###
# This program was written by and is copyright Alec Muffett 1991,
# 1992, 1993, 1994, 1995, and 1996, and is provided as part of the
# Crack v5.0 Password Cracking package.
#
# The copyright holder disclaims all responsibility or liability with
# respect to its usage or its effect upon hardware or computer
# systems, and maintains copyright as set out in the "LICENCE"
# document which accompanies distributions of Crack v5.0 and upwards.
###
#
# Usage: Crack7 ciphertext ...
#
##################################################################
# The bottom three runs of "brute" (length=6..8) are comented out
# because of estimated time constraints. Feel free to uncomment them
# (or comment out the others) if you feel you know what you are doing.
###
# Make the brute binary; Makefile assumes existence of
# ../src/libdes/libdes.a so it may need reconfiguring if you are not
# using plain-old Unix crypt().
###
make || exit 1
###
# set up a few shorthand charsets
###
lower=a-z
upper=A-Z
digit=0-9
setld=$lower$digit
setud=$upper$digit
setuld=$upper$lower$digit
# these are the charsets we will use for certain characters of the
# plaintext - tweak these if you can be more precise, for instance:
# restrict the values of s1..s8 to match anything that you know for
# certain about the plaintext.
# eg: the first character is on the left side of the keyboard, so we
# can set s1="qwerasdfzxcv" - or similar. This sort of pruning effect
# causes a massive reduction in time required to brute force
# passwords; as an example, if you know these things:
# - the first character is alphabetic and on the keyboard LHS
# - the second character is a digit
# - the third through sixth characters are in the range "a-z"
# - the seventh (final) character is "k"
# ...you can set s1..s7 appropriately and comment out all the other
# runs, or just invoke "brute" manually:
#
# brute CIPHERTEXT qwerasdfzxcv 0-9 a-z a-z a-z a-z k
#
s1=$setld
s2=$setld
s3=$setld
s4=$setld
s5=$setld
s6=$setld
s7=$setld
s8=$setld
###
# go
###
for ciphertext in $*
do
./brute $ciphertext $s1 && break
./brute $ciphertext $s1 $s2 && break
./brute $ciphertext $s1 $s2 $s3 && break
./brute $ciphertext $s1 $s2 $s3 $s4 && break
./brute $ciphertext $s1 $s2 $s3 $s4 $s5 && break
# ./brute $ciphertext $s1 $s2 $s3 $s4 $s5 $s6 && break
# ./brute $ciphertext $s1 $s2 $s3 $s4 $s5 $s6 $s7 && break
# ./brute $ciphertext $s1 $s2 $s3 $s4 $s5 $s6 $s7 $s8 && break
done
exit 0
|