首页 > 系统相关 >如何在设置一个简单的HTTP Server来执行Windows命令和截图

如何在设置一个简单的HTTP Server来执行Windows命令和截图

时间:2022-12-02 17:11:31浏览次数:45  
标签:截图 HTTP socket Windows self cmd Server server




 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 """
 4 @file: device_http_server.py
 5 @time: 2022/12/2 13:11
 6 @file_desc: 
 7 """
 8 import os
 9 from http.server import BaseHTTPRequestHandler, HTTPServer
10 
11 import pyautogui
12 import socket
13 
14 PORT = 9999
15 IP = socket.gethostbyname(socket.gethostname())
16 print(IP)
17 
18 
19 class ScreenHandler(BaseHTTPRequestHandler):
20     def do_GET(self):
21         cmd = self.path.strip("/")
22         if "." not in cmd and "screenshot" != cmd.lower():
23             try:
24                 print(cmd)
25                 if "%20" in cmd:
26                     cmd = cmd.replace("%20", " ")
27                 cmd_exe = os.popen(cmd)
28                 output = cmd_exe.read()
29                 self.send_response(200)  # HTTP Status Code
30                 self.send_header('Content-Type', 'text/plain')
31                 self.end_headers()
32                 self.wfile.write(output.encode("utf-8"))
33             except Exception as error:
34                 pass
35         elif "screenshot" == cmd.lower():
36             img = pyautogui.screenshot()  # Screenshot
37             if img:
38                 self.send_response(200)  # HTTP Status Code
39                 self.send_header('Content-Type', 'image/png')
40                 self.end_headers()
41                 img.save(self.wfile, 'PNG')  # HTTP Response Stream
42 
43 
44 def main():
45     try:
46         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
47         # check port is open
48         result = sock.connect_ex((IP, PORT))
49         portopen = result == 0
50         sock.close()
51         if not portopen:
52             # start web server use defined handler
53             server = HTTPServer((IP, PORT), ScreenHandler)
54             server.serve_forever()  # listen
55     except:
56         pass
57 
58 
59 if __name__ == '__main__':
60     main()
View Code

 

 

实现远程在Windows机器上执行命令和截图。

1. 使用socket和http.server搭建一个简单的web server.

2. pyautogui实现截图功能

3. 通过获取浏览器的path, 截取要执行的命令(注意空格的替换%20), 通过os.popen执行命令,并将结果写回web页面。


目前将python代码打包成exe放在开机启动项执行(不可以打包成服务在后台运行,否则截图功能没法使用)

具体代码如上。

 

 

标签:截图,HTTP,socket,Windows,self,cmd,Server,server
From: https://www.cnblogs.com/daly/p/16944960.html

相关文章

  • Ubuntu22.04 Server安装
    本篇主要记录在OracleVmVirtualBox中安装Ubuntu22.04Server,并设置静态IP1.下载VirtualBox下载地址https://www.virtualbox.org/wiki/Downloadsubuntu下载地址ht......
  • Windows 自动登录
    1 运行:netplwiz 设置即使有密码也能开机自动登录不需要输入密码。2 修改注册表regedit配置开启自动登录HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\C......
  • Zabbix-6.2.5 Monitoring Server Host
    一、Zabbix-6.2.5MonitoringServerHost1安装客户端zabbix_agent2,需要golang环境###tar-zxvf/opt/software/zabbix-C/opt&&cd/opt/zabbix-625&&ll/opt/za......
  • 一个XP使用者眼中的Windows 7
    我本来想将这篇文章命名为“windows7试用报告”,但我想我没有太多资格这样命名,因为我在大多数时间用的是XP,vista没有深入使用过。只知道vista的UAC很烦人。根据统计,浏览可能......
  • 网站搭建过程-windowsserver2008建站
    一、搭建默认网站1、打开服务器管理,选择添加角色。 2、选择服务器角色,勾选web服务器。 3、点击下一步。 4、点击下一步。勾选应用程序开发。点击下一步。 5、......
  • SQLServer常用近百条SQL语句(收藏版)
    1.sqlserver查看实例级别的信息,使用SERVERPROPERTY函数selectSERVERPROPERTY('propertyname')2.查看实例级别的某个参数XX的配置select*fromsys.configurations......
  • Winsw将jar-bat-nacos-seata-nginx等快捷部署为windows服务
    Winsw将jar-bat-nacos-seata-nginx等快捷部署为windows服务1.软件下载WinSW的github下载地址:https://github.com/winsw/winsw/releases本文以WinSWv2.11.0为例2.注意......
  • redis sentinel部署(Windows下实现)
    一、准备条件二、下载redis并解压  2.1、下载  2.2、解压三、HA配置四、新建和修改配置文件  4.1、修改redis.conf配置文件  4.2、创建并修改sentinel.conf......
  • windows server的应用软件限流QoS
    原因:生产环境中程序员写的redis调用方法有逻辑问题,导致流量高达800~900Mbps导致服务器其它网络服务有丢包现象,他又有别的项目紧急需要修改,只能通过系统自带的QoS临......
  • sql server 2005新功能之TOP
    TOP的语法在SQL SERVER2005中有新增加的东西了,可以支持update,delete,数学表达式等,举例如下:建立一个表如下CreatetableMytable2(au_idint,......