Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- from twisted.conch.telnet import TelnetTransport, TelnetProtocol, ECHO
- from twisted.internet.protocol import ServerFactory
- from twisted.application.internet import TCPServer
- from twisted.application.service import Application
- from twisted.internet import reactor
- import logging
- class TelnetEcho(TelnetProtocol):
- ip = ''
- user = ''
- state = ''
- line = ''
- def connectionMade(self):
- self.ip = self.transport.getPeer().host
- self.transport.write('Username: ')
- self.transport.will(ECHO)
- self.state = 'User'
- def dataReceived(self, data):
- if self.state != 'Password':
- self.transport.write(data)
- self.line += data
- if data == 'n':
- self.processLine()
- self.line = ''
- return
- def processLine(self):
- if self.state == 'User':
- self.user = self.line.strip()
- self.transport.write('Password: ')
- self.state = 'Password'
- elif self.state == 'Password':
- print 'IP: ' + self.ip + ', user:' + self.user + ', pass:' + self.line.strip()
- logging.info(self.ip + ',' + self.user + ',' + self.line.strip())
- self.transport.write('rnIncorrect password or username.rn')
- self.transport.write('Username: ')
- self.state = 'User'
- def CreateMyFactory():
- factory = ServerFactory()
- factory.protocol = lambda: TelnetTransport(TelnetEcho)
- return factory
- if __name__ == "__main__":
- logging.basicConfig(filename='telnet.log', format='%(message)s', level=logging.DEBUG)
- logging.info('Tmestamp,IP,Username,Password')
- for handler in logging.root.handlers[:]:
- logging.root.removeHandler(handler)
- logging.basicConfig(filename='telnet.log', format='%(asctime)s,%(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG)
- MyFactory = CreateMyFactory()
- reactor.listenTCP(23, MyFactory)
- reactor.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement