简单防火墙实验

实验要求

  1. 设计一个信息系统,系统必须通过客户端录入账号口令远程登录;
  2. 系统内至少包含三个以上账号;
  3. 系统服务器端可设定禁止登录的IP地址和账号信息;
  4. 如果客户端从禁止的IP地址登录或使用禁止的账号登录则显示不允许登录,并断开连接。

所用知识

  1. python语法基础

熟悉Python语法,重点掌握if elif语句、存在判断、列表及其方法、字符串及其方法、字典 和 文件操作等。

用到的书籍:《python基础教程》
提取码:d8yo

  1. socket网络编程

整个代码按照socket套接字基本编程流程编写即可:
在这里插入图片描述
用到的书籍:《python核心编程》
提取码:wkfj

可参考的视频:socket网络编程

详细思路

实验按照题目分为“创建客户端服务端“和“实现防火墙”两步,考虑到Python语言比较简单,所以选用了Python来完成这次实验

  1. 创建客户端服务端

创建客户端和服务端时必须使用socket套接字来实现,套接字就相当于网线,将两台电脑连接起来,在这里就是将客户端服务端连接起来,实现最简单的即时通讯。

客户端服务端有TCP和UDP两种,考虑到TCP比较安全稳定,数据不会丢失,所以我们选用了TCP客户端和服务器。

查阅资料得知,服务端的创建必须经过创建socket套接字、绑定IP和端口信息(bind),监听(listen)以及发送数据(send)、接收数据(recv)和关闭服务器(close)这六部分组成

而客户端则只需要创建套接字、连接服务器(connect)、发送数据、接收数据和关闭(close)这五部分组成

需要特别指出的是,每一次send发送数据,都必须有对应的recv来接收数据,而且由于输入的数据是字符串类型,而send和recv都是字节型,因此在每次发送时都必须用encode编码,接收数据时用decode解码。

这样以来,客户端和服务端就建立成功了。

  1. 创建防火墙

在客户端服务端创建好后,就开始考虑防火墙了。

防火墙是通过对指定账户以及指定IP地址的拦截,让其无法连接到服务器,达到防火墙效果的。

我们想到在服务端定义一个禁止登陆的账户密码字典,以及一个禁止登陆的IP。

在用户用客户端连接服务器,输入账户密码时,将账户密码信息发送到服务端,服务端将接收的账户密码信息或IP地址与已经定义好的禁止登陆信息进行匹配,如果匹配成功且密码正确,将主动断开客户端的连接(close),并向其发送“该账户或IP禁止登陆”的信息,打印在屏幕上。

如果账户密码正确且未被禁止,将成功和服务器进行连接,开始进行信息交互(while True)。

这样就实现了防火墙的功能。

代码实现

1、服务器

#服务端

import socket

user = {
   "admin": "1234"}
limitUser = {
   }		#限制登录的用户及密码
limitIp = []		#限制登录的IP地址
#读取限制的账户密码
with open(r"limit_user.txt", "r") as f:
	for line in f.readlines():
		limitUser[line.split()[0]] = line.split
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值