簡單實現數據嗅探系統與防火牆系統(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++實現)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章