Python Forensics 简明教程

Python Forensics - Network Forensics

现代网络环境的状况会因为多种困难而变得紧张,这可能发生在你对违规行为作出回应、调查内部活动、执行与漏洞相关的评估或验证法规遵从性时。

Concept of Network Programming

以下定义用于网络编程。

  1. Client - 在网络编程中,客户端是客户端-服务器体系结构的一部分,该体系结构在个人计算机和工作站上运行。

  2. Server - 服务器是客户端-服务器体系结构的一部分,为同一计算机或其他计算机中的其他计算机程序提供服务。

  3. WebSockets − WebSocket 在客户端和服务器之间提供一种协议,该协议在持久的 TCP 连接之上运行。通过这种方式,可以在 TCP 套接字连接之间(同时地)发送双向消息。

WebSocket 紧跟很多其他允许服务器向客户端发送信息的多种技术之后。除握手升级标头之外,WebSocket 与 HTTP 无关。

network programming

这些协议用于验证第三方用户发送或接收的信息。由于加密是用于保护消息的方法之一,因此也必须保护消息被传输的通道。

考虑以下 Python 程序,该程序由客户端用于 handshaking

Example

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

Output

它将生成如下输出:

network programming output

接受通信通道请求的服务器将包含以下脚本。

# 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 编程创建的客户端和服务器会监听主机号。最初,客户端向服务器发送一个与主机号中发送的数据相关的请求,服务器会接受请求并立即发送响应。通过这种方式,我们可以拥有一个安全的通信通道。