ReverseShell (version 0.0.1)
index
reverseshell.py

This package implements an advanced reverse shell
console (supports: TCP, UDP, IRC, HTTP and DNS).

 
Classes
       
builtins.object
ReverseShellSocketTcp
cmd.Cmd(builtins.object)
ReverseShell(cmd.Cmd, socketserver.BaseRequestHandler)
DnsReverseShell
HttpReverseShell
IrcReverseShell
socketserver.BaseRequestHandler(builtins.object)
ReverseShell(cmd.Cmd, socketserver.BaseRequestHandler)
DnsReverseShell
HttpReverseShell
IrcReverseShell
socketserver.TCPServer(socketserver.BaseServer)
ReverseShellTcp
socketserver.UDPServer(socketserver.TCPServer)
ReverseShellUdp

 
class DnsReverseShell(ReverseShell)
    DnsReverseShell(*args, key: bytes = None, encoding: str = 'cp437')
 
This class implements a reverse shell using DNS (UDP).
 
 
Method resolution order:
DnsReverseShell
ReverseShell
cmd.Cmd
socketserver.BaseRequestHandler
builtins.object

Methods defined here:
default(self, data: str) -> None
This method generates HTTP response.
parse_data(self, data: bytes) -> str
This method parses DNS requests.

Data and other attributes defined here:
__annotations__ = {}

Methods inherited from ReverseShell:
__init__(self, *args, key: bytes = None, encoding: str = 'cp437')
Instantiate a line-oriented interpreter framework.
 
The optional argument 'completekey' is the readline name of a
completion key; it defaults to the Tab key. If completekey is
not None and the readline module is available, command completion
is done automatically. The optional arguments stdin and stdout
specify alternate input and output file objects; if not specified,
sys.stdin and sys.stdout are used.
completedefault = completenames(self, text: str, line: str, begidx: int, endidx: int) -> List[str]
completenames(self, text: str, line: str, begidx: int, endidx: int) -> List[str]
This function returns the default list for completion.
defined_context(self, data: Dict[str, ~Json]) -> None
This function sets context.
do_exit(self, arg: str) -> bool
This method exits the reverse shell.
do_quit(self, arg: str) -> bool
This method quits the reverse shell.
encrypt(self, data: bytes, decrypt: bool = False) -> bytes
This method encrypts/decrypts data with RC4.
handle(self) -> None
This methods gets TCP data and send it.
init_key(self, key_text: bytes) -> bytes
This method sets RC4 key.
postcmd(self, stop: bool, line: str) -> bool
This function stop the cmdloop for each packet sended.
recv(self) -> bytes
This method gets all packets sent.

Data and other attributes inherited from ReverseShell:
color = True
prompt = '~$ '

Methods inherited from cmd.Cmd:
cmdloop(self, intro=None)
Repeatedly issue a prompt, accept input, parse an initial prefix
off the received input, and dispatch to action methods, passing them
the remainder of the line as argument.
columnize(self, list, displaywidth=80)
Display a list of strings as a compact set of columns.
 
Each column is only as wide as necessary.
Columns are separated by two spaces (one was not legible enough).
complete(self, text, state)
Return the next possible completion for 'text'.
 
If a command has not been entered, then complete against command list.
Otherwise try to call complete_<command> to get list of completions.
complete_help(self, *args)
do_help(self, arg)
List available commands with "help" or detailed help with "help cmd".
emptyline(self)
Called when an empty line is entered in response to the prompt.
 
If this method is not overridden, it repeats the last nonempty
command entered.
get_names(self)
onecmd(self, line)
Interpret the argument as though it had been typed in response
to the prompt.
 
This may be overridden, but should not normally need to be;
see the precmd() and postcmd() methods for useful execution hooks.
The return value is a flag indicating whether interpretation of
commands by the interpreter should stop.
parseline(self, line)
Parse the line into a command name and a string containing
the arguments.  Returns a tuple containing (command, args, line).
'command' and 'args' may be None if the line couldn't be parsed.
postloop(self)
Hook method executed once when the cmdloop() method is about to
return.
precmd(self, line)
Hook method executed just before the command line is
interpreted, but after the input prompt is generated and issued.
preloop(self)
Hook method executed once when the cmdloop() method is called.
print_topics(self, header, cmds, cmdlen, maxcol)

