python简易远程控制单线程版

 更新时间:2018年06月20日 14:49:34   作者:雨者  
这篇文章主要为大家详细介绍了python简易远程控制单线程版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了python简易远程控制的具体代码,供大家参考,具体内容如下

1. 技术:管道通信,流文件处理,socket基础

2. Tips:

默认IP:127.0.0.1

默认端口:7676

3. 代码样例:

服务端:

#!/usr/bin/env python  
# encoding: utf-8  
 
import socket 
import sys 
from os import * 
 
reload(sys)  
sys.setdefaultencoding("utf-8")  
 
def socketInit(): 
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  return s 
 
def socketDeal(s,HOST,PORT): 
  s.bind((HOST,PORT)) 
  s.listen(1) 
 
def ControlModule(sS,addr): 
  recv_buffer = sS.recv(20048) 
  if recv_buffer == "[-]Error:Server is OFF" or recv_buffer == "[*]Server is OFF": 
    print recv_buffer 
    sys.exit(0) 
  else: 
    print recv_buffer 
  send_buf = raw_input(addr[0]+">") 
  sS.send(send_buf) 
 
 
def main(): 
  HOST = "127.0.0.1" 
  PORT = 7676 
  s = socketInit() 
  socketDeal(s, HOST, PORT) 
  sS,addr = s.accept() 
  print "Connect from " + addr[0] + ":" + repr(addr[1]) 
  try: 
    while True: 
      ControlModule(sS,addr) 
  except Exception as e: 
    print "[-]Connect Error" 
    sS.close() 
    s.close() 
    sys.exit(-1) 
  except KeyboardInterrupt: 
    sS.close() 
    s.close() 
    sys.exit(0) 
 
if __name__ == '__main__': 
  main() 

受控端:

#!/usr/bin/env python  
# encoding: utf-8  
 
import socket 
import sys 
import re 
import traceback 
import tempfile 
from os import * 
from subprocess import * 
 
reload(sys)  
sys.setdefaultencoding("utf-8")  
 
def socketInit(): 
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  return s 
 
def socketConn(s,HOST,PORT): 
  while True: 
    try: 
      s.connect((HOST,PORT)) 
    except Exception as e: 
      continue 
    else: 
      s.send("Welcome Sir ~") 
      break 
 
 
def String_Deal(recv,send): 
  P_str = re.findall("cd(.*)|(\w):", recv) 
  if P_str!=[] and send == "": 
    if P_str[0][0]!="": 
      try: 
        chdir(P_str[0][0].strip()) 
      except Exception as e: 
        flag = -1 
      else: 
        flag = 1 
    else: 
      try: 
        chdir(recv) 
      except Exception as e: 
        #traceback.print_exc() 
        flag = -1 
      else: 
        flag = 1 
  else: 
    if send == "": 
      flag = 1 
    else: 
      flag = 0 
  return flag 
 
def OpenProcess(s): 
  try: 
    while True: 
      recv_buf = s.recv(2048) 
      #流文件技术,防止管道阻塞 
      out_temp = tempfile.SpooledTemporaryFile(bufsize=10*1000) 
      fileNo = out_temp.fileno() 
      cmd = Popen(recv_buf, shell=True,stdin=PIPE, stdout=fileNo, stderr=STDOUT) 
      cmd.wait() 
      out_temp.seek(0) 
      send_buf = out_temp.read() 
      #print len(send_buf) 
      #输入命令字符串处理识别 
      flag = String_Deal(recv_buf,send_buf) 
      if flag == 1: 
        s.send("OK") 
      elif flag == -1: 
        s.send("Error!!") 
      else: 
        s.send(send_buf) 
      send_buf = "" 
  except Exception as e: 
    try: 
      s.send("[-]Error:Server is OFF") 
    except Exception as e: 
      pass 
      s.close() 
    sys.exit(-1)     
  except KeyboardInterrupt: 
    try: 
      s.send("[*]Server is OFF") 
    except Exception as e: 
      pass 
    s.close() 
    sys.exit(0)  
def main(): 
  flag = 0 
  HOST = "127.0.0.1" 
  PORT = 7676 
  s = socketInit() 
  socketConn(s, HOST, PORT) 
  OpenProcess(s) 
 
 
if __name__ == '__main__': 
  main() 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • python实现棋盘覆盖问题及可视化

    python实现棋盘覆盖问题及可视化

    这篇文章主要给大家介绍了关于python实现棋盘覆盖问题及可视化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 手把手带你打造一个Pytest数据分离测试框架

    手把手带你打造一个Pytest数据分离测试框架

    数据分离测试框架是一种测试框架设计模式,旨在将测试数据与测试逻辑分离,以提高测试用例的可维护性、可读性和复用性,本文就来实现一下,感兴趣的可以了解一下
    2024-03-03
  • python检查URL是否正常访问的小技巧

    python检查URL是否正常访问的小技巧

    检查一个URL是否正常很容易,如果检查2000个URL,或者是大批量的URL怎么办?这篇文章就为大家介绍了python检查URL是否正常访问的小技巧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Python pandas读取CSV文件的注意事项(适合新手)

    Python pandas读取CSV文件的注意事项(适合新手)

    这篇文章主要给大家介绍了关于Python pandas读取CSV文件的注意事项,非常适合新手,csv是我接触的比较早的一种文件,比较好的是这种文件既能够以电子表格的形式查看又能够以文本的形式查看,需要的朋友可以参考下
    2021-06-06
  • Python利用Matplotlib库实现绘制饼形图

    Python利用Matplotlib库实现绘制饼形图

    这篇文章主要为大家分享了基于python+matplotlib库的饼形图绘制,具体内容涉及一般的饼图、分裂饼图、以及环形图,感兴趣的小伙伴可以了解一下
    2022-04-04
  • Python2与Python3的区别点整理

    Python2与Python3的区别点整理

    在本篇文章里小编给大家整理的是关于Python2与Python3的区别点整理内容,需要的朋友们可以参考下。
    2019-12-12
  • Python实现识别XSS漏洞的方法详解

    Python实现识别XSS漏洞的方法详解

    XSS(跨站脚本攻击)作为一种常见的网络安全漏洞,经常被黑客用来攻击网站。这篇文章主要介绍了如何利用Python 识别 XSS 漏洞,需要的可以参考一下
    2023-02-02
  • python 基于selectors库实现文件上传与下载

    python 基于selectors库实现文件上传与下载

    这篇文章主要介绍了python 基于selectors库实现文件上传与下载的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python编辑用户登入界面的实现代码

    python编辑用户登入界面的实现代码

    这篇文章主要介绍了python编辑用户登入界面的实现代码,非常不错,代码简单易懂,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • Django实现的自定义访问日志模块示例

    Django实现的自定义访问日志模块示例

    这篇文章主要介绍了Django实现的自定义访问日志模块,结合具体实例形式分析了Django针对日志的相关操作技巧,需要的朋友可以参考下
    2017-06-06

最新评论