Code:/* DES Based crypt. Assuming the password is upto 4 letters, alphabets both upper and lower case. I'm new to coding, please help. example: Hash : 50fkUxYHbnXGw has a key: "rofl" ... where salt: 50*/ #define _XOPEN_SOURCE #include <unistd.h> #include <stdio.h> #include <cs50.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main(int argc, string argv[]) { char salt[2]; string k = argv[1]; if( argc != 2 ) { printf("Hash cannot be determined. Terminate Program. \n"); return 1; } if(strlen(k) != 13) { printf("Invalid Hash Length. Terminate Program. \n"); return 1; } salt[0] = k[0]; salt[1] = k[1]; int m, i, j, h, g; // for 1 space char c[5]; c[1] = '\0'; for (i=65; i<=90; i++) { c[0] = i; if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[0] = tolower(c[0]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } } // for 2 spaces c[0] = '\0'; c[2] = '\0'; m=0; for(i=65; i<=90; i++) { c[m] = i; for (j=65; j<=90; j++) { c[m+1] = j; if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+1] = tolower(c[m+1]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = toupper(c[m]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } } } // for 3 spaces c[0] = '\0'; c[3] = '\0'; m=0; for(i=65; i<=90; i++) { c[m] = i; for(h = 65; h<=90; h++) { c[m+1] = h; for (j=65; j<=90; j++) { c[m+2] = j; if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+2] = tolower(c[m]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+1] = tolower(c[m+1]); c[m+2] = toupper(c[m+2]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+2] = tolower(c[m+2]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = toupper(c[m+1]); c[m+2] = toupper(c[m+2]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+1] = toupper(c[m+1]); c[m+2] = tolower(c[m+2]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+1] = tolower(c[m+1]); c[m+2] = toupper(c[m+2]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+1] = tolower(c[m+1]); c[m+2] = tolower(c[m+2]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } } } } // for 4 spaces c[0] = '\0'; c[4] = '\0'; m=0; for(i=65; i<=90; i++) { c[m] = i; for(h = 65; h<=90; h++) { c[m+1] = h; for (j=65; j<=90; j++) { c[m+2] = j; for(g=65; g<=90; g++) { c[m+3] = g; if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+3] = tolower(c[m]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+2] = tolower(c[m+2]); c[m+3] = toupper(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+3] = tolower(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+1] = tolower(c[m+1]); c[m+2] = toupper(c[m+2]); c[m+3] = toupper(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+2] = toupper(c[m+2]); c[m+3] = tolower(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+2] = tolower(c[m+2]); c[m+3] = toupper(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m+2] = tolower(c[m+2]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = toupper(c[m+1]); c[m+2] = toupper(c[m+2]); c[m+3] = toupper(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = toupper(c[m+1]); c[m+2] = toupper(c[m+2]); c[m+3] = tolower(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = toupper(c[m+1]); c[m+2] = tolower(c[m+2]); c[m+3] = toupper(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = toupper(c[m+1]); c[m+2] = tolower(c[m+2]); c[m+3] = tolower(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = tolower(c[m+1]); c[m+2] = toupper(c[m+2]); c[m+3] = toupper(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = tolower(c[m+1]); c[m+2] = toupper(c[m+2]); c[m+3] = tolower(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = tolower(c[m+1]); c[m+2] = tolower(c[m+2]); c[m+3] = toupper(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } c[m] = tolower(c[m]); c[m+1] = tolower(c[m+1]); c[m+2] = tolower(c[m+2]); c[m+3] = tolower(c[m+3]); if(strcmp(crypt(c,salt),k) == 0) { printf("Password: %s\n", c); return 0; } } } } } }