Index: binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs	(revision 183)
+++ binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/Telnet.cs	(revision 184)
@@ -39,8 +39,12 @@
 		}
 
+		public void FailedLogins ()
+		{
+		}
+
 		private void AcceptClient (IAsyncResult asyncResult)
 		{
 			if (listener.Server.IsBound) {
-				TelnetConnection c = new TelnetConnection (listener.EndAcceptTcpClient (asyncResult), authEnabled);
+				TelnetConnection c = new TelnetConnection (this, listener.EndAcceptTcpClient (asyncResult), authEnabled);
 				connections.Add (c);
 				listener.BeginAcceptTcpClient (new AsyncCallback (AcceptClient), null);
Index: binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs	(revision 183)
+++ binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs	(revision 184)
@@ -11,15 +11,19 @@
 	public class TelnetConnection : IConnection
 	{
-		BlockingQueue<string> toClientQueue = new BlockingQueue<string> ();
-		private Thread receiveThread = null;
-		private Thread sendThread = null;
+		private readonly BlockingQueue<string> toClientQueue = new BlockingQueue<string> ();
+		private readonly Telnet owner;
+		private readonly Thread receiveThread = null;
+		private readonly Thread sendThread = null;
+		private int authTries = 0;
 		private bool authenticated = false;
-		private bool authEnabled;
+		private readonly bool authEnabled;
 		private TcpClient client;
-		private NetworkStream stream;
-		private EndPoint endpoint;
+		private readonly NetworkStream stream;
+		private readonly EndPoint endpoint;
+		private readonly int endpointAddressHash;
 
-		public TelnetConnection (TcpClient client, bool authEnabled)
+		public TelnetConnection (Telnet owner, TcpClient client, bool authEnabled)
 		{
+			this.owner = owner;
 			this.authEnabled = authEnabled;
 			this.client = client;
@@ -33,4 +37,11 @@
 			sendThread = ThreadMaster.Create ("TelnetClientSend", new ThreadStart (SendThread));
 			sendThread.Start ();
+
+			if (endpoint is IPEndPoint) {
+				endpointAddressHash = ((IPEndPoint)endpoint).Address.GetHashCode();
+				Log.Out ("Hash: " + endpointAddressHash);
+			} else {
+				Log.Out ("EndPoint is not an IPEndPoint but: " + endpoint.GetType().ToString());
+			}
 
 			if (authEnabled) {
@@ -80,5 +91,15 @@
 									LoginMessage ();
 								} else {
-									WriteLine ("Password incorrect, please enter password:");
+									authTries++;
+									// TODO: check if IP has more login attempts by now
+									if (authTries < 3) {
+										WriteLine ("Password incorrect, please enter password:");
+									} else {
+										WriteLine ("Too many failed login attempts!");
+										Log.Out ("Telnet connection closed for too many login attempts: " + endpoint);
+										//TODO: owner.FailedLogins();
+										Close ();
+										break;
+									}
 								}
 							} else {
