1234567891011121314151617181920212223242526272829303132333435363738 |
- # Demonstrates how to validate a password.
- # See also MSKB article Q180548
- #
- # To use with Kerberos you need to jump through the 'targetspn' hoops.
- import win32security
- import sys
- from sspi import ClientAuth, ServerAuth
- def validate(username, password, domain = ""):
- auth_info = username, domain, password
- ca = ClientAuth("NTLM", auth_info = auth_info)
- sa = ServerAuth("NTLM")
-
- data = err = None
- while err != 0:
- err, data = ca.authorize(data)
- err, data = sa.authorize(data)
- # If we get here without exception, we worked!
- if __name__=='__main__':
- if len(sys.argv) not in [2,3,4]:
- print "Usage: %s username [password [domain]]" % (__file__,)
- sys.exit(1)
- # password and domain are optional!
- password = None
- if len(sys.argv)>=3:
- password = sys.argv[2]
- domain = ""
- if len(sys.argv)>=4:
- domain = sys.argv[3]
- try:
- validate(sys.argv[1], password, domain)
- print "Validated OK"
- except win32security.error, details:
- hr, func, msg = details
- print "Validation failed: %s (%d)" % (msg, hr)
|