• 简单实现数据嗅探系统与防火墙系统(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++实现)

  • 相关阅读:
    test example
    SSD: ReLU6
    jupyter
    ubuntu+anaconda
    linux动态库
    ssd制作数据和训练
    ncnn框架
    Lock->ReentrantLock->ReentrantReadWriteLock简介
    Synchronized简介与原理
    ThreadLocal简介与原理
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302379.html
Copyright © 2020-2023  润新知