Подбор пароля по словарю #include <stdio.h> #include <crypt.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { if(argc < 2) exit(0); FILE *list; char *hash, word[30], sol[3]; strncpy(sol, argv[2], 2); sol[2] = '\0'; if((list = fopen(argv[1], "r")) == NULL) exit(0); while(fgets(word, 30, list) != NULL) { word[strlen(word)-1] = '\0'; hash = crypt(word, sol); printf("слово %-30s с хешем %15s\n", word, hash); if(strcmp(hash, argv[2]) == 0) { printf("Пароль - %s с хешем %s", word, hash); fclose(list); exit(1); } } printf("в словаре нет пароля("); fclose(list); exit(0); } C #include <stdio.h> #include <crypt.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { if(argc < 2) exit(0); FILE *list; char *hash, word[30], sol[3]; strncpy(sol, argv[2], 2); sol[2] = '\0'; if((list = fopen(argv[1], "r")) == NULL) exit(0); while(fgets(word, 30, list) != NULL) { word[strlen(word)-1] = '\0'; hash = crypt(word, sol); printf("слово %-30s с хешем %15s\n", word, hash); if(strcmp(hash, argv[2]) == 0) { printf("Пароль - %s с хешем %s", word, hash); fclose(list); exit(1); } } printf("в словаре нет пароля("); fclose(list); exit(0); } для UNIX-систем gcc -o произвольноеназвание код.c -l crypt применение: ./произвольноеназвание словарь хеш