Python Forensics - Network Forensics
Lo scenario dei moderni ambienti di rete è tale che l'indagine può essere complicata a causa di una serie di difficoltà. Questo può accadere sia che tu stia rispondendo a un supporto per violazione, indagando su attività interne, eseguendo valutazioni relative alla vulnerabilità o convalidando una conformità normativa.
Concetto di programmazione di rete
Le seguenti definizioni vengono utilizzate nella programmazione di rete.
Client - Il client è una parte dell'architettura client-server della programmazione di rete che viene eseguita su un personal computer e una workstation.
Server - Il server fa parte dell'architettura client-server che fornisce servizi ad altri programmi per computer nello stesso o in altri computer.
WebSockets- I WebSocket forniscono un protocollo tra il client e il server, che funziona su una connessione TCP persistente. Attraverso questo, i messaggi bidirezionali possono essere inviati tra la connessione socket TCP (simultaneamente).
I WebSocket vengono dopo molte altre tecnologie che consentono ai server di inviare informazioni al client. Oltre all'handshaking dell'intestazione di aggiornamento, WebSocket è indipendente da HTTP.
Questi protocolli vengono utilizzati per convalidare le informazioni inviate o ricevute dagli utenti di terze parti. Poiché la crittografia è uno dei metodi utilizzati per proteggere i messaggi, è anche importante proteggere il canale attraverso il quale i messaggi sono stati trasferiti.
Considera il seguente programma Python, che il client usa per handshaking.
Esempio
# 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()
Produzione
Produrrà il seguente output:
Il server che accetta la richiesta di canale di comunicazione includerà il seguente 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()
Il client e il server creati con l'aiuto della programmazione Python ascoltano il numero di host. Inizialmente, il client invia una richiesta al server rispetto ai dati inviati nel numero host e il server accetta la richiesta e invia immediatamente una risposta. In questo modo, possiamo avere un canale di comunicazione sicuro.