ここにいくつかのコードがあります。
#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
結果です(パスワードはadminです)。これを確認するために、結果から塩を分離する必要があります。
私の理解では、の文字列C
は実際にはchar array
すべての文字だけを含んでいます('\0'
最後にあります)。ループを使用しfor
て最初の3文字を切り取りますが、のせいでASLR
、得られる結果は常にランダムなものになると思います。実際、がない ASLR
と、常に同じランダムな結果が得られます。