From f7835e7f60a961c0820cbae57f72008c257052a4 Mon Sep 17 00:00:00 2001 From: ORelio Date: Fri, 23 Aug 2013 10:48:26 +0200 Subject: [PATCH] Added password obfuscation while typing Each character of the password is replaced by a star while typing + Fixed an old typo for "Handshake successfull" (ss -> cc). --- MinecraftClient/ConsoleIO.cs | 42 +++++++++++++++++++++++++++++++++ MinecraftClient/MinecraftCom.cs | 2 +- MinecraftClient/Program.cs | 9 ++++--- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/MinecraftClient/ConsoleIO.cs b/MinecraftClient/ConsoleIO.cs index 6cabce76..b01f1137 100644 --- a/MinecraftClient/ConsoleIO.cs +++ b/MinecraftClient/ConsoleIO.cs @@ -24,6 +24,48 @@ namespace MinecraftClient private static bool writing_lock = false; #region Read User Input + public static string ReadPassword() + { + string password = ""; + ConsoleKeyInfo k = new ConsoleKeyInfo(); + while (k.Key != ConsoleKey.Enter) + { + k = Console.ReadKey(true); + switch (k.Key) + { + case ConsoleKey.Enter: + Console.Write('\n'); + return password; + + case ConsoleKey.Backspace: + if (password.Length > 0) + { + Console.Write("\b \b"); + password = password.Substring(0, password.Length - 1); + } + break; + + case ConsoleKey.Escape: + case ConsoleKey.LeftArrow: + case ConsoleKey.RightArrow: + case ConsoleKey.Home: + case ConsoleKey.End: + case ConsoleKey.Delete: + case ConsoleKey.Oem6: + case ConsoleKey.DownArrow: + case ConsoleKey.UpArrow: + case ConsoleKey.Tab: + break; + + default: + Console.Write('*'); + password += k.KeyChar; + break; + } + } + return password; + } + public static string ReadLine() { if (basicIO) { return Console.ReadLine(); } diff --git a/MinecraftClient/MinecraftCom.cs b/MinecraftClient/MinecraftCom.cs index 0eff1752..71c7d465 100644 --- a/MinecraftClient/MinecraftCom.cs +++ b/MinecraftClient/MinecraftCom.cs @@ -656,7 +656,7 @@ namespace MinecraftClient var PublicServerkey = Crypto.GenerateRSAPublicKey(Serverkey_RAW); var SecretKey = Crypto.GenerateAESPrivateKey(); Console.ForegroundColor = ConsoleColor.DarkGray; - Console.WriteLine("Handshake sussessful. (Server ID: " + serverID + ')'); + Console.WriteLine("Handshake successful. (Server ID: " + serverID + ')'); Console.ForegroundColor = ConsoleColor.Gray; return StartEncryption(username, sessionID, token, serverID, PublicServerkey, SecretKey); } diff --git a/MinecraftClient/Program.cs b/MinecraftClient/Program.cs index 2bf581cc..29fa2482 100644 --- a/MinecraftClient/Program.cs +++ b/MinecraftClient/Program.cs @@ -157,13 +157,12 @@ namespace MinecraftClient if (Settings.Password == "") { Console.Write(ConsoleIO.basicIO ? "Please type the password for " + Settings.Login + ".\n" : "Password : "); - Settings.Password = Console.ReadLine(); - + Settings.Password = ConsoleIO.basicIO ? Console.ReadLine() : ConsoleIO.ReadPassword(); + if (Settings.Password == "") { Settings.Password = "-"; } if (!ConsoleIO.basicIO) { - //Hide the password - Console.CursorTop--; - Console.Write("Password : <******>"); + //Hide password length + Console.CursorTop--; Console.Write("Password : <******>"); for (int i = 19; i < Console.BufferWidth; i++) { Console.Write(' '); } } }