-Brute #!/bin/bash # # brute # # $1 is intended to be a hash string provided externally # # output is plaintext:encryptedtext # if [ $# -lt 1 ]; then echo "USAGE: $0 HASHSTRING" exit 1 fi for x in {0..9} {A..Z} {a..z}; do for y in {0..9} {A..Z} {a..z}; do for z in {0..9} {A..Z} {a..z}; do # echo -n ${x}${y}: # ./genhash ${x}${y}${z} ./genhashfaster ${x}${y}${z} | ./match "${1}" "${x}${y}${z}" done done done exit 0 -genhash /* * genhash.c - C program to generate encrypted hashes of strings * * TO COMPILE: gcc -o genhash genhash.c -lcrypt */ #define _XOPEN_SOURCE 700 #include #include #include int main(int argc, char **argv) { char *hashstring, salt[3]; if (argc < 1) { printf("usage: %s plaintextstring\n", argv[0]); exit(1); } salt[0] = 'A'; salt[1] = 'B'; salt[2] = '\0'; /* do the crypt */ hashstring = crypt(argv[1], salt); printf("%s\n", hashstring); return(0); } -hashfile bob:ABzjLK.dcaCYM jim:ABE/KhqRiDV0Y sue:AB/bF7lOzp.xk jon:AB.nqvyUgOrkw ned:ABZOmUPwFxwLI tom:ABBxq0DIdK7pw ann:ABXL.GHaVNqqw lin:ABTyuJeFosESc -match #!/bin/bash # # match - compare two strings for equality # # This script uses command-line arguments: # $1 is the string to compare against # $2 is another string, not compared (but will be printed on match) # read str if [ $# -lt 1 ]; then echo "Usage: $0 COMPARESTRING LABELSTRING" exit 1 fi if [ "${1}" = "${str}" ]; then echo "${2}:${1}" fi exit 0 -process #!/bin/bash # # process - slice up colon-delimited text file into component parts # echo "==============================" for line in `cat hashfile`; do echo "I just read: $line" field1="`echo $line | cut -d':' -f1`" field2="`echo $line | cut -d':' -f2`" ./brute $field2 echo " Field 1 is: $field1" echo " Field 2 is: $field2" echo "==============================" done exit 0