Pythonフォレンジック-ネットワークフォレンジック

現代のネットワーク環境のシナリオは、多くの困難のために調査が失敗する可能性があるようなものです。これは、違反サポートへの対応、インサイダーアクティビティの調査、脆弱性に関連する評価の実行、または規制コンプライアンスの検証のいずれの場合でも発生する可能性があります。

ネットワークプログラミングの概念

以下の定義は、ネットワークプログラミングで使用されます。

  • Client −クライアントは、パーソナルコンピュータとワークステーションで実行されるネットワークプログラミングのクライアントサーバーアーキテクチャの一部です。

  • Server −サーバーは、同じコンピューターまたは他のコンピューター内の他のコンピュータープログラムにサービスを提供するクライアントサーバーアーキテクチャの一部です。

  • WebSockets− WebSocketは、永続的なTCP接続を介して実行されるクライアントとサーバー間のプロトコルを提供します。これにより、TCPソケット接続間で(同時に)双方向メッセージを送信できます。

WebSocketは、サーバーがクライアントに情報を送信できるようにする他の多くのテクノロジーの後に登場します。アップグレードヘッダーをハンドシェイクする以外は、WebSocketはHTTPから独立しています。

これらのプロトコルは、サードパーティのユーザーが送受信する情報を検証するために使用されます。暗号化はメッセージを保護するために使用される方法の1つであるため、メッセージが転送されたチャネルを保護することも重要です。

クライアントが使用する次のPythonプログラムについて考えてみます。 handshaking

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

出力

次の出力が生成されます-

通信チャネルの要求を受け入れるサーバーには、次のスクリプトが含まれます。

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

Pythonプログラミングの助けを借りて作成されたクライアントとサーバーは、ホスト番号をリッスンします。最初に、クライアントはホスト番号で送信されたデータに関してサーバーに要求を送信し、サーバーは要求を受け入れてすぐに応答を送信します。このようにして、安全な通信チャネルを確保できます。