安全设计题 3 && 5(7不会)

信息安全技术课程设计


抽到357了,7到现在连题都看不懂…
跟着大佬的思路写了一下代码…
能力有限只能写成这亚子,差不多能运行。
需要借鉴的同学记得稍微修改下代码
。。。第三题message单词写错了。。。

第三题

题目三:认证审计系统
1、设计一个信息系统,系统必须通过客户端录入账号口令远程登录;
2、系统内至少包含三个以上账号;
3、某账号登录后服务器端可实时显示该账号登录的时间及IP信息;
4、服务器端可查询账号的历史登录信息。
# python -u "d:\课程设计A\py3\client3.py"
import socket  # 导入 socket 模块
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建 socket 对象
host = socket.gethostname()  # 获取本地主机名
port = 12345  # 设置端口号
c.connect((host, port))
bufSize = 1024  # 缓存区字节大小

while True:
    userName = input("Input username:")
    c.send(userName.encode())
    userpass = input("Input userpass:")
    c.send(userpass.encode())

    re = c.recv(bufSize).decode()
    if re != "Connection successful":
        print(re)
        c.close()
    else:
        print("Connection successful")
        c.close()
c.close()  # 关闭连接

# python -u "d:\课程设计A\py3\server3.py"
import socket  # 导入 socket 模块
import datetime
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建 socket 对象
host = socket.gethostname()  # 获取本地主机名
port = 12345  # 设置端口
s.bind((host, port))  # 绑定端口
s.listen(5)  # 监听
bufSize = 1024  # 缓存区字节大小

users = {
    "admin": "123",
    "aaa": "123",
    "bbb": "123",
    "ccc": "123"
}  # 允许登录的账号和密码

print("Waiting for the link...")

while True:
    c, addr = s.accept()  # 建立客户端连接
    print("In authentication...")
    userName = c.recv(bufSize).decode()
    userPass = c.recv(bufSize).decode()
    print("userName: ", userName, '\n', "userPass: ", userPass)
    if ((userName in users) == 0) or (users[userName] != userPass):
        print("Incorrect user name or password")
        c.send("Incorrect user name or password".encode())
    else:
        print("Connection successful,ip:", addr)
        c.send("Connection successful".encode())  # 返回信息
        with open('D:/课程设计A/py3/massage.txt', 'a+') as f:
            f.write(
                'User name:' + str(userName) + '\n' +
                'Login time:' + str(datetime.datetime.now()) + '\n' +
                'IP:' + str(addr))  # 写入文件massage
        c.close()
s.close()  # 关闭连接

运行结果
第三题运行结果message内容

第五题

题目五:防火墙系统
1、设计一个信息系统,系统必须通过客户端录入账号口令远程登录;
2、系统内至少包含三个以上账号;
3、系统服务器端可设定禁止登录的IP地址和账号信息;
4、如果客户端从禁止的IP地址登录或使用禁止的账号登录则显示不允许登录,并断开连接。
# python -u "d:\课程设计A\py5\client5.py"
import socket               # 导入 socket 模块
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建 socket 对象
host = socket.gethostname()  # 获取本地主机名
port = 12345                # 设置端口号
c.connect((host, port))
bufSize = 1024  # 缓存区字节大小

while True:
    userName = input("Input username:")
    c.send(userName.encode())
    passWord = input("Input userpass:")
    c.send(passWord.encode())

    re = c.recv(bufSize).decode()
    if re != "Connection successful":
        print(re)
        c.close()
    else:
        print("Connection successful")
        c.close()
c.close()
# python -u "d:\课程设计A\py5\server5.py"
import socket  # 导入 socket 模块
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建 socket 对象
host = socket.gethostname()  # 获取本地主机名
port = 12345  # 设置端口
s.bind((host, port))  # 绑定端口
s.listen(5)  # 监听
bufSize = 1024  # 缓存区字节大小

user = {
    "admin": "123",
    "aaa": "123",
    "bbb": "123",
    "ccc": "123"
}  # 允许登录的账号和密码
banUser = {"ddd": "123"}  # 被Ban用户名和密码
banIp = ["192.168.1.0"]  # 限制登Ban的IP地址

print("Waiting for the link...")
while True:
    c, addr = s.accept()  # 建立客户端连接
    print("In authentication...")
    userName = c.recv(bufSize).decode()
    userPass = c.recv(bufSize).decode()
    print("userName: ", userName, '\n', "userPass: ", userPass)

    if addr[0] in banIp:  # 判断IP地址是否被ban
        print("IP be Ban")
        c.send("IP be Ban".encode())
    elif userName in banUser:  # 判断账户是否被ban
        print("Username be Ban")
        c.send("Username be Ban".encode())
    elif ((userName in user) == 0) or (user[userName] != userPass):
        print("Incorrect user name or password,ip:", addr)
        c.send("Incorrect user name or password".encode())
    else:
        print("Connection successful,ip:", addr)  # 返回身份验证成功信号
        c.send("Connection successful".encode())  # 开始进行信息交互
    c.close()
s.close()  # 关闭连接

第五题正常运行结果被Ban

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王玄清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值