mirror of
https://github.com/cowrie/cowrie.git
synced 2025-07-01 18:07:27 -04:00
Merge branch 'master' of https://github.com/cowrie/cowrie
This commit is contained in:
@ -11,3 +11,4 @@ service_identity==18.1.0
|
|||||||
python-dateutil==2.8.0
|
python-dateutil==2.8.0
|
||||||
tftpy==0.8.0
|
tftpy==0.8.0
|
||||||
bcrypt==3.1.7
|
bcrypt==3.1.7
|
||||||
|
treq
|
||||||
|
|||||||
@ -2,20 +2,21 @@ from twisted.conch.ssh import channel, common, connection, transport, userauth
|
|||||||
from twisted.internet import defer, protocol, reactor
|
from twisted.internet import defer, protocol, reactor
|
||||||
|
|
||||||
|
|
||||||
class PasswordAuth(userauth.SSHUserAuthClient):
|
# object is added for Python 2.7 compatibility (#1198) - as is super with args
|
||||||
|
class PasswordAuth(userauth.SSHUserAuthClient, object):
|
||||||
def __init__(self, user, password, conn):
|
def __init__(self, user, password, conn):
|
||||||
super().__init__(user, conn)
|
super(PasswordAuth, self).__init__(user, conn)
|
||||||
self.password = password
|
self.password = password
|
||||||
|
|
||||||
def getPassword(self, prompt=None):
|
def getPassword(self, prompt=None):
|
||||||
return defer.succeed(self.password)
|
return defer.succeed(self.password)
|
||||||
|
|
||||||
|
|
||||||
class CommandChannel(channel.SSHChannel):
|
class CommandChannel(channel.SSHChannel, object):
|
||||||
name = 'session'
|
name = 'session'
|
||||||
|
|
||||||
def __init__(self, command, done_deferred, callback, *args, **kwargs):
|
def __init__(self, command, done_deferred, callback, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super(CommandChannel, self).__init__(*args, **kwargs)
|
||||||
self.command = command
|
self.command = command
|
||||||
self.done_deferred = done_deferred
|
self.done_deferred = done_deferred
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
@ -40,9 +41,9 @@ class CommandChannel(channel.SSHChannel):
|
|||||||
self.callback(self.data)
|
self.callback(self.data)
|
||||||
|
|
||||||
|
|
||||||
class ClientConnection(connection.SSHConnection):
|
class ClientConnection(connection.SSHConnection, object):
|
||||||
def __init__(self, cmd, done_deferred, callback):
|
def __init__(self, cmd, done_deferred, callback):
|
||||||
super().__init__()
|
super(ClientConnection, self).__init__()
|
||||||
self.command = cmd
|
self.command = cmd
|
||||||
self.done_deferred = done_deferred
|
self.done_deferred = done_deferred
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
|
|||||||
@ -7,7 +7,7 @@ from twisted.python import log
|
|||||||
from cowrie.core.artifact import Artifact
|
from cowrie.core.artifact import Artifact
|
||||||
from cowrie.core.config import CowrieConfig
|
from cowrie.core.config import CowrieConfig
|
||||||
from cowrie.shell.command import HoneyPotCommand
|
from cowrie.shell.command import HoneyPotCommand
|
||||||
from cowrie.shell.customparser import CustomParser, OptionNotFound
|
from cowrie.shell.customparser import CustomParser
|
||||||
|
|
||||||
commands = {}
|
commands = {}
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ class command_tftp(HoneyPotCommand):
|
|||||||
if len(args.c) > 1:
|
if len(args.c) > 1:
|
||||||
self.file_to_get = args.c[1]
|
self.file_to_get = args.c[1]
|
||||||
if args.hostname is None:
|
if args.hostname is None:
|
||||||
raise OptionNotFound("Hostname is invalid")
|
self.exit()
|
||||||
self.hostname = args.hostname
|
self.hostname = args.hostname
|
||||||
|
|
||||||
elif args.r:
|
elif args.r:
|
||||||
@ -102,10 +102,10 @@ class command_tftp(HoneyPotCommand):
|
|||||||
self.hostname = args.g
|
self.hostname = args.g
|
||||||
else:
|
else:
|
||||||
parser.print_usage()
|
parser.print_usage()
|
||||||
raise OptionNotFound("Missing!!")
|
self.exit()
|
||||||
|
|
||||||
if self.hostname is None:
|
if self.hostname is None:
|
||||||
raise OptionNotFound("Hostname is invalid")
|
self.exit()
|
||||||
|
|
||||||
if self.hostname.find(':') != -1:
|
if self.hostname.find(':') != -1:
|
||||||
host, port = self.hostname.split(':')
|
host, port = self.hostname.split(':')
|
||||||
|
|||||||
@ -24,7 +24,8 @@ from cowrie.ssh_proxy import server_transport as proxyTransport
|
|||||||
from cowrie.ssh_proxy.userauth import ProxySSHAuthServer
|
from cowrie.ssh_proxy.userauth import ProxySSHAuthServer
|
||||||
|
|
||||||
|
|
||||||
class CowrieSSHFactory(factory.SSHFactory):
|
# object is added for Python 2.7 compatibility (#1198) - as is super with args
|
||||||
|
class CowrieSSHFactory(factory.SSHFactory, object):
|
||||||
"""
|
"""
|
||||||
This factory creates HoneyPotSSHTransport instances
|
This factory creates HoneyPotSSHTransport instances
|
||||||
They listen directly to the TCP port
|
They listen directly to the TCP port
|
||||||
@ -48,7 +49,7 @@ class CowrieSSHFactory(factory.SSHFactory):
|
|||||||
b'ssh-userauth': ProxySSHAuthServer if self.backend == 'proxy' else HoneyPotSSHUserAuthServer,
|
b'ssh-userauth': ProxySSHAuthServer if self.backend == 'proxy' else HoneyPotSSHUserAuthServer,
|
||||||
b'ssh-connection': connection.CowrieSSHConnection,
|
b'ssh-connection': connection.CowrieSSHConnection,
|
||||||
}
|
}
|
||||||
super().__init__()
|
super(CowrieSSHFactory, self).__init__()
|
||||||
|
|
||||||
def logDispatch(self, *msg, **args):
|
def logDispatch(self, *msg, **args):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -8,9 +8,10 @@ from twisted.conch.ssh.common import getNS
|
|||||||
from cowrie.ssh import userauth
|
from cowrie.ssh import userauth
|
||||||
|
|
||||||
|
|
||||||
class ProxySSHAuthServer(userauth.HoneyPotSSHUserAuthServer):
|
# object is added for Python 2.7 compatibility (#1198) - as is super with args
|
||||||
|
class ProxySSHAuthServer(userauth.HoneyPotSSHUserAuthServer, object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super(ProxySSHAuthServer, self).__init__()
|
||||||
self.triedPassword = None
|
self.triedPassword = None
|
||||||
|
|
||||||
def auth_password(self, packet):
|
def auth_password(self, packet):
|
||||||
@ -19,7 +20,7 @@ class ProxySSHAuthServer(userauth.HoneyPotSSHUserAuthServer):
|
|||||||
"""
|
"""
|
||||||
self.triedPassword = getNS(packet[1:])[0]
|
self.triedPassword = getNS(packet[1:])[0]
|
||||||
|
|
||||||
return super().auth_password(packet)
|
return super(ProxySSHAuthServer, self).auth_password(packet)
|
||||||
|
|
||||||
def _cbFinishedAuth(self, result):
|
def _cbFinishedAuth(self, result):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -19,7 +19,8 @@ from cowrie.telnet.userauth import HoneyPotTelnetAuthProtocol
|
|||||||
from cowrie.telnet_proxy.server_transport import FrontendTelnetTransport
|
from cowrie.telnet_proxy.server_transport import FrontendTelnetTransport
|
||||||
|
|
||||||
|
|
||||||
class HoneyPotTelnetFactory(protocol.ServerFactory):
|
# object is added for Python 2.7 compatibility (#1198) - as is super with args
|
||||||
|
class HoneyPotTelnetFactory(protocol.ServerFactory, object):
|
||||||
"""
|
"""
|
||||||
This factory creates HoneyPotTelnetAuthProtocol instances
|
This factory creates HoneyPotTelnetAuthProtocol instances
|
||||||
They listen directly to the TCP port
|
They listen directly to the TCP port
|
||||||
@ -32,7 +33,7 @@ class HoneyPotTelnetFactory(protocol.ServerFactory):
|
|||||||
def __init__(self, backend, pool_handler):
|
def __init__(self, backend, pool_handler):
|
||||||
self.backend = backend
|
self.backend = backend
|
||||||
self.pool_handler = pool_handler
|
self.pool_handler = pool_handler
|
||||||
super().__init__()
|
super(HoneyPotTelnetFactory, self).__init__()
|
||||||
|
|
||||||
# TODO logging clarity can be improved: see what SSH does
|
# TODO logging clarity can be improved: see what SSH does
|
||||||
def logDispatch(self, *msg, **args):
|
def logDispatch(self, *msg, **args):
|
||||||
|
|||||||
@ -7,7 +7,8 @@ from twisted.protocols.policies import TimeoutMixin
|
|||||||
from twisted.python import log
|
from twisted.python import log
|
||||||
|
|
||||||
|
|
||||||
class BackendTelnetTransport(TelnetTransport, TimeoutMixin):
|
# object is added for Python 2.7 compatibility (#1198) - as is super with args
|
||||||
|
class BackendTelnetTransport(TelnetTransport, TimeoutMixin, object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# self.delayedPacketsToFrontend = []
|
# self.delayedPacketsToFrontend = []
|
||||||
self.backendConnected = False
|
self.backendConnected = False
|
||||||
@ -26,7 +27,7 @@ class BackendTelnetTransport(TelnetTransport, TimeoutMixin):
|
|||||||
self.transport.write(packet)
|
self.transport.write(packet)
|
||||||
self.factory.server.delayedPacketsToBackend = []
|
self.factory.server.delayedPacketsToBackend = []
|
||||||
|
|
||||||
super().connectionMade()
|
super(TelnetTransport, self).connectionMade()
|
||||||
# TODO timeout if no backend available
|
# TODO timeout if no backend available
|
||||||
|
|
||||||
def connectionLost(self, reason):
|
def connectionLost(self, reason):
|
||||||
|
|||||||
@ -21,9 +21,10 @@ from cowrie.telnet_proxy import client_transport
|
|||||||
from cowrie.telnet_proxy.handler import TelnetHandler
|
from cowrie.telnet_proxy.handler import TelnetHandler
|
||||||
|
|
||||||
|
|
||||||
class FrontendTelnetTransport(TelnetTransport, TimeoutMixin):
|
# object is added for Python 2.7 compatibility (#1198) - as is super with args
|
||||||
|
class FrontendTelnetTransport(TelnetTransport, TimeoutMixin, object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super(FrontendTelnetTransport, self).__init__()
|
||||||
|
|
||||||
self.peer_ip = None
|
self.peer_ip = None
|
||||||
self.peer_port = 0
|
self.peer_port = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user