diff --git a/lib/LoginHandler.ts b/lib/LoginHandler.ts index 28cd82b..b82e5be 100644 --- a/lib/LoginHandler.ts +++ b/lib/LoginHandler.ts @@ -1,6 +1,5 @@ import validator from 'validator'; import * as xmlrpc from 'xmlrpc'; -import * as crypto from 'crypto'; import * as fs from 'fs'; import * as path from 'path'; import { LoginError } from './classes/LoginError'; @@ -87,7 +86,7 @@ export class LoginHandler { 'first': params.firstName, 'last': params.lastName, - 'passwd': '$1$' + crypto.createHash('md5').update(params.password.substr(0, 16)).digest('hex'), + 'passwd': params.getHashedPassword(), 'start': params.start, 'major': '0', 'minor': '0', diff --git a/lib/classes/LoginParameters.ts b/lib/classes/LoginParameters.ts index 0a04ac2..833eabe 100644 --- a/lib/classes/LoginParameters.ts +++ b/lib/classes/LoginParameters.ts @@ -1,3 +1,5 @@ +import * as crypto from 'crypto'; + export class LoginParameters { firstName: string; @@ -9,4 +11,15 @@ export class LoginParameters mfa_hash?: string; agreeToTOS?: true; readCritical?: true; + + passwordPrehashed = false; + + getHashedPassword(): string + { + if (this.passwordPrehashed) + { + return this.password; + } + return '$1$' + crypto.createHash('md5').update(this.password.substr(0, 16)).digest('hex'); + } }