Python-forensics-network
提供:Dev Guides
Pythonフォレンジック-ネットワークフォレンジック
最新のネットワーク環境のシナリオでは、多くの困難により調査が困難になる場合があります。 これは、侵害サポートへの対応、インサイダーアクティビティの調査、脆弱性に関連する評価の実行、または規制順守の検証のいずれでも発生します。
ネットワークプログラミングの概念
次の定義は、ネットワークプログラミングで使用されます。
- クライアント-クライアントは、パーソナルコンピューターとワークステーションで実行されるネットワークプログラミングのクライアントサーバーアーキテクチャの一部です。
- サーバー-サーバーは、同じまたは他のコンピューター内の他のコンピュータープログラムにサービスを提供するクライアントサーバーアーキテクチャの一部です。
- * WebSockets-WebSocketsは、クライアントとサーバー間のプロトコルを提供し、永続的なTCP接続で実行されます。 これにより、双方向のメッセージをTCPソケット接続間で(同時に)送信できます。
WebSocketは、サーバーがクライアントに情報を送信することを可能にする他の多くのテクノロジーの後に登場します。 アップグレードヘッダーのハンドシェイク以外に、WebSocketsはHTTPから独立しています。
これらのプロトコルは、サードパーティのユーザーが送受信する情報を検証するために使用されます。 暗号化はメッセージの保護に使用される方法の1つであるため、メッセージが転送されたチャネルを保護することも重要です。
クライアントが*ハンドシェイク*に使用する次のPythonプログラムを検討してください。
例
# 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プログラミングの助けを借りて作成されたクライアントとサーバーは、ホスト番号をリッスンします。 最初に、クライアントはホスト番号で送信されたデータに関してリクエストをサーバーに送信し、サーバーはリクエストを受け入れてすぐにレスポンスを送信します。 これにより、安全な通信チャネルを確保できます。