diff --git a/exec/rlogin.js b/exec/rlogin.js index 0fb3f7828f5c5c4ff16326cad0f0653e108366a8..65d8edc84436a7d1952e1d52da2a60d88a7de644 100644 --- a/exec/rlogin.js +++ b/exec/rlogin.js @@ -8,6 +8,7 @@ // -T <connect-timeout-seconds> (default: 10 seconds) // -m <telnet-gateway-mode> (Number or TG_* vars OR'd together, default: 0) // -p send current user alias and password as server and client-name values +// -h send current user alias and hashed-password as server and client-name // -q don't display banner or pause prompt (quiet) // -v increase verbosity (display remote host name/address/port in messages) // -P don't pause for user key-press @@ -38,6 +39,15 @@ var clear = options.clear === undefined ? true : options.clear; var timeout = options.timeout === undefined ? 10 : options.timeout; var verbosity = options.verbosity === undefined ? 0 : options.verbosity; +function hashed_user_password() +{ + return sha1_calc(user.security.password + + user.number + + user.stats.firston_date + + (options.salt || system.qwk_id) + , /* hex: */true); +} + for(var i = 0; i < argv.length; i++) { var arg = argv[i]; if(arg[0] != '-') { @@ -70,6 +80,10 @@ for(var i = 0; i < argv.length; i++) { case 'v': ++verbosity; continue; + case 'h': // send alias and hashed-password + client_name = hashed_user_password(); + server_name = user.alias; + continue; case 'p': // send alias and password as expected by Synchronet client_name = user.security.password; server_name = user.alias;