Python Forensics - Netzwerkforensik

Das Szenario moderner Netzwerkumgebungen ist so, dass die Untersuchung aufgrund einer Reihe von Schwierigkeiten schwierig sein kann. Dies kann passieren, unabhängig davon, ob Sie auf eine Unterstützung für Sicherheitsverletzungen reagieren, Insideraktivitäten untersuchen, Bewertungen in Bezug auf Sicherheitslücken durchführen oder die Einhaltung gesetzlicher Vorschriften überprüfen.

Konzept der Netzwerkprogrammierung

Die folgenden Definitionen werden bei der Netzwerkprogrammierung verwendet.

  • Client - Der Client ist Teil der Client-Server-Architektur der Netzwerkprogrammierung, die auf einem PC und einer Workstation ausgeführt wird.

  • Server - Der Server ist Teil der Client-Server-Architektur, die Dienste für andere Computerprogramme auf demselben oder anderen Computern bereitstellt.

  • WebSockets- WebSockets stellen ein Protokoll zwischen dem Client und dem Server bereit, das über eine dauerhafte TCP-Verbindung ausgeführt wird. Dadurch können bidirektionale Nachrichten zwischen der TCP-Socket-Verbindung (gleichzeitig) gesendet werden.

WebSockets folgen vielen anderen Technologien, mit denen die Server Informationen an den Client senden können. Abgesehen vom Handshake des Upgrade-Headers ist WebSockets unabhängig von HTTP.

Diese Protokolle werden verwendet, um die Informationen zu validieren, die von Drittbenutzern gesendet oder empfangen werden. Da die Verschlüsselung eine der Methoden zum Sichern von Nachrichten ist, ist es auch wichtig, den Kanal zu sichern, über den die Nachrichten übertragen wurden.

Betrachten Sie das folgende Python-Programm, für das der Client verwendet handshaking.

Beispiel

# 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()

Ausgabe

Es wird die folgende Ausgabe erzeugt -

Der Server, der die Anforderung für den Kommunikationskanal akzeptiert, enthält das folgende Skript.

# 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()

Der mit Hilfe der Python-Programmierung erstellte Client und Server lauschen der Hostnummer. Zu Beginn sendet der Client eine Anfrage bezüglich der in der Hostnummer gesendeten Daten an den Server, und der Server akzeptiert die Anfrage und sendet sofort eine Antwort. Auf diese Weise können wir einen sicheren Kommunikationskanal haben.