Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.03 KB | None | 0 0
  1. package HashCracker;
  2.  
  3. import java.security.NoSuchAlgorithmException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.concurrent.CountDownLatch;
  7.  
  8.  
  9. /**
  10.  * the worker class has a method that creates the next string in
  11.  * the alphabet. the worker class also compares two hex values
  12.  * to see if they are the same.
  13.  *
  14.  */
  15. public class Worker extends Thread{
  16.  
  17.     private String hashValue = "";
  18.     private Integer numChars;
  19.     private char[] CHARS;
  20.     private Integer numWorkers;
  21.     private List<String> inputs;
  22.     private Cracker cracker;
  23.     private final CountDownLatch doneSignal;
  24.     private Integer workNumber;
  25.    
  26.     /**
  27.      * Creates a worker object. initializes with specific
  28.      * values for a cracker, hashvalue, numchars, numworkers,
  29.      * worknumber, char[] chars, and donesignal.
  30.      * @param cracker
  31.      * @param hashValue
  32.      * @param numChars
  33.      * @param numWorkers
  34.      * @param workNumber
  35.      * @param CHARS
  36.      * @param doneSignal
  37.      */
  38.     public Worker(Cracker cracker, String hashValue, Integer numChars,
  39.             Integer numWorkers, Integer workNumber, char[] CHARS, CountDownLatch doneSignal) {
  40.         this.cracker = cracker;
  41.         this.hashValue = hashValue;
  42.         this.numChars = numChars;
  43.         this.CHARS = CHARS;
  44.         this.numWorkers = numWorkers;
  45.         this.doneSignal = doneSignal;
  46.         this.workNumber = workNumber;
  47.     }
  48.    
  49.     /**
  50.      * method returns the next string in the alphabet chars.
  51.      * @param string
  52.      * @return String NEXTSTRING
  53.      */
  54.     private String nextString(String string) {
  55.         StringBuilder builder = new StringBuilder(string);
  56.         char a = CHARS[0];
  57.         char z = CHARS[CHARS.length-1];
  58.         int i = builder.length() - 1;
  59.         while (i >= 0) {
  60.             if (builder.charAt(i) != z) {
  61.                 break;
  62.             }
  63.             i--;
  64.         }
  65.         if (i == -1) {
  66.             return null;
  67.         }
  68.         builder.setCharAt(i, CHARS[indexOf(CHARS, builder.charAt(i))+1]);
  69.         i++;
  70.         while (i < CHARS.length) {
  71.             builder.setCharAt(i, a);
  72.             i++;
  73.         }
  74.         return builder.toString();
  75.     }
  76.  
  77.     private int indexOf(char[] array, char element) {
  78.         for (int i = 0, size = array.length; i < size; i++) {
  79.             if (array[i] == element) {
  80.                 return i;
  81.             }
  82.         }
  83.         return -1;
  84.     }
  85.    
  86.     private String genString(Integer length) {
  87.         StringBuilder builder = new StringBuilder();
  88.        
  89.         for(int i = 0; i < length; i++) {
  90.             builder.append(CHARS[0]);
  91.         }
  92.         return builder.toString();
  93.     }
  94.    
  95.     public void run() {
  96.         inputs = new ArrayList<String>();
  97.         String tempString = "";
  98.         String genString = "";
  99.        
  100.         for(int i = 1; i <= numChars; i++) {
  101.             for(int j = workNumber*(numWorkers-1);
  102.                 j < workNumber*(CHARS.length/(numWorkers)) + CHARS.length/numWorkers; j++) {
  103.                 System.out.println("hi");
  104.                 genString = genString(i);
  105.                 System.out.println(genString);
  106.                 while(genString != null) {
  107.                     try {
  108.                         tempString = cracker.generateHash(genString);
  109.                     } catch (NoSuchAlgorithmException e) {
  110.                         e.printStackTrace();
  111.                     }
  112.                    
  113.                     if(tempString.equals(hashValue)) {
  114.                         System.out.println(genString);
  115.                         doneSignal.countDown();
  116.                     }
  117.                 genString = nextString(tempString);
  118.                 }
  119.             }
  120.         }
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement