From c12c93b958312f0540fd6c3694a4d94dbbbae451 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Fri, 22 May 2026 15:42:15 +0200 Subject: [PATCH] passwd --- login.c | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/login.c b/login.c index 7845841..208fba6 100644 --- a/login.c +++ b/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); }