Tuesday, December 11, 2012

Word Mangling a Word List to become a Password List

#!/bin/bash

# Written: December 2012
#
# This program was written to take as input a file that contains a wordlist and then transform it to make a password list.
# The password list is designed to be that of an 8 character password
# This is not meant to be used maliciously

function mangleWord {

    echo $1 | sed 's/a/@/' | sed 's/e/3/' | sed 's/i/1/' | sed 's/o/0/'
    echo $1 | sed 's/a/@/' | sed 's/e/3/' | sed 's/i/!/' | sed 's/o/0/'
    echo $1 | sed 's/a/@/' | sed 's/e/3/' | sed 's/i/1/'
    echo $1 | sed 's/a/@/' | sed 's/e/3/' | sed 's/i/!/'
    echo $1 | sed 's/a/@/' | sed 's/e/3/'
    echo $1 | sed 's/a/@/'
    echo $1 | sed 's/e/3/' | sed 's/i/1/' | sed 's/o/0/'
    echo $1 | sed 's/e/3/' | sed 's/i/!/' | sed 's/o/0/'
    echo $1 | sed 's/e/3/' | sed 's/i/1/'
    echo $1 | sed 's/e/3/' | sed 's/i/!/'
    echo $1 | sed 's/e/3/'
    echo $1 | sed 's/i/1/' | sed 's/o/0/'
    echo $1 | sed 's/i/!/' | sed 's/o/0/'
    echo $1 | sed 's/i/1/'
    echo $1 | sed 's/i/!/'
    echo $1 | sed 's/o/0/'
    echo $1 | sed 's/a/@/' | sed 's/i/1/' | sed 's/o/0/'
    echo $1 | sed 's/a/@/' | sed 's/i/!/' | sed 's/o/0/'
    echo $1 | sed 's/a/@/' | sed 's/i/1/'
    echo $1 | sed 's/a/@/' | sed 's/i/!/'
    echo $1 | sed 's/a/@/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/a/@/' | sed 's/e/3/' | sed 's/i/1/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/a/@/' | sed 's/e/3/' | sed 's/i/!/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/e/3/' | sed 's/i/1/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/e/3/' | sed 's/i/!/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/i/1/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/i/!/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/a/@/'
    echo $1 | sed 's/s/$/' | sed 's/e/3/'
    echo $1 | sed 's/s/$/' | sed 's/i/1/'
    echo $1 | sed 's/s/$/' | sed 's/1/!/'
    echo $1 | sed 's/s/$/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/'
    echo $1 | sed 's/s/$/' | sed 's/a/@/' | sed 's/i/1/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/a/@/' | sed 's/i/!/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/a/@/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/a/@/' | sed 's/e/3/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/e/3/' | sed 's/o/0/'
    echo $1 | sed 's/s/$/' | sed 's/e/3/' | sed 's/i/1/'
    echo $1 | sed 's/s/$/' | sed 's/e/3/' | sed 's/i/!/'

}





while read line
do

    strLength=`expr length $line`
#    echo $line length=`expr length $line`

    # Conditions to manipulate the string if it is less than 5 characters long
#    if [[ $strLength -lt 5 ]] ; then
#        echo "Too Short"
#    fi

    case $strLength in

        # Conditions to manipulate the string if it is 4 characters in length
        4)

            # echo $line length=`expr length $line`
            lineToLower=`echo $line | awk '{print tolower($0)}'`
            firstLetter=`echo ${lineToLower:0:1} | tr '[a-z]' '[A-Z]'`
            fourLetterWord=`echo $firstLetter${lineToLower:1:3}`

            for i in 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
            do
                echo ${fourLetterWord}$i
                mangleWord ${fourLetterWord}$i
#                mangleWord2 ${fourLetterWord}$i
            done
            ;;

        # Conditions to manipulate the string if it is 5 characters in length
        5)

            # echo $line length=`expr length $line`
            lineToLower=`echo $line | awk '{print tolower($0)}'`
            firstLetter=`echo ${lineToLower:0:1} | tr '[a-z]' '[A-Z]'`
            fiveLetterWord=`echo $firstLetter${lineToLower:1:4}`

            for i in 123 234 345 456 567 678 789 890
            do
                echo ${fiveLetterWord}$i
                mangleWord ${fiveLetterWord}$i
#                mangleWord2 ${fiveLetterWord}$i
            done
            ;;
       
        # Conditions to manipulate the string if it is 6 characters in length
        6)

            lineToLower=`echo $line | awk '{print tolower($0)}'`
            firstLetter=`echo ${lineToLower:0:1} | tr '[a-z]' '[A-Z]'`
            sixLetterWord=`echo $firstLetter${lineToLower:1:5}`

            for i in 12 23 34 45 56 67 78 89 90 01 02 03 04 05 06 07 08 09 10 11 00 22 33 44 55 66 77 88 99 13 14
            do
                echo ${sixLetterWord}$i
                mangleWord ${sixLetterWord}$i
#                mangleWord2 ${sixLetterWord}$i
            done
            ;;   
        7)

            # echo $line length=`expr length $line`
            lineToLower=`echo $line | awk '{print tolower($0)}'`
            firstLetter=`echo ${lineToLower:0:1} | tr '[a-z]' '[A-Z]'`
            sevenLetterWord=`echo $firstLetter${lineToLower:1:6}`

            for i in 0 1 2 3 4 5 6 7 8 9 "?" "!" "#" "$"
            do
                echo ${sevenLetterWord}$i
                mangleWord ${sevenLetterWord}$i
#                mangleWord2 ${sevenLetterWord}$i
            done
            ;;
        8)

            # echo $line length=`expr length $line`
            lineToLower=`echo $line | awk '{print tolower($0)}'`
            firstLetter=`echo ${lineToLower:0:1} | tr '[a-z]' '[A-Z]'`
            eightLetterWord=`echo $firstLetter${lineToLower:1:7}`

            echo ${eightLetterWord}
            mangleWord ${eightLetterWord}

            for i in 0 1 2 3 4 5 6 7 8 9 "?" "!" "#" "$"
            do
                echo ${eightLetterWord}$i
                mangleWord ${eightLetterWord}$i
#                mangleWord2 ${sevenLetterWord}$i
            done
            ;;


    esac
   
done < $1

No comments:

Post a Comment

Prepare, Bait, Hook, Execute and Control - Buffer Overflows

This post is the third of four that I am planning to write about social engineering specifically about phishing.  The form of phishing that...