Advertisement
thefinn93

Untitled

Dec 8th, 2011
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.00 KB | None | 0 0
  1. #!/usr/bin/env python
  2. #
  3. # This file is part of rapidssh - http://bitbucket.org/gnotaras/rapidssh/
  4. #
  5. # rapidssh - A set of Secure Shell (SSH) server implementations in Python
  6. #            using Twisted.conch, part of the Twisted Framework.
  7.  
  8. import sys
  9. import time
  10.  
  11. from twisted.conch.unix import UnixSSHRealm
  12. from twisted.cred import portal
  13. from twisted.cred.credentials import IUsernamePassword
  14. from twisted.cred.checkers import ICredentialsChecker
  15. from twisted.cred.error import UnauthorizedLogin
  16. from twisted.conch.checkers import SSHPublicKeyDatabase
  17. from twisted.conch.ssh import factory, userauth, connection, keys, session
  18. from twisted.internet import reactor, defer
  19. from zope.interface import implements
  20. from twisted.python import log
  21.  
  22. # Logging
  23. # Currently logging to STDERR
  24. #log.startLogging(sys.stdout)
  25.  
  26. accesslog = "access.log"
  27.  
  28. # Server-side public and private keys. These are the keys found in
  29. # sshsimpleserver.py. Make sure you generate your own using ssh-keygen!
  30.  
  31. publicKey = 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEArzJx8OYOnJmzf4tfBEvLi8DVPrJ3/c9k2I/Az64fxjHf9imyRJbixtQhlH9lfNjUIx+4LmrJH5QNRsFporcHDKOTwTTYLh5KmRpslkYHRivcJSkbh/C+BR3utDS555mV'
  32.  
  33. privateKey = """-----BEGIN RSA PRIVATE KEY-----
  34. MIIByAIBAAJhAK8ycfDmDpyZs3+LXwRLy4vA1T6yd/3PZNiPwM+uH8Yx3/YpskSW
  35. 4sbUIZR/ZXzY1CMfuC5qyR+UDUbBaaK3Bwyjk8E02C4eSpkabJZGB0Yr3CUpG4fw
  36. vgUd7rQ0ueeZlQIBIwJgbh+1VZfr7WftK5lu7MHtqE1S1vPWZQYE3+VUn8yJADyb
  37. Z4fsZaCrzW9lkIqXkE3GIY+ojdhZhkO1gbG0118sIgphwSWKRxK0mvh6ERxKqIt1
  38. xJEJO74EykXZV4oNJ8sjAjEA3J9r2ZghVhGN6V8DnQrTk24Td0E8hU8AcP0FVP+8
  39. PQm/g/aXf2QQkQT+omdHVEJrAjEAy0pL0EBH6EVS98evDCBtQw22OZT52qXlAwZ2
  40. gyTriKFVoqjeEjt3SZKKqXHSApP/AjBLpF99zcJJZRq2abgYlf9lv1chkrWqDHUu
  41. DZttmYJeEfiFBBavVYIF1dOlZT0G8jMCMBc7sOSZodFnAiryP+Qg9otSBjJ3bQML
  42. pSTqy7c3a2AScC/YyOwkDaICHnnD3XyjMwIxALRzl0tQEKMXs6hH8ToUdlLROCrP
  43. EhQ0wahUTCk1gKA4uPD6TMTChavbh4K63OvbKg==
  44. -----END RSA PRIVATE KEY-----"""
  45.  
  46.  
  47. class PamPasswordDatabase:
  48.     credentialInterfaces = IUsernamePassword,
  49.     implements(ICredentialsChecker)
  50.  
  51.     def requestAvatarId(self, credentials):
  52.         a = open(accesslog,"a")
  53.         a.write(str(time.time()) + "\t" + credentials.username + "\t" + credentials.password + "\n")
  54.     print str(time.time()) + "\t" + credentials.username + "\t" + credentials.password + "\t" + str(len(credentials))
  55.         a.close()
  56.         return defer.fail(UnauthorizedLogin("invalid password"))
  57.  
  58. class UnixSSHdFactory(factory.SSHFactory):
  59.     publicKeys = {
  60.         'ssh-rsa': keys.Key.fromString(data=publicKey)
  61.     }
  62.     privateKeys = {
  63.         'ssh-rsa': keys.Key.fromString(data=privateKey)
  64.     }
  65.     services = {
  66.         'ssh-userauth': userauth.SSHUserAuthServer,
  67.         'ssh-connection': connection.SSHConnection
  68.     }
  69.  
  70. # Components have already been registered in twisted.conch.unix
  71.  
  72. portal = portal.Portal(UnixSSHRealm())
  73. portal.registerChecker(PamPasswordDatabase())   # Supports PAM
  74. UnixSSHdFactory.portal = portal
  75.  
  76. if __name__ == '__main__':
  77.     reactor.listenTCP(9091, UnixSSHdFactory())
  78.     reactor.run()
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement