使用crypt函数时C中的分段错误

时间:2018-03-27 03:48:06

标签: c segmentation-fault des crypt

我是C语言编程的新手。我正在尝试创建一个简单的密码破解程序但是当我尝试运行它时,我将Segmentation Fault作为错误。有人可以解决这个问题。提前谢谢。

#define _XOPEN_SOURCE
#include<stdio.h>
#include<crypt.h>
#include<unistd.h>
#include<string.h>

int main(int argc, char *argv[])
{
    if(argc != 3)
    {
        printf("Usage: ./craken salt hash\n");
        return 0;       
    }


    FILE *fPointer;
    fPointer = fopen("wordlist.txt", "r");

    char singleLine[150];
    while(fgets(singleLine, 150, fPointer) != NULL)
    {   
        if(!strcmp(argv[2], crypt(singleLine, argv[1])))
       {
            printf("Password found! %s is the password\n", singleLine);
            fclose(fPointer);
            return 0;
       }
    }
    printf("Not found\n");
    fclose(fPointer);
    return 0;
} 

1 个答案:

答案 0 :(得分:1)

我想问题是,如果你读出可能的密码,那么最后会有一个换行符。我理解的crypt()函数只能处理可能导致返回NULL指针的set [a-zA-Z0-9./](crypt man page)。这个NULL指针导致strcmp()函数内部的分段错误。因此,尝试在每个输入行的末尾删除该换行符。希望这有效