コード例 #1
0
ファイル: remote.py プロジェクト: frankiezhu/cmd_channel
	def do_cmds(self, msg):
		if (msg.startswith("recv")):
			return self.recv_file(msg)
		elif (msg.startswith("send")):
			local_file = msg.split('#')[1]
			return self.send_file(local_file, local_file, True)
		elif (msg.startswith("cmd")):
			cmd,shell = self.parse_cmd_args(msg)
			ctl = Command()
			if (shell == 'shell'):
				ret_info = ctl.run_sys_cmd(cmd)
				return self.send_msg(self.sock, Message.MSG_CTRL, ret_info)
			elif (shell == 'update'):
				args = sys.argv[:]
				args.insert(0, sys.executable)
				os.chdir(os._startup_cwd)
				msg = 'success'
				self.send_msg(self.sock, Message.MSG_CTRL, msg)
				self.sock.close()
				Log.logmsg("Update self:%s,%s" % (args, os._startup_cwd))
				os.execv(sys.executable, args)
				#no return
			else:
				Log.logerr("Invalid cmd!%s" % msg)
				return False
コード例 #2
0
ファイル: remote.py プロジェクト: frankiezhu/cmd_channel
	def do_work(self):
		while (True):
			header = self.readn(self.sock, 8)
			if not header:
				return True
			version, machine, type, length = Message.parse_msg_header(header)
			if (version != Message.version or machine != Message.TYPE_HYDRA):
				Log.logerr("Server check message header failed!")
				return False
			msg = self.readn(self.sock, length)
			if (type == Message.MSG_CTRL):
				Log.logmsg("Server try execute cmd :%s" % msg)
				if self.do_cmds(msg):
					Log.logmsg("Server execute cmd :%s, success" % msg)
					return True
				else:
					Log.logmsg("Server execute cmd :%s, success" % msg)
			else:
				Log.logerr("unknown cmd:%d %s" % (type, msg))
			return False