Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量在for循环中被crypt()意外覆盖_C_Hash_Brute Force_Crypt - Fatal编程技术网

变量在for循环中被crypt()意外覆盖

变量在for循环中被crypt()意外覆盖,c,hash,brute-force,crypt,C,Hash,Brute Force,Crypt,我正在尝试构建一个C程序,它将强制执行参数中给定的哈希。代码如下: #包括 #包括 #包括 #包括 常量字符设置[]=“$6$QSX8hjVa$”; 常量字符值[]=“ABCDEFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZ0123456789”; int main(int argc,char*argv[]) { char*hashToTrack=crypt(argv[1],设置); printf(“%s\n”,hashToCrack); 对于(in

我正在尝试构建一个C程序,它将强制执行参数中给定的哈希。代码如下:

#包括
#包括
#包括
#包括
常量字符设置[]=“$6$QSX8hjVa$”;
常量字符值[]=“ABCDEFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZ0123456789”;
int main(int argc,char*argv[])
{
char*hashToTrack=crypt(argv[1],设置);
printf(“%s\n”,hashToCrack);
对于(int i=0;i
为了方便起见,我只在参数中提供一个字符串,该字符串将被破解。它在主函数的开头加密(存储在hashToCrack中)。现在,我只使用一个字符。我这样编译程序:
gccmain.c-omain-lcrypt-Wall

问题-当我启动此程序时,我在for循环的每个迭代中都“找到了!”。看来hashToCrack和try是一样的。但是,我从不覆盖hashtorack,因此它永远不会更改

可能有些东西我用指针不明白,但我找不到


有什么想法吗D

函数
crypt
返回指向静态数据缓冲区的指针。因此,当您再次调用它时,
hashToTrack
指向的字符串会发生变化

您需要将第一次调用
crypt
的结果复制到一个单独的缓冲区中

char *hashToCrack = strdup(crypt(argv[1], setting));
使用完此缓冲区后,不要忘记调用
free