简单实现数据嗅探系统与防火墙系统(Python3)

题目要求:

            1、设计一个信息系统,系统必须通过客户端录入账号

    2、系统内至少包含3个以上账号

    3、系统服务器可设定禁止登录的IP地址和账号信息

    4、如果客户端从禁止的IP地址登录或使用禁止的账号则不允许登录,并断开连接

思路:实现客户端远程登录服务端用到socket模块

                           数据嗅探系统                                                            防火墙系统

        python3在发送信息时需要加encode函数编码,接收消息需要decode函数解码才能显示成字符串

数据嗅探服务端代码:

import socket
import os
#允许登录的账号和密码
user={"admin":"1234"}
#创建套接字
s=socket.socket()
#服务端结束运行时立刻归还端口
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
#绑定服务器地址,端口
s.bind(("",8888))
#开始监听客户端请求
s.listen(1)
#保存客户端请求的信息
sock, ip = s.accept()
print("Client-IP:",ip)
while True:
    #接收客户端发送的账号和密码
    receive=sock.recv(1024).decode()
    #print(receive)
    ls=receive.split()
    try:
        #判断账号和密码是否允许登录
        if user[ls[0]] == ls[1]:
            sock.send("登录成功!".encode())
            while True:
                #接收客户端发送的内容
                receive = sock.recv(1024).decode()
                #print(receive)
                if receive == "exit":
                    break
                #输入包含关键字“密码”的信息
                if "密码" in receive:
                    print(receive)

        else:
            sock.send("账户或密码错误!".encode())
            continue
    except:
        sock.send("重新输入:".encode())
        continue
    break
sock.close()
s.close()
os.system("pause")

数据嗅探客户端代码:

import socket
import os

c=socket.socket()
c.connect(("127.0.0.1",8888))
user=input("输入用户名和密码,用空格隔开:")
while True:
	#发送账号和密码
	c.send(user.encode())
	#接收服务端发送的信息,python3发送信息需要加encode()
	#接收消息需要加decode()
	recive=c.recv(1024).decode()
	if "成功" in recive:
		break
	print(recive)
	user=input()
print(recive)
while True:
	temp=input("输入发送的内容:")
	c.send(temp.encode())
	if temp=="exit":
		break
c.close()
os.system("pause")

防火墙系统服务端代码:

import socket
import os
#允许登录的账号密码
user={"Bob":"1234","Jim":"4321","Tom":"1324"}
#禁止登录的IP
hp=["192.168.1.2"]
print("允许登陆的账号密码",user)
print("禁止的IP:",hp)
s=socket.socket()
s.bind(("",8888))
s.listen(1)
sock,ip=s.accept()
print("ip:",ip)
#判断IP是否合法
if ip[0] in hp:
	sock.send(("该IP不允许登录!").encode())
#接收客户端发送的账号和密码
receive=sock.recv(1024).decode()
print(receive)
ls=receive.split(',')
try:
    if user[ls[0]] == ls[1]:
        sock.send("登录成功!".encode())
    else:
        sock.send("账户或密码错误!".encode())
except:
    sock.send("禁止的账号!".encode())
sock.close()
s.close()
os.system("pause")

防火墙系统客户端代码:

import socket
import os
#判断输入的内容是否合法
while True:
	user=input("输入用户名和密码,用逗号隔开:")
	t=0
	for i in user:
		if i==',':
			t+=1
	if t==1:
		break
c=socket.socket()
c.connect(("127.0.0.1",8888))
#发送账号和密码
c.send(user.encode())
#接收返回的信息
recive=c.recv(1024)
print(recive.decode())
c.close()
os.system("pause")

LFSR实现(C++)

古典密码算法的设计与实现(C++实现)

发布了31 篇原创文章 · 获赞 55 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/qq_32261191/article/details/80069353