python远控

本篇文章所编写的远控是基于socket所编写,有兴趣的朋友可以看一看,代码仅供参考,请勿用于非法途径,与本人无关。

1:远控思路

使用socket编写客户端(被控端),服务端(本地主机或服务器),服务端向客户端发送指令,客户端接受后判断并调用相应功能的函数执行,最后将执行后获取的内容发送到服务端。

2:总体所用到的模块

socket

threading

json

os

requests

subprocess

 好了,下面我们来写代码的主体,也就是核心

#服务端
from socket import *
import threading
import time

s=socket(AF_INET,SOCK_STREAM)
s.bind(('127.0.0.1',9999))
s.listen(10)
data_list=[]#存放机器
def run():
   while True:
       clientsock,clientaddress=s.accept()
       if clientsock not in data_list:#判断连接的机器是否在列表里面
          data_list.append(clientsock)#不在的话写入
       threading.Thread(target=tcplink,args=(clientsock,)).start()#开启一个线程
def tcplink(sock):#接收客户端发送的消息
   while True:
       try:
           recvdata=sock.recv(1024).decode('utf-8')
           print(recvdata)
       except:
            break
def post():#指令
   while True:
     try:
          time.sleep(1)
          in_data=input('请输入>>>')
          da_data=int(in_data.split('_')[1])#指定对应的机器第一个为0,语法为:指令_机器编号
          s=data_list[da_data]
          s.sendall(in_data.encode('utf-8'))
     except:
          print('该客户端已下线')
          data_list.pop(da_data)
          print('以移除该客户端')
if __name__ == '__main__':
   threading.Thread(target=run,args=()).start()
   threading.Thread(target=post,args=()).start()

      
      
#客户端
import socket
import time
def link():#连接函数
   try:
       s=socket.socket()
       s.connect(('127.0.0.1',9999))
       tcpclie(s)
   except:
       print('断线,5秒后重新连接')
       time.sleep(5)
       link()
def tcpclie(s):#接收信息
   while True:
       try:
           data=s.recv(1024).decode('utf-8')
           print(data)
           s.send('客户端收到'.encode('utf-8'))
       except:
           s.close()
           link()
if __name__ == '__main__':
   link()

好,下面咱们运行一下上面的代码,再来讲解,大家应该会有一个更深刻的了解

运行客户端,我们可以看到服务端没有开启的时候,客户端会一直尝试连接服务端,为什么要这样那,你服务端不可能一直开这吧,好,下面我们开启服务端,这边为了直观演示,我又开了一个客户端

 

服务端开启后,可以看到有两个客户端连接上的,下面我们尝试给第一台连接的机器发送指令 ,后期可以让其去调用相应的函数,这边为了方便,只做简单演示

 

 

我们可以看到当只有一号机器收到了指令,二号机器没有,如果想同时发个多个机器可以考虑考虑for循环,当客户端下线以后,我们在send的时候,服务端就会将客户端移除,这个大家可以自己试试

相信看到这里,大家对上面的代码在看起来应该就不是那么的难了吧,好了下章我们继续完成这个远控

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值