这是一些代码。
#include <stdio.h>
int main()
{
char npass[] = "$1$bUZXMjKz$08Ps4NPTfj6ZNkoqrsP/D.";
char salt [12];
int i;
for (i = 0; i < 12; i++)
{
npass[i+3] = salt[i];
i++;
}
salt[12] = '\0';
puts(salt);
return 0;
}
基本上,npass是一个md5crypt
结果(密码是管理员)。为了验证这一点,我需要将盐与结果分开。
我的理解是,一个字符串C
实际上是一个char array
单独包含所有字母的字符串('\0'
末尾带有)。我使用for
循环来剪切前三个字符,但我猜是因为ASLR
,我得到的结果总是随机的。实际上,没有 ASLR
,我总是得到相同的随机结果。