Python 实现 Windows 远控

借助 pywinrm 模块,实现脚本远控 windows 的目的 结合之前一篇 paramiko 模块,算是打通了 windows 与 Linux 之间的互访

pywinrm 模块

windows 除了通过图形远程访问
其实也可通过命令行访问
python 借助 pywinrm 模块
可以实现远程访问 Windows 的 cmd、powerShell
执行 dos 命令 ,达到远程管理的目的

一、控制端安装 pywinrm

环境要求[^1]

  • Linux, Mac or Windows
  • Cpython 2.6 - 2.7, 3.3-3.5 or PyPy2

1. 外网

pip install pywinrm

2. 内网
根据系统,下载合适的离线安装包

pip install pywinrm-0.4.3-py2.py3-none-any.whl

二、被控端 windows 开启 winrm 服务

被控制系统:windows 7

1.  检查服务监听情况

已经开启回输出如下信息,未开启则无信息输出

winrm enumerate winrm/config/listener
or
winrm e winrm/config/listener

Listener
    Address = *
    Transport = HTTP
    Port = 5985
    Hostname
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint
    ListeningOn = 10.10.10.10, 127.0.0.1, ::1, ...
    ...skip...

2. 启动 winrm 服务

先用管理员权限,运行 cmd
再执行下面的命令

winrm quickconfig -q  # 静默启动

检查是否启动

winrm e winrm/config/listener
or
netstat -ano | findstr 5985

三、查看 config 信息

几个基本的配信息查询命令
根据自己需要,查询需要配置的字段

  1. AllowUnencrypted
  2. Basic
  3. TrustedHosts
  • 查看 config:winrm get winrm/config
    包含了 Client 、Service、Winrs 的信息

    Config
      ...skip...
      Client
          ...skip...
      Service
          ...skip...
      Winrs
          ...skip...
    
  • 只查看 Client:winrm get winrm/config/client

Client
    NetworkDelayms = 5000
    URLPrefix = wsman
    AllowUnencrypted = true
    AUTH
        Basic = true
        Digest = true
        ...skip
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    TrustedHosts = *
  • 只查看 Service:winrm get winrm/config/service
Service
    ...skip...
    AllowUnencrypted = true
    AUTH
        Basic = true
        Digest = true
        ...skip
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    TrustedHosts = *

忘记有那些参数要配置了,或是需要确认字段配置生效,运行上述命令检查即可。

四、配置 winrm service

winrm set winrm/config/service/ @{AllowUnencrypted="true"}
winrm set winrm/config/service/auth @{Basic="true"}

五、配置 winrm client

winrm set winrm/config/client @{AllowUnencrypted="true"}
winrm set winrm/config/client @{TrustedHosts="*"}
winrm set winrm/config/client/auth @{Basic="true"}

基本用法

配置好上述字段后,我们就能通过 pywinrm ,像 paramiko 模块通过ssh一样
远程执行 cmd、powerSehll 命令了

import winrm
s = winrm.Session('10.244.14.24:5985', auth('username', 'passwd'), transport='ntlm')
r = s.run_cmd('whoami')
r.status_code  # 0 为正常
r.std_out  # bytes 得到的正常执行结果
r.std_err  # bytes 无异常消息为空字节串
-> 加入科技玩家交流群组:点击加入 <-
注意:
1.文中二维码和链接可能带有邀请性质,请各位玩家自行抉择。
2.请勿通过链接填写qq号与密码、银行卡号与密码等个人隐私信息。
3.禁止纯拉人头,拉app注册等信息,发现必小黑屋。
4.同一种信息仅发一次,多发会被删除。
5.文章中源码或APP等,无法保证其绝对安全,需自行辨别。
6.文章关联方不想展示也可以微信站长“socutesheep”删除。
本文由 @日薅一毛 发布。如若转载,请注明出处: 科技玩家 » Python 实现 Windows 远控

给TA买糖
共{{data.count}}人
人已买糖
教程玩家投稿

云服务器开启SWAP

2022-5-7 13:06:30

教程玩家投稿

python 实现 ssh 客户端远控

2022-5-7 13:38:11

24 条回复 A文章作者 M管理员
贴心提醒
请认真对待作者付出,勿发表无意义言论,触发过滤规则的评论将无法提交,包含敏感词的评论会自动变成待审核状态哦。
  1. Master

    看着还是不错的。
    我个人还是比较喜欢vscode 远程操作。

    • 日薅一毛

      需要无人值守的情况就用得上,用途是调度windows服务器,通常是多台

  2. 王哲

    学习下

  3. PublicClassKF

    学习一下

  4. 唔西迪西

    学习一下

  5. 学习者

    感谢分享

  6. LAzySheep

    很强大,但能力有限 我还是向日葵吧!

  7. 随便咯

    感谢分享

  8. 乐逍遥

    有点高级哈哈

  9. 还差俩

    学习一下

  10. T25886

    来学习一下

  11. ⁢小蔡不菜

    学习!

  12. 家有

    了解一下

  13. pirateking

    学习了,win端远程也可以用,蛮好用的

  14. zsylife

    这么做主要实现目的是什么

    • 日薅一毛

      工作需要,要自动远控 windows 服务器上的程序

  15. 枫笙

    打卡升级

  16. Thunder

    学习一个

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索