/* apoc-crack.c by Adam Rogoyski (apoc@laker.net) Temperanc on EFNet irc * Copyright (C) 1997 Adam Rogoyski * Simple Brute Force unix password cracker, tries every printable 7-bit * ascii characters. * warning: This program may take thousands of years to finish one run. * usage: ./apoc-crack [file with encrypted password in it] * compile: gcc -o apoc-crack apoc-crack.c * --- GNU General Public License Disclamer --- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include #include #include #include #include #include int main (int argc, char **argv) { char salt[3]; char encrypted[14]; FILE *fp; char *temp = malloc(14 * sizeof(char)); char temppw[9]; int flag = 0; char i = 0; char j = 0; char k = 0; char l = 0; char m = 0; char n = 0; char o = 0; char p = 0; if (argc == 2) { if ((fp = fopen(argv[1], "r")) == NULL) exit (EXIT_FAILURE); else { fgets (encrypted, 14, fp); salt[0] = encrypted[0]; salt[1] = encrypted[1]; salt[2] = '\0'; } } else exit (EXIT_FAILURE); temppw[1] = '\0'; for (i = 33; i < 126; i++) { temppw[0] = i; temp = (char *) crypt(temppw, salt); if (strcmp(encrypted, temp) == 0) { printf ("%s = %s \a\n", encrypted, temppw); flag = 1; break; } } if (flag) { exit (EXIT_SUCCESS); } else { printf ("Password is at least 2 Characters Long\n"); } temppw[2] = '\0'; for (i = 33; i < 126; i++) { if (flag) { exit (EXIT_SUCCESS); } for (j = 33; j < 126; j++) { temppw[0] = i; temppw[1] = j; temp = (char *) crypt(temppw, salt); if (strcmp(encrypted, temp) == 0) { printf ("%s = %s \a\n", encrypted, temppw); flag = 1; break; } } } if (flag) { exit (EXIT_SUCCESS); } else { printf ("Password is at least 3 Characters Long\n"); } temppw[3] = '\0'; for (i = 33; i < 126; i++) { for (j = 33; j < 126; j++) { if (flag) { exit (EXIT_SUCCESS); } for (k = 33; k < 126; k++) { temppw[0] = i; temppw[1] = j; temppw[2] = k; temp = (char *) crypt(temppw, salt); if (strcmp(encrypted, temp) == 0) { printf ("%s = %s \a\n", encrypted, temppw); flag = 1; break; } } } } if (flag) { exit (EXIT_SUCCESS); } else { printf ("Password is at least 4 Characters Long\n"); } temppw[4] = '\0'; for (i = 33; i < 126; i++) { for (j = 33; j < 126; j++) { for (k = 33; k < 126; k++) { if (flag) { exit (EXIT_SUCCESS); } for (l = 33; l < 126; l++) { temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l; temp = (char *) crypt(temppw, salt); if (strcmp(encrypted, temp) == 0) { printf ("%s = %s \a\n", encrypted, temppw); flag = 1; break; } } } } } if (flag) { exit (EXIT_SUCCESS); } else { printf ("Password is at least 5 Characters Long\n"); } temppw[5] = '\0'; for (i = 33; i < 126; i++) { for (j = 33; j < 126; j++) { for (k = 33; k < 126; k++) { for (l = 33; l < 126; l++) { if (flag) { exit (EXIT_SUCCESS); } for (m = 33; m < 126; m++) { temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l; temppw[4] = m; temp = (char *) crypt(temppw, salt); if (strcmp(encrypted, temp) == 0) { printf ("%s = %s \a\n", encrypted, temppw); flag = 1; break; } } } } } } if (flag) { exit (EXIT_SUCCESS); } else { printf ("Password is at least 6 Characters Long\n"); } temppw[6] = '\0'; for (i = 33; i < 126; i++) { for (j = 33; j < 126; j++) { for (k = 33; k < 126; k++) { for (l = 33; l < 126; l++) { for (m = 33; m < 126; m++) { if (flag) { exit (EXIT_SUCCESS); } for (n = 33; n < 126; n++) { temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l; temppw[4] = m; temppw[5] = n; temp = (char *) crypt(temppw, salt); if (strcmp(encrypted, temp) == 0) { printf ("%s = %s \a\n", encrypted, temppw); flag = 1; break; } } } } } } } if (flag) { exit (EXIT_SUCCESS); } else { printf ("Password is at least 7 Characters Long\n"); } temppw[7] = '\0'; for (i = 33; i < 126; i++) { for (j = 33; j < 126; j++) { for (k = 33; k < 126; k++) { for (l = 33; l < 126; l++) { for (m = 33; m < 126; m++) { for (n = 33; n < 126; n++) { if (flag) { exit (EXIT_SUCCESS); } for (o = 33; o < 126; o++) { temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l; temppw[4] = m; temppw[5] = n; temppw[6] = o; temp = (char *) crypt(temppw, salt); if (strcmp(encrypted, temp) == 0) { printf ("%s = %s \a\n", encrypted, temppw); flag = 1; break; } } } } } } } } if (flag) { exit (EXIT_SUCCESS); } else { printf ("Password is at least 8 Characters Long\n"); } temppw[8] = '\0'; for (i = 33; i < 126; i++) { for (j = 33; j < 126; j++) { for (k = 33; k < 126; k++) { for (l = 33; l < 126; l++) { for (m = 33; m < 126; m++) { for (n = 33; n < 126; n++) { for (o = 33; o < 126; o++) { if (flag) { exit (EXIT_SUCCESS); } for (p = 33; p < 126; p++) { temppw[0] = i; temppw[1] = j; temppw[2] = k; temppw[3] = l; temppw[4] = m; temppw[5] = n; temppw[6] = o; temppw[7] = p; temp = (char *) crypt(temppw, salt); if (strcmp(encrypted, temp) == 0) { printf ("%s = %s \a\n", encrypted, temppw); flag = 1; break; } } } } } } } } } if (flag) { exit (EXIT_SUCCESS); } else { printf ("Password uses characters other than 7-bit Ascii\n"); } return EXIT_SUCCESS; }