Example usage for org.apache.commons.codec.digest UnixCrypt crypt

List of usage examples for org.apache.commons.codec.digest UnixCrypt crypt

Introduction

In this page you can find the example usage for org.apache.commons.codec.digest UnixCrypt crypt.

Prototype

public static String crypt(String original, String salt) 

Source Link

Usage

From source file:com.portmods.handlers.crackers.dictionary.Wordlist.java

@Override
public void run() {

    try {// w  ww . j a  v a 2s.  c o  m

        System.out.println("Loading Dictionary");

        InputStream fileStream = null;

        if (config.getUseCustomDictionary()) {

            try {

                fileStream = new FileInputStream(config.getCustomDictionary());

            } catch (Exception e) {

                JOptionPane.showMessageDialog(null, e, "Error with Dictonary File.", JOptionPane.ERROR_MESSAGE);
                System.exit(1);

            }

        } else {

            fileStream = Main.class.getResourceAsStream("/com/portmods/files/words.txt");

        }

        BufferedReader reader = new BufferedReader(new InputStreamReader(fileStream, "UTF-8"));

        /* declaring storage list */
        wordlist = new ArrayList<String>();
        String text = "";

        String line = reader.readLine();

        while (line != null) //wait for ever
        {
            text = line;
            line = reader.readLine();
            if (text.length() < 9 && text.length() > 2) {
                wordlist.add(text);
            }

        }

    } catch (UnsupportedEncodingException e) {

        System.out.println("Error Loading Dictionary");

    } catch (IOException e) {

        System.out.println("Error Loading Dictionary");

    }

    System.out.println("Finished Loading Dictionary");
    System.out.println("Rule 1 : Do nothing to word");

    for (String s : wordlist) {

        String hash = UnixCrypt.crypt(s, "aa");

        for (User u : pw.getUsers()) {

            if (u.getHash().equals(hash)) {

                System.out.println("Found password " + s + " for user " + u.getUserName());
                fp.addPassword(u.getUserName(), s);

            }

        }

    }

    System.out.println("Rule 2 : Toggle case of every character");
    /* Chaning word characters one at time lowerecase to Uppercase and vice Veser. */
    for (String s : wordlist) {
        for (int i = 0; i < s.length(); i++) {
            char C = s.charAt(i); //take character from the word
            StringBuilder sbuilder = new StringBuilder(s); //word we want to inject the character into
            if (Character.isUpperCase(C)) {
                sbuilder.setCharAt(i, Character.toLowerCase(C)); //changing the character to lowercase

            } else if (Character.isLowerCase(C)) {
                sbuilder.setCharAt(i, Character.toUpperCase(C)); // change to uppercase
            }

            String hash = UnixCrypt.crypt(sbuilder.toString(), "aa");

            for (User u : pw.getUsers()) {

                if (u.getHash().equals(hash)) {

                    System.out
                            .println("Found password " + sbuilder.toString() + " for user " + u.getUserName());
                    fp.addPassword(u.getUserName(), sbuilder.toString());

                }

            }

        }

    }

    System.out.println("Rule 3 : adding random numbers and leters into the word");
    /* generating number and adding to the words*/
    for (String s : wordlist) {
        for (int i = 0; i < 10; i++) {
            StringBuilder sb = new StringBuilder(s);
            sb.append(i); //add an integer to each word.

            String out = sb.toString();

            if (out.length() <= 8) {

                String hash = UnixCrypt.crypt(out, "aa");

                for (User u : pw.getUsers()) {

                    if (u.getHash().equals(hash)) {

                        System.out.println("Found password " + sb.toString() + " for user " + u.getUserName());
                        fp.addPassword(u.getUserName(), sb.toString());

                    }

                }

            }

        }

    }

    System.out.println("Rule 4: Toggle one charater at a time and replace a number");
    /* trying to toggle one charater at a time and replace a number*/
    for (String s : wordlist) {
        for (int j = 0; j < s.length(); j++) {
            for (int i = 0; i < 10; i++) {
                char C = s.charAt(j); //take character from the word
                StringBuilder sbuilder = new StringBuilder(s); //word we want to inject the character into
                if (Character.isAlphabetic(C)) {
                    sbuilder.deleteCharAt(j); //remove character
                    sbuilder.insert(j, i); // add digit

                    String hash = UnixCrypt.crypt(sbuilder.toString(), "aa");

                    for (User u : pw.getUsers()) {

                        if (u.getHash().equals(hash)) {

                            System.out.println(
                                    "Found password " + sbuilder.toString() + " for user " + u.getUserName());
                            fp.addPassword(u.getUserName(), sbuilder.toString());

                        }

                    }
                }

            }

            for (int x = 65; x < 123; x++) {
                char C1 = (char) x;

                char C = s.charAt(j); //take character from the word
                StringBuilder sbuilder = new StringBuilder(s); //word we want to inject the character into
                if (Character.isDigit(C)) {
                    sbuilder.setCharAt(j, C1);

                    String hash = UnixCrypt.crypt(sbuilder.toString(), "aa");

                    for (User u : pw.getUsers()) {

                        if (u.getHash().equals(hash)) {

                            System.out.println(
                                    "Found password " + sbuilder.toString() + " for user " + u.getUserName());
                            fp.addPassword(u.getUserName(), sbuilder.toString());

                        }

                    }

                }

            }

        }

    }

    System.out.println("Rule 5 : Adding random letters and numbers to the end");
    /* adding ascii values to a text string */

    for (String s : wordlist) {
        int x = 1;
        StringBuilder sb = new StringBuilder(s);
        for (int i = 33; i < 123; i++) {
            char L1 = (char) i;
            String out = sb.toString();

            String out1 = out + L1;

            if (out1.length() > 8) {

                break;

            } else {

                String hash = UnixCrypt.crypt(out1, "aa");

                for (User u : pw.getUsers()) {

                    if (u.getHash().equals(hash)) {

                        System.out.println("Found password " + out1 + " for user " + u.getUserName());
                        fp.addPassword(u.getUserName(), out1);

                    }

                }

            }

            for (int j = 33; j < 123; j++) {
                char L2 = (char) j;

                String out2 = out + L1 + L2;

                if (out2.length() > 8) {

                    break;

                } else {

                    String hash = UnixCrypt.crypt(out2, "aa");

                    for (User u : pw.getUsers()) {

                        if (u.getHash().equals(hash)) {

                            System.out.println("Found password " + out2 + " for user " + u.getUserName());
                            fp.addPassword(u.getUserName(), out2);

                        }

                    }

                }

                for (int k = 33; k < 123; k++) {
                    char L3 = (char) k;

                    String out3 = out + L1 + L2 + L3;

                    if (out3.length() > 8) {

                        break;

                    } else {

                        String hash = UnixCrypt.crypt(out3, "aa");

                        for (User u : pw.getUsers()) {

                            if (u.getHash().equals(hash)) {

                                System.out.println("Found password " + out3 + " for user " + u.getUserName());
                                fp.addPassword(u.getUserName(), out3);

                            }

                        }

                    }
                    for (int l = 33; l < 123; l++) {
                        char L4 = (char) l;

                        String out4 = out + L1 + L2 + L3 + L4;

                        if (out4.length() > 8) {

                            break;

                        } else {

                            String hash = UnixCrypt.crypt(out4, "aa");

                            for (User u : pw.getUsers()) {

                                if (u.getHash().equals(hash)) {

                                    System.out
                                            .println("Found password " + out4 + " for user " + u.getUserName());
                                    fp.addPassword(u.getUserName(), out4);

                                }

                            }

                        }
                    }
                }
            }
            if (out.length() < 8) {

            } else {

                System.out.println(out);
                break;
            }
        }
    }

    config.setDicModeFin(true);

}

From source file:org.soulwing.crypt4j.DesCrypt.java

/**
 * {@inheritDoc}//  ww w.  j  a v  a 2 s.  c  om
 */
@Override
protected String doCrypt(Password password, Salt salt)
        throws NoSuchAlgorithmException, UnsupportedEncodingException {
    checkUnixCryptAvailability();
    return UnixCrypt.crypt(password.getBytes(CHARACTER_ENCODING), salt.getText(2));
}