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.