Data descriptors inherited from cmd.Cmd:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from cmd.Cmd:
doc_header = 'Documented commands (type help <topic>):'
doc_leader = ''
identchars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
intro = None
lastcmd = ''
misc_header = 'Miscellaneous help topics:'
nohelp = '*** No help on %s'
ruler = '='
undoc_header = 'Undocumented commands:'
use_rawinput = 1

Methods inherited from socketserver.BaseRequestHandler:
finish(self)
setup(self)

 
class HttpReverseShell(ReverseShell)
    HttpReverseShell(*args, key: bytes = None, encoding: str = 'cp437')
 
This class implements a reverse shell using HTTP.
 
 
Method resolution order:
HttpReverseShell
ReverseShell
cmd.Cmd
socketserver.BaseRequestHandler
builtins.object

Methods defined here:
default(self, data: str) -> None
This method generates HTTP response.
parse_data(self, data: bytes) -> str
This method parses HTTP requests.

Data and other attributes defined here:
__annotations__ = {}

Methods inherited from ReverseShell:
__init__(self, *args, key: bytes = None, encoding: str = 'cp437')
Instantiate a line-oriented interpreter framework.
 
The optional argument 'completekey' is the readline name of a
completion key; it defaults to the Tab key. If completekey is
not None and the readline module is available, command completion
is done automatically. The optional arguments stdin and stdout
specify alternate input and output file objects; if not specified,
sys.stdin and sys.stdout are used.
completedefault = completenames(self, text: str, line: str, begidx: int, endidx: int) -> List[str]
completenames(self, text: str, line: str, begidx: int, endidx: int) -> List[str]
This function returns the default list for completion.
defined_context(self, data: Dict[str, ~Json]) -> None
This function sets context.
do_exit(self, arg: str) -> bool
This method exits the reverse shell.
do_quit(self, arg: str) -> bool
This method quits the reverse shell.
encrypt(self, data: bytes, decrypt: bool = False) -> bytes
This method encrypts/decrypts data with RC4.
handle(self) -> None
This methods gets TCP data and send it.
init_key(self, key_text: bytes) -> bytes
This method sets RC4 key.
postcmd(self, stop: bool, line: str) -> bool
This function stop the cmdloop for each packet sended.
recv(self) -> bytes
This method gets all packets sent.

Data and other attributes inherited from ReverseShell:
color = True
prompt = '~$ '

Methods inherited from cmd.Cmd:
cmdloop(self, intro=None)
Repeatedly issue a prompt, accept input, parse an initial prefix
off the received input, and dispatch to action methods, passing them
the remainder of the line as argument.
columnize(self, list, displaywidth=80)
Display a list of strings as a compact set of columns.
 
Each column is only as wide as necessary.
Columns are separated by two spaces (one was not legible enough).
complete(self, text, state)
Return the next possible completion for 'text'.
 
If a command has not been entered, then complete against command list.
Otherwise try to call complete_<command> to get list of completions.
complete_help(self, *args)
do_help(self, arg)
List available commands with "help" or detailed help with "help cmd".
emptyline(self)
Called when an empty line is entered in response to the prompt.
 
If this method is not overridden, it repeats the last nonempty
command entered.
get_names(self)
onecmd(self, line)
Interpret the argument as though it had been typed in response
to the prompt.
 
This may be overridden, but should not normally need to be;
see the precmd() and postcmd() methods for useful execution hooks.
The return value is a flag indicating whether interpretation of
commands by the interpreter should stop.
parseline(self, line)
Parse the line into a command name and a string containing
the arguments.  Returns a tuple containing (command, args, line).
'command' and 'args' may be None if the line couldn't be parsed.
postloop(self)
Hook method executed once when the cmdloop() method is about to
return.
precmd(self, line)
Hook method executed just before the command line is
interpreted, but after the input prompt is generated and issued.
preloop(self)
Hook method executed once when the cmdloop() method is called.
print_topics(self, header, cmds, cmdlen, maxcol)

Data descriptors inherited from cmd.Cmd:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from cmd.Cmd:
doc_header = 'Documented commands (type help <topic>):'
doc_leader = ''
identchars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
intro = None
lastcmd = ''
misc_header = 'Miscellaneous help topics:'
nohelp = '*** No help on %s'
ruler = '='
undoc_header = 'Undocumented commands:'
use_rawinput = 1

Methods inherited from socketserver.BaseRequestHandler:
finish(self)
setup(self)

 
class IrcReverseShell(ReverseShell)
    IrcReverseShell(*args, key: bytes = None, encoding: str = 'cp437')
 
This class implements a fake IRC server for a reverse shell.
 
 
Method resolution order:
IrcReverseShell
ReverseShell
cmd.Cmd
socketserver.BaseRequestHandler
builtins.object

Methods defined here:
default(self, data: str) -> None
This method generates IRC response.
parse_data = parse_data_step0(self, data: bytes) -> str
parse_data_step0(self, data: bytes) -> str
This method parses the USER IRC command (first packet
for IRC initialization).
parse_data_step1(self, data: bytes) -> str
This method parses the NICK IRC command (second packet
for IRC initialization).
parse_data_step2(self, data: bytes) -> str
This method parses the JOIN IRC command (third packet
for IRC initialization).
parse_data_step3(self, data: bytes) -> str
This method parses the JOIN IRC command (third packet
for IRC initialization).
parse_data_step4(self, data: bytes) -> str
This method parses the PRIVMSG IRC packets used for reverse shell.

Static methods defined here:
random_message() -> bytes
This method generates a random message.

Data and other attributes defined here:
__annotations__ = {}

Methods inherited from ReverseShell:
__init__(self, *args, key: bytes = None, encoding: str = 'cp437')
Instantiate a line-oriented interpreter framework.
 
The optional argument 'completekey' is the readline name of a
completion key; it defaults to the Tab key. If completekey is
not None and the readline module is available, command completion
is done automatically. The optional arguments stdin and stdout
specify alternate input and output file objects; if not specified,
sys.stdin and sys.stdout are used.
completedefault = completenames(self, text: str, line: str, begidx: int, endidx: int) -> List[str]
completenames(self, text: str, line: str, begidx: int, endidx: int) -> List[str]
This function returns the default list for completion.
defined_context(self, data: Dict[str, ~Json]) -> None
This function sets context.
do_exit(self, arg: str) -> bool
This method exits the reverse shell.
do_quit(self, arg: str) -> bool
This method quits the reverse shell.
encrypt(self, data: bytes, decrypt: bool = False) -> bytes
This method encrypts/decrypts data with RC4.
handle(self) -> None
This methods gets TCP data and send it.
init_key(self, key_text: bytes) -> bytes
This method sets RC4 key.
postcmd(self, stop: bool, line: str) -> bool
This function stop the cmdloop for each packet sended.
recv(self) -> bytes
This method gets all packets sent.

Data and other attributes inherited from ReverseShell:
color = True
prompt = '~$ '

Methods inherited from cmd.Cmd:
cmdloop(self, intro=None)
Repeatedly issue a prompt, accept input, parse an initial prefix
off the received input, and dispatch to action methods, passing them
the remainder of the line as argument.
columnize(self, list, displaywidth=80)
Display a list of strings as a compact set of columns.
 
Each column is only as wide as necessary.
Columns are separated by two spaces (one was not legible enough).
complete(self, text, state)
Return the next possible completion for 'text'.
 
If a command has not been entered, then complete against command list.
Otherwise try to call complete_<command> to get list of completions.
complete_help(self, *args)
do_help(self, arg)
List available commands with "help" or detailed help with "help cmd".
emptyline(self)
Called when an empty line is entered in response to the prompt.
 
If this method is not overridden, it repeats the last nonempty
command entered.
get_names(self)
onecmd(self, line)
Interpret the argument as though it had been typed in response
to the prompt.
 
This may be overridden, but should not normally need to be;
see the precmd() and postcmd() methods for useful execution hooks.
The return value is a flag indicating whether interpretation of
commands by the interpreter should stop.
parseline(self, line)
Parse the line into a command name and a string containing
the arguments.  Returns a tuple containing (command, args, line).
'command' and 'args' may be None if the line couldn't be parsed.
postloop(self)
Hook method executed once when the cmdloop() method is about to
return.
precmd(self, line)
Hook method executed just before the command line is
interpreted, but after the input prompt is generated and issued.
preloop(self)
Hook method executed once when the cmdloop() method is called.
print_topics(self, header, cmds, cmdlen, maxcol)

Data descriptors inherited from cmd.Cmd:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from cmd.Cmd:
doc_header = 'Documented commands (type help <topic>):'
doc_leader = ''
identchars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
intro = None
lastcmd = ''
misc_header = 'Miscellaneous help topics:'
nohelp = '*** No help on %s'
ruler = '='
undoc_header = 'Undocumented commands:'
use_rawinput = 1

Methods inherited from socketserver.BaseRequestHandler:
finish(self)
setup(self)

 
class ReverseShell(cmd.Cmd, socketserver.BaseRequestHandler)
    ReverseShell(*args, key: bytes = None, encoding: str = 'cp437')
 
This class implements a reverse shell command line.
 
key: if is not None decrypt received data and encrypt
data to send with the key.
 
 
Method resolution order:
ReverseShell
cmd.Cmd
socketserver.BaseRequestHandler
builtins.object

Methods defined here:
__init__(self, *args, key: bytes = None, encoding: str = 'cp437')
Instantiate a line-oriented interpreter framework.
 
The optional argument 'completekey' is the readline name of a
completion key; it defaults to the Tab key. If completekey is
not None and the readline module is available, command completion
is done automatically. The optional arguments stdin and stdout
specify alternate input and output file objects; if not specified,
sys.stdin and sys.stdout are used.
completedefault = completenames(self, text: str, line: str, begidx: int, endidx: int) -> List[str]
completenames(self, text: str, line: str, begidx: int, endidx: int) -> List[str]
This function returns the default list for completion.
default(self, arg: str) -> None
This method sends data to socket shell client.
defined_context(self, data: Dict[str, ~Json]) -> None
This function sets context.
do_exit(self, arg: str) -> bool
This method exits the reverse shell.
do_quit(self, arg: str) -> bool
This method quits the reverse shell.
encrypt(self, data: bytes, decrypt: bool = False) -> bytes
This method encrypts/decrypts data with RC4.
handle(self) -> None
This methods gets TCP data and send it.
init_key(self, key_text: bytes) -> bytes
This method sets RC4 key.
parse_data(self, data: bytes) -> str
This function parses TCP data.
postcmd(self, stop: bool, line: str) -> bool
This function stop the cmdloop for each packet sended.
recv(self) -> bytes
This method gets all packets sent.

Data and other attributes defined here:
__annotations__ = {'_set': <class 'bool'>, 'color': <class 'bool'>, 'prompt': <class 'str'>}
color = True
prompt = '~$ '

Methods inherited from cmd.Cmd:
cmdloop(self, intro=None)
Repeatedly issue a prompt, accept input, parse an initial prefix
off the received input, and dispatch to action methods, passing them
the remainder of the line as argument.
columnize(self, list, displaywidth=80)
Display a list of strings as a compact set of columns.
 
Each column is only as wide as necessary.
Columns are separated by two spaces (one was not legible enough).
complete(self, text, state)
Return the next possible completion for 'text'.
 
If a command has not been entered, then complete against command list.
Otherwise try to call complete_<command> to get list of completions.
complete_help(self, *args)
do_help(self, arg)
List available commands with "help" or detailed help with "help cmd".
emptyline(self)
Called when an empty line is entered in response to the prompt.
 
If this method is not overridden, it repeats the last nonempty
command entered.
get_names(self)
onecmd(self, line)
Interpret the argument as though it had been typed in response
to the prompt.
 
This may be overridden, but should not normally need to be;
see the precmd() and postcmd() methods for useful execution hooks.
The return value is a flag indicating whether interpretation of
commands by the interpreter should stop.
parseline(self, line)
Parse the line into a command name and a string containing
the arguments.  Returns a tuple containing (command, args, line).
'command' and 'args' may be None if the line couldn't be parsed.
postloop(self)
Hook method executed once when the cmdloop() method is about to
return.
precmd(self, line)
Hook method executed just before the command line is
interpreted, but after the input prompt is generated and issued.
preloop(self)
Hook method executed once when the cmdloop() method is called.
print_topics(self, header, cmds, cmdlen, maxcol)

Data descriptors inherited from cmd.Cmd:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from cmd.Cmd:
doc_header = 'Documented commands (type help <topic>):'
doc_leader = ''
identchars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
intro = None
lastcmd = ''
misc_header = 'Miscellaneous help topics:'
nohelp = '*** No help on %s'
ruler = '='
undoc_header = 'Undocumented commands:'
use_rawinput = 1

Methods inherited from socketserver.BaseRequestHandler:
finish(self)
setup(self)

 
class ReverseShellSocketTcp(builtins.object)
    ReverseShellSocketTcp(address: Tuple[str, int] = ('0.0.0.0', 1337), handler: type = &lt;class 'ReverseShell.ReverseShell'&gt;, ssl: bool = False, cert: str = 'server.crt', key: str = 'server.key')
 
This class implements a one-socket TCP server.
 
  Methods defined here:
__enter__(self)
__exit__(self, *args)
__init__(self, address: Tuple[str, int] = ('0.0.0.0', 1337), handler: type = <class 'ReverseShell.ReverseShell'>, ssl: bool = False, cert: str = 'server.crt', key: str = 'server.key')
Initialize self.  See help(type(self)) for accurate signature.
serve_forever(self)
This method starts the socket of the reverse shell server.

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class ReverseShellTcp(socketserver.TCPServer)
    ReverseShellTcp(address: Tuple[str, int] = ('0.0.0.0', 1337), handler: type = &lt;class 'ReverseShell.ReverseShell'&gt;, ssl: bool = False, cert: str = 'server.crt', key: str = 'server.key')
 
This class implements TCP server with ssl.
 
 
Method resolution order:
ReverseShellTcp
socketserver.TCPServer
socketserver.BaseServer
builtins.object

Methods defined here:
__init__(self, address: Tuple[str, int] = ('0.0.0.0', 1337), handler: type = <class 'ReverseShell.ReverseShell'>, ssl: bool = False, cert: str = 'server.crt', key: str = 'server.key')
Constructor.  May be extended, do not override.
get_request(self)
This method sets SSL encryption for new connection.

Methods inherited from socketserver.TCPServer:
close_request(self, request)
Called to clean up an individual request.
fileno(self)
Return socket file number.
 
Interface required by selector.
server_activate(self)
Called by constructor to activate the server.
 
May be overridden.
server_bind(self)
Called by constructor to bind the socket.
 
May be overridden.
server_close(self)
Called to clean-up the server.
 
May be overridden.
shutdown_request(self, request)
Called to shutdown and close an individual request.

Data and other attributes inherited from socketserver.TCPServer:
address_family = <AddressFamily.AF_INET: 2>
allow_reuse_address = False
request_queue_size = 5
socket_type = <SocketKind.SOCK_STREAM: 1>

Methods inherited from socketserver.BaseServer:
__enter__(self)
__exit__(self, *args)
finish_request(self, request, client_address)
Finish one request by instantiating RequestHandlerClass.
handle_error(self, request, client_address)
Handle an error gracefully.  May be overridden.
 
The default is to print a traceback and continue.
handle_request(self)
Handle one request, possibly blocking.
 
Respects self.timeout.
handle_timeout(self)
Called if no new request arrives within self.timeout.
 
Overridden by ForkingMixIn.
process_request(self, request, client_address)
Call finish_request.
 
Overridden by ForkingMixIn and ThreadingMixIn.
serve_forever(self, poll_interval=0.5)
Handle one request at a time until shutdown.
 
Polls for shutdown every poll_interval seconds. Ignores
self.timeout. If you need to do periodic tasks, do them in
another thread.
service_actions(self)
Called by the serve_forever() loop.
 
May be overridden by a subclass / Mixin to implement any code that
needs to be run during the loop.
shutdown(self)
Stops the serve_forever loop.
 
Blocks until the loop has finished. This must be called while
serve_forever() is running in another thread, or it will
deadlock.
verify_request(self, request, client_address)
Verify the request.  May be overridden.
 
