yorik_sar

brute.c

Jul 25th, 2013
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <crypt.h>
  6. #include <sys/time.h>
  7.  
  8. int guesses = 0;
  9.  
  10. char *
  11. brute(char *dict, int dictlen, char hash[13], int len) {
  12.     unsigned char indeces[len];
  13.     char guess[len + 1];
  14.     int cur;
  15.     char *res;
  16.  
  17.     memset(indeces, 0, len);
  18.     cur = 0;
  19.     guess[len] = 0;
  20.     while (cur >= 0) {
  21.         if (cur == len) {
  22.             res = crypt(guess, hash);
  23.             guesses++;
  24.             if (!memcmp(res, hash, 13)) {
  25.                 res = malloc(len + 1);
  26.                 memcpy(res, guess, len + 1);
  27.                 return res;
  28.             }
  29.             cur--;
  30.         } else if (indeces[cur] == dictlen + 1) {
  31.             cur--;
  32.         } else {
  33.             guess[cur] = dict[indeces[cur]];
  34.             indeces[cur]++;
  35.             cur++;
  36.             indeces[cur] = 0;
  37.         }
  38.     }
  39.     return NULL;
  40. }
  41.  
  42. char dict[] = "abcdefghijklmnopqrstuvwxyz";
  43.  
  44. int
  45. main() {
  46.     char *res;
  47.     char *pass;
  48.     char hash[13];
  49.     char *salt;
  50.     struct timeval start, finish;
  51.  
  52.     printf("Password: ");
  53.     scanf("%ms", &pass);
  54.     printf("Salt: ");
  55.     scanf("%ms", &salt);
  56.  
  57.     res = crypt(pass, salt);
  58.     memcpy(hash, res, 13);
  59.     printf("Hash is %s\n", res);
  60.  
  61.     res = brute(dict, sizeof(dict) - 1, hash, strlen(pass));
  62.     if (res) {
  63.         printf("Found: %s\n", res);
  64.     } else {
  65.         printf("Not found\n");
  66.     }
  67.     free(pass);
  68.     free(salt);
  69.     free(res);
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment