Advertisement
Guest User

Java HomeWork

a guest
Jan 17th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.company;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.net.URL;
  6. import java.util.ArrayList;
  7. import java.util.Scanner;
  8. import java.util.zip.CRC32;
  9.  
  10. public class Main {
  11.  
  12.     public static void main(String[] args) throws IOException {
  13.         long hash1 = 0x0B91A851BL; // это CRC32 хэш пароля apple123
  14.         long hash2 = 0x0BA02B6E1L; // хэш CRC32 пароля, который нужно угадать
  15.         // пароль состоит из слова (из файла), за котрым следует число от 1 до 9999
  16.         // примеры паролей: master111 shadow1234
  17.         // посчитать хэш можно и  в браузере http://www.sunshine2k.de/coding/javascript/crc/crc_js.html
  18.  
  19.         // часть 1. проверяем, как пользоваться CRC32
  20.         // используем простой алгоритм CRC32
  21.         CRC32 crc32 = new CRC32();
  22.         String plaintext = "apple123";
  23.         crc32.update(plaintext.getBytes());
  24.         // хэш - это контрольная сумма в виде числа типа long
  25.         long checksum = crc32.getValue();
  26.         // выводим наш хэш в шестнадцатеричной форме
  27.        // System.out.println(Long.toHexString(checksum));
  28.  
  29.         // объект можно использовать повторно, вызвав метод reset()
  30.         crc32.reset();
  31.         crc32.update(plaintext.getBytes());
  32.         checksum = crc32.getValue();
  33.         crc32.reset();
  34.        // System.out.println(Long.toHexString(checksum));
  35.  
  36.         // часть 2. считываем список слов из файла
  37.         // https://github.com/danielmiessler/SecLists/blob/master/Passwords/10k_most_common.txt
  38.         // кстати, могу рекомендовать блог автора, пишет про инф. безопасность
  39.         // https://danielmiessler.com/blog/
  40.         // рекомендую использовать для этого ArrayList
  41.         ArrayList<String> words = new ArrayList<String>();
  42.  
  43.        
  44.         URL url=new URL("https://github.com/danielmiessler/SecLists/blob/master/Passwords/10k_most_common.txt");
  45.         Scanner in=new Scanner((InputStream) url.getContent());
  46.         System.out.print("1231");
  47.         while(in.hasNext()){
  48.             words.add(in.nextLine());
  49.         }
  50.         for(int i=0;i<words.size();i++){
  51.             String word=words.get(i);
  52.             int a=0;
  53.             for(int j=1;j<9999;j++){
  54.                 word+=j;
  55.  
  56.                 crc32.update(word.getBytes());
  57.                 checksum=crc32.getValue();
  58.                 if(checksum==hash2){
  59.                     System.out.println(word);
  60.                     a=1;
  61.                 }
  62.                 crc32.reset();
  63.             }
  64.             if(a==1) break;
  65.         }
  66.         System.out.println("There are " + words.size() + " in dictionary file");
  67.  
  68.      
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement