diff --git a/Lib/getpass.py b/Lib/getpass.py
new file mode 100644
index 0000000..44e78c2
--- /dev/null
+++ b/Lib/getpass.py
@@ -0,0 +1,79 @@
+"""Utilities to get a password and/or the current user name.
+
+getpass(prompt) - prompt for a password, with echo turned off
+getuser() - get the user name from the environment or password database
+
+Authors: Piers Lauder (original)
+         Guido van Rossum (Windows support and cleanup)
+"""
+
+
+def getpass(prompt='Password: '):
+	"""Prompt for a password, with echo turned off.
+
+	Restore terminal settings at end.
+
+	On Windows, this calls win_getpass(prompt) which uses the
+	msvcrt module to get the same effect.
+
+	"""
+
+	import sys
+	try:
+		import termios, TERMIOS
+	except ImportError:
+		return win_getpass(prompt)
+
+	fd = sys.stdin.fileno()
+	old = termios.tcgetattr(fd)	# a copy to save
+	new = old[:]
+
+	new[3] = new[3] & ~TERMIOS.ECHO	# 3 == 'lflags'
+	try:
+		termios.tcsetattr(fd, TERMIOS.TCSADRAIN, new)
+		try: passwd = raw_input(prompt)
+		except KeyboardInterrupt: passwd = None
+	finally:
+		termios.tcsetattr(fd, TERMIOS.TCSADRAIN, old)
+
+	sys.stdout.write('\n')
+	return passwd
+
+
+def win_getpass(prompt='Password: '):
+	"""Prompt for password with echo off, using Windows getch()."""
+	import msvcrt
+	for c in prompt:
+		msvcrt.putch(c)
+	pw = ""
+	while 1:
+		c = msvcrt.getch()
+		if c == '\r' or c == '\n':
+			break
+		if c == '\b':
+			pw = pw[:-1]
+		else:
+			pw = pw + c
+	msvcrt.putch('\r')
+	msvcrt.putch('\n')
+	return pw
+
+
+def getuser():
+	"""Get the username from the environment or password database.
+
+	First try various environment variables, then the password
+	database.  This works on Windows as long as USERNAME is set.
+
+	"""
+
+	import os
+
+	for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
+		user = os.environ.get(name)
+		if user:
+			return user
+
+	# If this fails, the exception will "explain" why
+	import pwd
+	return pwd.getpwuid(os.getuid())[0]
