Unixで暗号化されたユーザーパスワードを取得

833 ワード


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で鳥を作らなければならないようです.