/**************************************************************************** stores lm and nt hashed passwords ****************************************************************************/ void pwd_set_lm_nt_16(struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16]) { pwd_init(pwd); if (lm_pwd) { memcpy(pwd->smb_lm_pwd, lm_pwd, 16); } else { memset((char *)pwd->smb_lm_pwd, '\0', 16); } if (nt_pwd) { memcpy(pwd->smb_nt_pwd, nt_pwd, 16); } else { memset((char *)pwd->smb_nt_pwd, '\0', 16); } pwd->null_pwd = False; pwd->cleartext = False; pwd->crypted = False; pwd_obfuscate(pwd); }
/**************************************************************************** makes lm and nt OWF crypts ****************************************************************************/ void pwd_make_lm_nt_owf(struct pwd_info *pwd, uchar cryptkey[8]) { pwd_deobfuscate(pwd); #ifdef DEBUG_PASSWORD DEBUG(100,("client cryptkey: ")); dump_data(100, (char *)cryptkey, 8); #endif SMBOWFencrypt(pwd->smb_nt_pwd, cryptkey, pwd->smb_nt_owf); #ifdef DEBUG_PASSWORD DEBUG(100,("nt_owf_passwd: ")); dump_data(100, (char *)pwd->smb_nt_owf, sizeof(pwd->smb_nt_owf)); DEBUG(100,("nt_sess_pwd: ")); dump_data(100, (char *)pwd->smb_nt_pwd, sizeof(pwd->smb_nt_pwd)); #endif SMBOWFencrypt(pwd->smb_lm_pwd, cryptkey, pwd->smb_lm_owf); #ifdef DEBUG_PASSWORD DEBUG(100,("lm_owf_passwd: ")); dump_data(100, (char *)pwd->smb_lm_owf, sizeof(pwd->smb_lm_owf)); DEBUG(100,("lm_sess_pwd: ")); dump_data(100, (char *)pwd->smb_lm_pwd, sizeof(pwd->smb_lm_pwd)); #endif pwd->crypted = True; pwd_obfuscate(pwd); }
/**************************************************************************** stores a cleartext password ****************************************************************************/ void pwd_set_cleartext(struct pwd_info *pwd, char *clr) { pwd_init(pwd); fstrcpy(pwd->password, clr); pwd->cleartext = True; pwd->null_pwd = False; pwd->crypted = False; pwd_obfuscate(pwd); }
/**************************************************************************** makes lm and nt hashed passwords ****************************************************************************/ void pwd_make_lm_nt_16(struct pwd_info *pwd, char *clr) { pwd_init(pwd); nt_lm_owf_gen(clr, pwd->smb_nt_pwd, pwd->smb_lm_pwd); pwd->null_pwd = False; pwd->cleartext = False; pwd->crypted = False; pwd_obfuscate(pwd); }
/**************************************************************************** gets lm and nt crypts ****************************************************************************/ void pwd_get_lm_nt_owf(struct pwd_info *pwd, uchar lm_owf[24], uchar nt_owf[24]) { pwd_deobfuscate(pwd); if (lm_owf != NULL) { memcpy(lm_owf, pwd->smb_lm_owf, 24); } if (nt_owf != NULL) { memcpy(nt_owf, pwd->smb_nt_owf, 24); } pwd_obfuscate(pwd); }
/**************************************************************************** gets lm and nt hashed passwords ****************************************************************************/ void pwd_get_lm_nt_16(struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16]) { pwd_deobfuscate(pwd); if (lm_pwd != NULL) { memcpy(lm_pwd, pwd->smb_lm_pwd, 16); } if (nt_pwd != NULL) { memcpy(nt_pwd, pwd->smb_nt_pwd, 16); } pwd_obfuscate(pwd); }
/**************************************************************************** gets a cleartext password ****************************************************************************/ void pwd_get_cleartext(struct pwd_info *pwd, char *clr) { pwd_deobfuscate(pwd); if (pwd->cleartext) { fstrcpy(clr, pwd->password); } else { clr[0] = 0; } pwd_obfuscate(pwd); }
/**************************************************************************** makes lm and nt hashed passwords ****************************************************************************/ void pwd_make_lm_nt_16(struct pwd_info *pwd, char *clr) { pstring dos_passwd; pwd_init(pwd); pstrcpy(dos_passwd, clr); unix_to_dos(dos_passwd, True); nt_lm_owf_gen(dos_passwd, pwd->smb_nt_pwd, pwd->smb_lm_pwd); pwd->null_pwd = False; pwd->cleartext = False; pwd->crypted = False; pwd_obfuscate(pwd); }