[ CyberB @ 17.08.2004. 15:46 ] @
Pre neki dan sam installirao slack 10, ppp2.4.2 i rp-pppoe 3.5... Sve je lepo podeseno, patchovano za MPPE i kernel (najnoviji trenutno 2.6.8.1) i ppp, ali mi je adsl-connect skripta redovno prijavljivala "MS-CHAPv2 Success packet badly formed" tj. adsl-start je crkavao sa timeoutom. Posle duugog googlanja sam odlucio da zavirim malo ispod haube i... Evo originalnog isecka fajla ppp-2.4.2/pppd/chap_ms.c: Code: chapms2_check_success(unsigned char *msg, int len, unsigned char *private) { if ((len < MS_AUTH_RESPONSE_LENGTH + 2) || strncmp(msg, "S=", 2)) { /* Packet does not start with "S=" */ error("MS-CHAPv2 Success packet is badly formed."); return 0; } msg += 2; len -= 2; if (len < MS_AUTH_RESPONSE_LENGTH || memcmp(msg, private, MS_AUTH_RESPONSE_LENGTH)) { /* Authenticator Response did not match expected. */ error("MS-CHAPv2 mutual authentication failed."); return 0; } /* Authenticator Response matches. */ msg += MS_AUTH_RESPONSE_LENGTH; /* Eat it */ len -= MS_AUTH_RESPONSE_LENGTH; if ((len >= 3) && !strncmp(msg, " M=", 3)) { msg += 3; /* Eat the delimiter */ } else if (len) { /* Packet has extra text which does not begin " M=" */ error("MS-CHAPv2 Success packet is badly formed."); return 0; } return 1; } E sad pogledajte kako pppd proverava da li je dobio validan odgovor od servera: Code: if ((len < MS_AUTH_RESPONSE_LENGTH + 2) || strncmp(msg, "S=", 2)) { /* Packet does not start with "S=" */ "does not start with 'S='"?!? pa koliko ja ovde vidim ako paket _POCINJE_ sa "S=" on prijavljuje gresku uzas! a sada samo pogledajte nastavak ove fantomske provere: Code: if (len < MS_AUTH_RESPONSE_LENGTH || memcmp(msg, private, MS_AUTH_RESPONSE_LENGTH)) { /* Authenticator Response did not match expected. */ error("MS-CHAPv2 mutual authentication failed."); return 0; } jednostavno da se coveku place.... "did not match expected" ccc... ja ne vidim ! ispred ovog memcmp.... i tako do kraja ove f-je za proveru... ja sugerisem da lepo umesto cele ove fje ubacite chapms2_check_success(unsigned char *msg, int len, unsigned char *private) { return 1; } ili ako vas ne mrzi da lupate uzvicnike tamo gde je autor ukakio ;)) jos tuznije je sto nigde na netu nema ovog buga... (mali li je) izvinjavam se na konfuznom postu, nisam jaakoo dugo spavao. nadam se da ste me razumeli... |