Advertisement
Guest User

salcifufu-raph.c ;)

a guest
Feb 10th, 2011
622
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <sys/types.h>
  6. #include <sys/wait.h>
  7.  
  8.  
  9. int main(int argc, char **argv) {
  10.         char min, max;
  11.         int status, i;
  12.         char *x, *ptr;
  13.         pid_t pid;
  14.         if (argc != 3) {
  15.                 printf("Usage: %s <passwd maxlen> <progname>\n", argv[0]);
  16.                 exit(1);
  17.         }
  18.  
  19.         x = (char *)malloc(atoi(argv[1]));
  20.         ptr = x;
  21.  
  22.         while (1) {
  23.                 min = 0x20; // Primero caracter imprimivel da tabela ASCII (SPACE)
  24.                 max = 0x7E; // Ultimo caracter imprimivel da tabela ASCII (~)
  25.                 *ptr = (char)((min + max) / 2); // Meio da tabela ASCII
  26.  
  27.                 for (i=0; i<7; i++) {
  28.                         if ((pid = fork()) == -1) {
  29.                                 perror("fork");
  30.                                 exit(EXIT_FAILURE);
  31.                         }
  32.                         if (pid == 0) {
  33.                                 if (execl(argv[2], argv[2], x, NULL) == -1) {
  34.                                         perror("execl");
  35.                                         exit(EXIT_FAILURE);
  36.                                 }
  37.                         } else {
  38.                                 if ((wait(&status)) == -1) {
  39.                                         perror("wait");
  40.                                         exit(EXIT_FAILURE);
  41.                                 }
  42.                                 if (WEXITSTATUS(status) == 1)
  43.                                         min = *ptr+1;
  44.                                 if (WEXITSTATUS(status) == 255)
  45.                                         max = *ptr-1;
  46.  
  47.                                 *ptr = (char)((min + max) / 2); // Meio da busca
  48.                                 printf("min: %d - max: %d - x: %d\n", min, max, *ptr);
  49.                                 //printf("WEXITSTATUS: %d\n", WEXITSTATUS(status));
  50.                                 //sleep(1);
  51.                         }
  52.                 }
  53.                 if (*ptr == 0x1F) {
  54.                         printf("----------------------------------------\nPassword Found[%d]: %s\n", strlen(x), x);
  55.                         return(0);
  56.                 } else {
  57.                         ptr++;
  58.                         printf("Password found so far: %s\n", x);
  59.                 }
  60.         }
  61.         return(0);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement