Python Forensics - Análisis forense de redes
El escenario de los entornos de red modernos es tal que la investigación puede resultar complicada debido a una serie de dificultades. Esto puede suceder ya sea que esté respondiendo a un soporte de incumplimiento, investigando actividades internas, realizando evaluaciones relacionadas con la vulnerabilidad o validando un cumplimiento normativo.
Concepto de programación de red
Las siguientes definiciones se utilizan en la programación de redes.
Client - El cliente es parte de la arquitectura cliente-servidor de la programación de red que se ejecuta en una computadora personal y una estación de trabajo.
Server - El servidor es una parte de la arquitectura cliente-servidor que proporciona servicios a otros programas de computadora en la misma u otras computadoras.
WebSockets- WebSockets proporciona un protocolo entre el cliente y el servidor, que se ejecuta a través de una conexión TCP persistente. A través de esto, se pueden enviar mensajes bidireccionales entre la conexión de socket TCP (simultáneamente).
Los WebSockets vienen después de muchas otras tecnologías que permiten a los servidores enviar información al cliente. Aparte del protocolo de enlace del encabezado de actualización, WebSockets es independiente de HTTP.
Estos protocolos se utilizan para validar la información enviada o recibida por terceros usuarios. Dado que el cifrado es uno de los métodos utilizados para proteger los mensajes, también es importante proteger el canal a través del cual se han transferido los mensajes.
Considere el siguiente programa de Python, que el cliente usa para handshaking.
Ejemplo
# client.py
import socket
# create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# get local machine name
host = socket.gethostname()
port = 8080
# connection to hostname on the port.
s.connect((host, port))
# Receive no more than 1024 bytes
tm = s.recv(1024)
print("The client is waiting for connection")
s.close()
Salida
Producirá la siguiente salida:
El servidor que acepta la solicitud de canal de comunicación incluirá el siguiente script.
# server.py
import socket
import time
# create a socket object
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# get local machine name
host = socket.gethostname()
port = 8080
# bind to the port
serversocket.bind((host, port))
# queue up to 5 requests
serversocket.listen(5)
while True:
# establish a connection
clientsocket,addr = serversocket.accept()
print("Got a connection from %s" % str(addr))
currentTime = time.ctime(time.time()) + "\r\n"
clientsocket.send(currentTime.encode('ascii'))
clientsocket.close()
El cliente y el servidor creados con la ayuda de la programación de Python escuchan el número de host. Inicialmente, el cliente envía una solicitud al servidor con respecto a los datos enviados en el número de host y el servidor acepta la solicitud y envía una respuesta de inmediato. De esta forma, podemos tener un canal de comunicación seguro.