Return True if we should proceed with this request.

Data descriptors inherited from socketserver.BaseServer:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from socketserver.BaseServer:
timeout = None

 
class ReverseShellUdp(socketserver.UDPServer)
    ReverseShellUdp(address: Tuple[str, int] = ('0.0.0.0', 1337), handler: type = &lt;class 'ReverseShell.ReverseShell'&gt;)
 
This class implements UDP server.
 
 
Method resolution order:
ReverseShellUdp
socketserver.UDPServer
socketserver.TCPServer
socketserver.BaseServer
builtins.object

Methods defined here:
__init__(self, address: Tuple[str, int] = ('0.0.0.0', 1337), handler: type = <class 'ReverseShell.ReverseShell'>)
Constructor.  May be extended, do not override.

Methods inherited from socketserver.UDPServer:
close_request(self, request)
Called to clean up an individual request.
get_request(self)
Get the request and client address from the socket.
 
May be overridden.
server_activate(self)
Called by constructor to activate the server.
 
May be overridden.
shutdown_request(self, request)
Called to shutdown and close an individual request.

Data and other attributes inherited from socketserver.UDPServer:
allow_reuse_address = False
max_packet_size = 8192
socket_type = <SocketKind.SOCK_DGRAM: 2>

Methods inherited from socketserver.TCPServer:
fileno(self)
Return socket file number.
 
Interface required by selector.
server_bind(self)
Called by constructor to bind the socket.
 
May be overridden.
server_close(self)
Called to clean-up the server.
 
May be overridden.

Data and other attributes inherited from socketserver.TCPServer:
address_family = <AddressFamily.AF_INET: 2>
request_queue_size = 5

Methods inherited from socketserver.BaseServer:
__enter__(self)
__exit__(self, *args)
finish_request(self, request, client_address)
Finish one request by instantiating RequestHandlerClass.
handle_error(self, request, client_address)
Handle an error gracefully.  May be overridden.
 
The default is to print a traceback and continue.
handle_request(self)
Handle one request, possibly blocking.
 
Respects self.timeout.
handle_timeout(self)
Called if no new request arrives within self.timeout.
 
Overridden by ForkingMixIn.
process_request(self, request, client_address)
Call finish_request.
 
Overridden by ForkingMixIn and ThreadingMixIn.
serve_forever(self, poll_interval=0.5)
Handle one request at a time until shutdown.
 
Polls for shutdown every poll_interval seconds. Ignores
self.timeout. If you need to do periodic tasks, do them in
another thread.
service_actions(self)
Called by the serve_forever() loop.
 
May be overridden by a subclass / Mixin to implement any code that
needs to be run during the loop.
shutdown(self)
Stops the serve_forever loop.
 
Blocks until the loop has finished. This must be called while
serve_forever() is running in another thread, or it will
deadlock.
verify_request(self, request, client_address)
Verify the request.  May be overridden.
 
Return True if we should proceed with this request.

Data descriptors inherited from socketserver.BaseServer:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from socketserver.BaseServer:
timeout = None

 
Functions
       
main() -> int
This function starts the ReverseShell
from command line and returns the exit code.

 
Data
        __all__ = ['ReverseShell', 'IrcReverseShell', 'DnsReverseShell', 'HttpReverseShell', 'ReverseShellUdp', 'ReverseShellTcp', 'ReverseShellSocketTcp', 'main']
__annotations__ = {'alphanum': <class 'bytes'>, 'letters': <class 'bytes'>}
__author_email__ = 'mauricelambert434@gmail.com'
__copyright__ = '\nReverseShell Copyright (C) 2023 Maurice Lambe...ome to redistribute it\nunder certain conditions.\n'
__description__ = '\nThis package implements an advanced reverse shell\nconsole (supports: TCP, UDP, IRC, HTTP and DNS).\n'
__license__ = 'GPL-3.0 License'
__maintainer__ = 'Maurice Lambert'
__maintainer_email__ = 'mauricelambert434@gmail.com'
__url__ = 'https://github.com/mauricelambert/ReverseShell'

 
Author
        Maurice Lambert