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

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

    谢谢分享

  2. 这把看我表演

    谢谢分享,学习了

  3. LAzySleep

    继续加油哦,争取发表更多优秀帖子

  4. 卡莎布兰卡

    感谢分享,插眼学习

  5. seatom

    感谢分享,谢谢楼主,赞

  6. LAzySleep

    感谢分享,谢谢楼主,赞

  7. 萝卜头

    谢谢,分享学习了

  8. ove520

    谢谢分享,学习了

  9. 幻念

    辛苦了,学习一下

  10. seatom

    继续加油哦,争取发表更多优秀帖子

  11. LAzySleep

    又学习到了,写的非常好?

  12. slimei

    真棒,感谢分享!

  13. slimei

    这真是个好文章,谢谢

  14. 七年

    又学习到了,写的非常好

  15. slimei

    谢谢大佬分享,谢谢!

  16. 七年

    真棒,感谢分享!

  17. 84896150

    感谢感谢

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