代码实现题目三:认证审计系统 1、设计一个信息系统,系统必须通过客户端录入账号口令远程登录; 2、系统内至少包含三个以上账号; 3、某账号登录后服务器端可实时显示该账号登录的时间及IP信息; 4、服务器端可查询账号的历史登录信息。
时间: 2024-06-10 14:10:11 浏览: 22
由于涉及到客户端和服务器端的交互,我们需要使用网络编程的知识来实现这个认证审计系统。具体实现步骤如下:
1. 客户端登录
客户端需要向服务器端发送账号和口令,服务器端验证账号和口令是否正确。如果正确,则返回登录成功的信息并记录登录时间和IP地址;如果不正确,则返回登录失败的信息。
2. 服务器端记录登录信息
服务器端需要记录每个账号的登录信息,包括登录时间和IP地址。可以使用数据库来存储这些信息,也可以使用文件来存储。
3. 服务器端查询历史登录信息
服务器端需要提供查询历史登录信息的功能,用户可以输入账号来查询该账号的历史登录记录。查询结果可以显示在客户端上。
下面是一份简单的 Python 代码,实现了上述功能:
服务器端代码:
```python
import socket
import datetime
# 存储账号口令的字典
accounts = {'alice': '123456', 'bob': '654321', 'charlie': 'password'}
# 存储登录信息的列表
logins = []
# 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定到本地地址和端口
sock.bind(('localhost', 8888))
# 开始监听连接
sock.listen(5)
print('Server is running...')
while True:
# 等待客户端连接
conn, addr = sock.accept()
print('Connected by', addr)
# 接收客户端发送的账号和口令
data = conn.recv(1024)
data = data.decode('utf-8')
account, password = data.split()
# 验证账号和口令是否正确
if account not in accounts or accounts[account] != password:
conn.sendall('Login failed.'.encode('utf-8'))
conn.close()
continue
# 记录登录信息
login_time = datetime.datetime.now()
login_ip = addr[0]
logins.append((account, login_time, login_ip))
# 发送登录成功的信息
conn.sendall('Login successful.'.encode('utf-8'))
# 关闭连接
conn.close()
# 查询历史登录信息
def search_login_history(account):
result = []
for login in logins:
if login[0] == account:
result.append(login)
return result
```
客户端代码:
```python
import socket
# 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
sock.connect(('localhost', 8888))
# 输入账号和口令
account = input('Please enter your account: ')
password = input('Please enter your password: ')
# 发送账号和口令
sock.sendall((account + ' ' + password).encode('utf-8'))
# 接收服务器返回的信息
data = sock.recv(1024)
data = data.decode('utf-8')
print(data)
# 关闭连接
sock.close()
```
使用时,先运行服务器端代码,然后再运行客户端代码。客户端输入账号和口令后,服务器端会显示登录信息并记录下来。可以通过调用 `search_login_history` 函数来查询历史登录信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)