Unixで暗号化されたユーザーパスワードを取得
Unixのユーザー情報は/etc/passwdに置くか/etc/shadowに置くか知っています.
ubuntuにパスワードを比較するプログラムを書きます.
#define _XOPEN_SOURCE
#include
#include
#include
#include
#include
int main(int argc,char **argv)
{
if(argc!=2){
printf("usage : %s user_namen",argv[0]);
exit(-1);
}
struct passwd *pwd = getpwnam(argv[1]);
printf("%s pwd is %sn",argv[1],pwd->pw_passwd);
struct spwd *spwd = getspnam(argv[1]);
printf("%s pwd is %sn",argv[1],spwd->sp_pwdp);
char *pwd_in = getpass("passwd:");
char *epwd = crypt(pwd_in,spwd->sp_pwdp);
printf("%s epwd is %sn",argv[1],epwd);
return 0;
}
以上のコードはmac os X 10にある.x後は無効で、mac apiかPAMで鳥を作らなければならないようです.