Python Forensics - Network Forensics
O cenário dos ambientes de rede modernos é tal que a investigação pode ser complicada devido a uma série de dificuldades. Isso pode acontecer se você estiver respondendo a um suporte de violação, investigando atividades internas, realizando avaliações relacionadas à vulnerabilidade ou validando uma conformidade regulamentar.
Conceito de programação de rede
As seguintes definições são usadas na programação de rede.
Client - O cliente é uma parte da arquitetura cliente-servidor da programação de rede que é executada em um computador pessoal e estação de trabalho.
Server - O servidor é uma parte da arquitetura cliente-servidor que fornece serviços a outros programas de computador no mesmo ou em outros computadores.
WebSockets- Os WebSockets fornecem um protocolo entre o cliente e o servidor, que é executado em uma conexão TCP persistente. Com isso, mensagens bidirecionais podem ser enviadas entre a conexão do soquete TCP (simultaneamente).
Os WebSockets vêm depois de muitas outras tecnologias que permitem que os servidores enviem informações ao cliente. Além do handshake do cabeçalho de atualização, o WebSockets é independente do HTTP.
Esses protocolos são usados para validar as informações que são enviadas ou recebidas por terceiros usuários. Como a criptografia é um dos métodos usados para proteger as mensagens, também é importante proteger o canal pelo qual as mensagens foram transferidas.
Considere o seguinte programa Python, que o cliente usa para handshaking.
Exemplo
# 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()
Resultado
Ele produzirá a seguinte saída -
O servidor que aceita a solicitação de canal de comunicação incluirá o seguinte 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()
O cliente e o servidor criados com a ajuda da programação Python ouvem o número do host. Inicialmente, o cliente envia uma solicitação ao servidor com relação aos dados enviados no número do host e o servidor aceita a solicitação e envia uma resposta imediatamente. Dessa forma, podemos ter um canal de comunicação seguro.