With IronPython, this

import getpass
pwd = getpass.getpass()

do'nt work properly, because the password will be echoed.

I worked about this problem. The NET-platform probably doesn't have a direct function for getting password from console.
I found only this C# example http://www.harper.no/valery/content/binary/ProtectData.cs.txt
and wrote a simple module net_getpass.py which contains a function getpass().
For those who have the same problem, here is the source:

------------------------------------------------------------ source -------------------------------------------------------------------------------
'''
Module net_getpass
Getting password from console in IronPython (Python.NET)

Author: Roman Miklos ([EMAIL PROTECTED])
'''
import clr
import System
from System import Console


def getpass(prompt="Password:"):
  '''Read Password from Console without echo'''
  # Prompt
  Console.Write(prompt)
  # create Instance of ConsoleKeyInfo
  key = System.ConsoleKeyInfo()
  # initialize vars
  pwd =""
  EnterPressed = False
  # Read while input not ends
  while not EnterPressed:
    key = Console.ReadKey(True)
    if key.Key == System.ConsoleKey.Enter:
      # End of Input
      EnterPressed = True
     
    elif key.Key == System.ConsoleKey.Backspace:
      if len(pwd)>0:
        # Clear last character in password              
        pwd = pwd[:-1]
        Console.Write(key.KeyChar)
        Console.Write(" ")
        Console.Write(key.KeyChar)
      else:
        Console.Beep()
       
    else:
      pwd += key.KeyChar
      Console.Write("*")
     
  # Next line
  Console.WriteLine()
  # return password
  return (pwd)

################################################################################
# Module Test
################################################################################
if __name__ == "__main__":
  print "Your Password is: %s" % getpass("Enter your password please:")

------------------------------------------------------------------ end of source -------------------------------------------------------------------------

However I don't make usage of .NET SecureString() object in my module as showed in above C# example,
but for simplicity I used only normal python string.
Mgr. Ing. Roman MIKLÓŠ
Prvá stavebná sporiteľňa a.s.
Bajkalská 30, P. O. Box 48
829 48  Bratislava 25
Tel.: +421/ 2 / 582 31 174
Fax: +421/ 2 / 582 31 109
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to