passwd
This commit is contained in:
41
login.c
41
login.c
@@ -14,32 +14,57 @@ static int do_change_object_passwd(char *name,
|
||||
|
||||
{
|
||||
uint8 key[8];
|
||||
|
||||
fprintf(stderr, "PASSWD debug: user='%s' oldlen=%u newlen=%u\n",
|
||||
name, (uint)strlen(oldpassword), (uint)strlen(newpassword));
|
||||
|
||||
if (!ncp_17_17(key)) {
|
||||
uint32 objid = ncp_17_35(name, objtyp);
|
||||
uint32 objid;
|
||||
|
||||
fprintf(stderr, "PASSWD debug: ncp_17_17 OK\n");
|
||||
|
||||
objid = ncp_17_35(name, objtyp);
|
||||
if (objid) {
|
||||
uint8 buff[128];
|
||||
uint8 encrypted[8];
|
||||
uint8 newcryptpasswd[16];
|
||||
int passwdx=0;
|
||||
int passwdx = (int)strlen(newpassword);
|
||||
uint8 tmpid[4];
|
||||
|
||||
fprintf(stderr, "PASSWD debug: ncp_17_35 OK objid=%08lx name='%s'\n",
|
||||
objid, name);
|
||||
|
||||
U32_TO_BE32(objid, tmpid);
|
||||
|
||||
shuffle(tmpid, oldpassword, strlen(oldpassword), buff);
|
||||
nw_encrypt(key, buff, encrypted);
|
||||
|
||||
shuffle(tmpid, newpassword, strlen(newpassword), buff);
|
||||
memcpy(newcryptpasswd, buff, sizeof(newcryptpasswd));
|
||||
|
||||
fprintf(stderr, "PASSWD debug: trying encrypted ncp_17_4b passwdx=%d\n",
|
||||
passwdx);
|
||||
|
||||
if (!ncp_17_4b(encrypted, name, objtyp, passwdx, newcryptpasswd)) {
|
||||
;;
|
||||
fprintf(stderr, "PASSWD debug: ncp_17_4b OK\n");
|
||||
return(0);
|
||||
}
|
||||
|
||||
fprintf(stderr, "PASSWD debug: ncp_17_4b failed neterrno=%d\n", neterrno);
|
||||
} else {
|
||||
fprintf(stderr, "PASSWD debug: ncp_17_35 failed neterrno=%d\n", neterrno);
|
||||
}
|
||||
} else { /* fallback to old unencrypted algorithmus */
|
||||
if (!ncp_17_40(name, objtyp, oldpassword, newpassword)) {
|
||||
;;
|
||||
return(0);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "PASSWD debug: ncp_17_17 failed neterrno=%d\n", neterrno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "PASSWD debug: trying fallback unencrypted ncp_17_40\n");
|
||||
if (!ncp_17_40(name, objtyp, oldpassword, newpassword)) {
|
||||
fprintf(stderr, "PASSWD debug: ncp_17_40 OK\n");
|
||||
return(0);
|
||||
}
|
||||
|
||||
fprintf(stderr, "PASSWD debug: ncp_17_40 failed neterrno=%d\n", neterrno);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user