Foro de elhacker.net

Programación => Java => Mensaje iniciado por: _rez3t45_ en 2 Octubre 2009, 19:29 pm



Título: escritorio remoto en java
Publicado por: _rez3t45_ en 2 Octubre 2009, 19:29 pm
holas amigos ... ;D

siempre yo molestandolos ,,,,
bueno quisiera  saber si es que se puede ver otra pc desde mi pc
(uzando sockets- cliente servidor) ;

y no domino  casi nada de los api,
se podria ver en tiempo real la pantalla de mi cliente y si tambien fuera posible acceder a su pc tambien
 (mover iconos ,crear archivos- algo asi como si estuviera dentro)

ya que me encuentro desarrollando un trabajo de univ.   en el cual me han dado como
proyecto un controlador de cabinas de internet
(poner hora deinicio - fin , bloquear pantalla , bloquear teclado , matar procesos)
ya estoy avnzando ..... :silbar:

y me resultaria un trabajo mucho mejor si pudiera implementar esto del escritorio
remoto ,, ya luego cuando lo termine tambien me gustaria aprotar al foro mi proyecto , ya que tambien podria uzarce como un troyano ....


waaaaa ..... ayuda!


Título: Re: escritorio remoto en java
Publicado por: Debci en 2 Octubre 2009, 23:27 pm
holas amigos ... ;D

siempre yo molestandolos ,,,,
bueno quisiera  saber si es que se puede ver otra pc desde mi pc
(uzando sockets- cliente servidor) ;

y no domino  casi nada de los api,
se podria ver en tiempo real la pantalla de mi cliente y si tambien fuera posible acceder a su pc tambien
 (mover iconos ,crear archivos- algo asi como si estuviera dentro)

ya que me encuentro desarrollando un trabajo de univ.   en el cual me han dado como
proyecto un controlador de cabinas de internet
(poner hora deinicio - fin , bloquear pantalla , bloquear teclado , matar procesos)
ya estoy avnzando ..... :silbar:

y me resultaria un trabajo mucho mejor si pudiera implementar esto del escritorio
remoto ,, ya luego cuando lo termine tambien me gustaria aprotar al foro mi proyecto , ya que tambien podria uzarce como un troyano ....


waaaaa ..... ayuda!

Mira si s epuede y es ams bien sencillo, no te voy a dar el codigo proque es mejor que lo hagas tu mismo peor si te dare el algoritmo basico , pa que tengas la idea:

Con la clase robot, puedes hacer capturas de pantalla, por tanto peudes hacer lo siguiente:
En el pc del que quieres obtener el escritorio, un programa que haga lo siguiente:
-Hace foto, guarda en ruta constante
-Abres foto guardas en un arreglo de bytes
-envias el arreglo por streams usando los sockets (en el caso de la foto no tendrás problems pero si e suna rchivo mas grande deberás hacertelas para dividir los bytes para poder enviarlos sin que tu programa se caigo, por ejemplo dividir el arreglo en otros dos matrices.

Tu pc

-REcive por stream de sockets
-Lee matriz
-Carga foto en el disco duro abre foto

Aplica esto a un bucle lógico (que ademas después de enviar cada foto la borre una vez enviada) y tendras la imagen del escritorio, para poder hacer clicks y demas haz lo siguiente:

-Haz una regla de 3 o un cuqrto proporcional para calcular la proporcion que hay entre tu visor de escritorio con ele scritorio real y cada vez que cliques en la imagen de tu programa, es decir la imagenq uer ecive cada segundo haga el cambio y envie un evento click al programa del pc controlado segun la proproción, y asi poder hacerlo teniendo imagenes mas pequeñas que el escritorio, puede shacer que a través de sockets el programa del pc controlado envie el tamaño de pantalla, busca en la clase system, que tienes lo que necesitas para hacerlo, y cone sto ahcer la proporción.

Saludos

Pd: Disculpen las faltas , escribo en una situación extraña.


Título: Re: escritorio remoto en java
Publicado por: egyware en 3 Octubre 2009, 17:50 pm
tal vez desirva de algo
http://foro.elhacker.net/java/como_crear_un_troyano_en_java-t265225.0.html


Título: Re: escritorio remoto en java
Publicado por: _rez3t45_ en 5 Octubre 2009, 18:34 pm
mm creo comprender ......
osea que para yo poder tener una vision remota de la pc (ver la otra pc en tiempo real)
debo crear como una pelicula de puras fotos que mande mi cliente y que al instante las reciba e imprima mi servidor ....

bueno si es asi entonces voy a aprender a pasar imagenes a bit,, lo se en visual xD
per en java v0a a buscar .. luego como se haria para mandar por cada microsegundo y no se sobrecarge mi cliente y a la vez lo imprima mi servidor ,,,
como  envio mis imaganes por array o como (no se me ocurre nada)?

x otro lado estuve releendo el manual del troyano.. ya lo habia visto pero recien le tome mas interes en eso de poder mover el mouse ,teclado ... con codigo binario eso si creo que es mas facil (creo ! ) ...

buenlo lo 1ro es como poder ver la pc remota....


Título: Re: escritorio remoto en java
Publicado por: -Ramc- en 5 Octubre 2009, 18:41 pm
Eso hazlo si quieres recibir imagenes, pero, para transmitir video usa el api JMF.

Saludos.


Título: Re: escritorio remoto en java
Publicado por: egyware en 5 Octubre 2009, 19:24 pm
Ahora que recuerdo tenia el mismo problema antes de hacer mi troyano.
¿Como enviar imagenes?
Lo pregunte hace tiempo aqui y me respondio casidiablo hasta ahora uso ese metodo modificado y sirve  ;)
Espero que encuentres el post.
Nos vemos

Encontré el post:
http://foro.elhacker.net/java/enviar_un_bufferedimage_a_travez_de_socket-t177615.0.html


Título: Re: escritorio remoto en java
Publicado por: _rez3t45_ en 7 Octubre 2009, 06:07 am
bueno mandar imaganes si entiendo .. pero
como es eso de el api JMF
... ya que solo encuentro info en ingles alguna referencia  ?

como hago para ver la pantalla de mi cliente?   :huh:
aun me queda la duda ,,,
entonces de que forma puedo ver la maquina remota(osea como si estuviera sentada en ella)... mandando fotos e imprimirlas cada microsegundo
haciendo una pelicula  de puras fotos ..

o usando el api JMF ,,,

cual de las 2 es ?


Título: Re: escritorio remoto en java
Publicado por: -Ramc- en 7 Octubre 2009, 16:17 pm
Puedes hacerlo con las imagenes si quieres, pero, el JMF te permite trabajar con video directamente y saltarte varias capas.

Tutoriales de el JMF hay varios en internet y SUN en su página tiene ejemplos, referencias de el api y varias cosas que puedes consultar, con su código de fuente.


Título: Re: escritorio remoto en java
Publicado por: egyware en 7 Octubre 2009, 18:04 pm
Bueno, si recibes la imagen, por lo menos como binario lo siguiente es cargarla a BufferedImage(usando javax.imageio.ImageIO.read(...)) y luego en un java.awt.Canvas pintas esa imagen, y el canvas lo colocas en algun frame.
Bueno Suerte y Exito.


Título: Re: escritorio remoto en java
Publicado por: Aeros en 10 Octubre 2009, 06:23 am
usa  elñ team viwer si no dominas las api


Título: Re: escritorio remoto en java
Publicado por: Debci en 10 Octubre 2009, 16:18 pm
esta preguntando sobre java, no creo que sea comveniente ofrecer ese tipo de soluciones...

Saludos


Título: Re: escritorio remoto en java
Publicado por: _rez3t45_ en 21 Octubre 2009, 19:56 pm
holas d nuevo a todos .. estuve fuera por un gran tiempo ,, formatie mi pc (cosa que no hacia desde hace 1 año) gracias al virus sality , instalar programas asu....  :(

EN fin logre ver como mandar la imagen en un arreglo de bytes .. y como recibirlo
pero me dices que seria mejor con canvas para su impresion en un Jlabel( recien la clase pasada use cambas pero en aplicaciones moviles ) . tambien se uza en jframe ?

por otro lado tambien encontre informacion como mover el mouse del cliente con la clase robot xD ,, ya poco a poco voy entendiendo todo   ;-)

espero acabarlo pronto para mostrarle mi codigo completo y de paso me den algunos consejos    :D



Título: Re: escritorio remoto en java
Publicado por: Debci en 21 Octubre 2009, 19:57 pm
holas d nuevo a todos .. estuve fuera por un gran tiempo ,, formatie mi pc (cosa que no hacia desde hace 1 año) gracias al virus sality , instalar programas asu....  :(

EN fin logre ver como mandar la imagen en un arreglo de bytes .. y como recibirlo
pero me dices que seria mejor con canvas para su impresion en un Jlabel( recien la clase pasada use cambas pero en aplicaciones moviles ) . tambien se uza en jframe ?

por otro lado tambien encontre informacion como mover el mouse del cliente con la clase robot xD ,, ya poco a poco voy entendiendo todo   ;-)

espero acabarlo pronto para mostrarle mi codigo completo y de paso me den algunos consejos    :D


jeje yo tenia metodos programados en la calse robot para abrir la barra de inicio, para apagara el pc, para abrrir ventanas todo el rato, paa abrir el browwser y meter una direcion la que sea...

Saludos


Título: Re: escritorio remoto en java
Publicado por: _rez3t45_ en 23 Octubre 2009, 20:03 pm
waa ! xD
holas de nuevo ,,,
genere este codigo gracias ala ayuda del post de casiDiablo en transferecia de img ,,
Bueno lo hice a mi estilo  ;D
lo que quisiera saber si la forma en que imprimo las imagenes que llegan es la correcta o me aconsejarian otra forma ,, cosa que lo probe en mi casa y dio unos 2 segundo luego se detuvo .. creo que es por mi pc que solo tnego 512 ram ..lo probare en mi uni xD ,,

Envia_img
Código:
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class envia_img extends JFrame {
   
     public envia_img()throws Exception{
         setSize(100,100);
         setVisible(true);
         Thread.currentThread().sleep(5000);
         enviando_img();
     }
   
    public void enviando_img(){
         while(true){
        try{
            Socket cliente = new Socket("192.168.1.32", 6060);
            ObjectOutputStream salida = new ObjectOutputStream(cliente.getOutputStream());
            salida.flush(); 
            Rectangle dimension_pantalla = new   Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
            Robot robot = new Robot();
            BufferedImage img_bufeer = robot.createScreenCapture(dimension_pantalla);           
         
            ByteArrayOutputStream salida_img = new ByteArrayOutputStream();
           
            ImageIO.write(img_bufeer, "jpg", salida_img);
         
            byte[] img_en_bytes = salida_img.toByteArray();
            //ENVIO
            salida.writeObject(img_en_bytes);
            salida.flush();
           
            cliente.close();
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e.getMessage());
        }       
    }}

    public static void main(String args[])throws Exception{
        JFrame.setDefaultLookAndFeelDecorated(true);
        envia_img proyecto_envia = new envia_img();
        proyecto_envia.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Y EL que recibe las Imgnes


Código:
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class receptor_img extends JFrame implements Runnable{

    JLabel lbl_img;
    ImageIcon img;

    public receptor_img(){

        setSize(100,100);
        setVisible(true);
        Thread hilo = new Thread(this);
        hilo.start();
    }

    public void run(){
        try{
        ServerSocket servidor = new ServerSocket(6060);
        while(true){
            Socket conexión = servidor.accept();
            ObjectInputStream entrada = new ObjectInputStream(conexión.getInputStream());
            construyendo_img(entrada);

             entrada.close();
             conexión.close();
        }
    }catch(Exception e){JOptionPane.showMessageDialog(null, e.getMessage());}
                    }
   
    public void construyendo_img(ObjectInputStream entrada)throws IOException{       
            try{
                byte[] bytes_img = (byte[]) entrada.readObject();
                ByteArrayInputStream entrada_img = new ByteArrayInputStream(bytes_img);
                BufferedImage img_bufeer = ImageIO.read(entrada_img);
                //guardandola en Disco
                //String ruta = "c:/tu_fot0.jpg";
                 //  ImageIO.write(img_bufeer, "jpg",new File(ruta));
                //al recibirlo lo muestro en pantalla px xD
                img = new ImageIcon(img_bufeer);
                lbl_img = new JLabel();

                lbl_img.setIcon(img);

                getContentPane().add(lbl_img);
                lbl_img.setBounds(20,50,400,900);
                               
            }catch(Exception e){JOptionPane.showMessageDialog(null, e.getMessage());}         
    }

    public static void main(String args[])throws Exception{
        JFrame.setDefaultLookAndFeelDecorated(true);
        receptor_img proyecto_recibe = new receptor_img();
        proyecto_recibe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

LOgre transferir las imagenes por socket ,, esta en comentario arriba
ahora estoy en probar esto en mi uni   :D
el de mover el mouse si sale . tambien lo pruebo en mi uni ,,,,
luego los juntare px

gracias por la ayuda por que cuando empece ni sabia extender una clase a Jframe  ;-)



Título: Re: escritorio remoto en java
Publicado por: Debci en 23 Octubre 2009, 23:08 pm
waa ! xD
holas de nuevo ,,,
genere este codigo gracias ala ayuda del post de casiDiablo en transferecia de img ,,
Bueno lo hice a mi estilo  ;D
lo que quisiera saber si la forma en que imprimo las imagenes que llegan es la correcta o me aconsejarian otra forma ,, cosa que lo probe en mi casa y dio unos 2 segundo luego se detuvo .. creo que es por mi pc que solo tnego 512 ram ..lo probare en mi uni xD ,,

Envia_img
Código:
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class envia_img extends JFrame {
   
     public envia_img()throws Exception{
         setSize(100,100);
         setVisible(true);
         Thread.currentThread().sleep(5000);
         enviando_img();
     }
   
    public void enviando_img(){
         while(true){
        try{
            Socket cliente = new Socket("192.168.1.32", 6060);
            ObjectOutputStream salida = new ObjectOutputStream(cliente.getOutputStream());
            salida.flush(); 
            Rectangle dimension_pantalla = new   Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
            Robot robot = new Robot();
            BufferedImage img_bufeer = robot.createScreenCapture(dimension_pantalla);           
         
            ByteArrayOutputStream salida_img = new ByteArrayOutputStream();
           
            ImageIO.write(img_bufeer, "jpg", salida_img);
         
            byte[] img_en_bytes = salida_img.toByteArray();
            //ENVIO
            salida.writeObject(img_en_bytes);
            salida.flush();
           
            cliente.close();
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e.getMessage());
        }       
    }}

    public static void main(String args[])throws Exception{
        JFrame.setDefaultLookAndFeelDecorated(true);
        envia_img proyecto_envia = new envia_img();
        proyecto_envia.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Y EL que recibe las Imgnes


Código:
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class receptor_img extends JFrame implements Runnable{

    JLabel lbl_img;
    ImageIcon img;

    public receptor_img(){

        setSize(100,100);
        setVisible(true);
        Thread hilo = new Thread(this);
        hilo.start();
    }

    public void run(){
        try{
        ServerSocket servidor = new ServerSocket(6060);
        while(true){
            Socket conexión = servidor.accept();
            ObjectInputStream entrada = new ObjectInputStream(conexión.getInputStream());
            construyendo_img(entrada);

             entrada.close();
             conexión.close();
        }
    }catch(Exception e){JOptionPane.showMessageDialog(null, e.getMessage());}
                    }
   
    public void construyendo_img(ObjectInputStream entrada)throws IOException{       
            try{
                byte[] bytes_img = (byte[]) entrada.readObject();
                ByteArrayInputStream entrada_img = new ByteArrayInputStream(bytes_img);
                BufferedImage img_bufeer = ImageIO.read(entrada_img);
                //guardandola en Disco
                //String ruta = "c:/tu_fot0.jpg";
                 //  ImageIO.write(img_bufeer, "jpg",new File(ruta));
                //al recibirlo lo muestro en pantalla px xD
                img = new ImageIcon(img_bufeer);
                lbl_img = new JLabel();

                lbl_img.setIcon(img);

                getContentPane().add(lbl_img);
                lbl_img.setBounds(20,50,400,900);
                               
            }catch(Exception e){JOptionPane.showMessageDialog(null, e.getMessage());}         
    }

    public static void main(String args[])throws Exception{
        JFrame.setDefaultLookAndFeelDecorated(true);
        receptor_img proyecto_recibe = new receptor_img();
        proyecto_recibe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

LOgre transferir las imagenes por socket ,, esta en comentario arriba
ahora estoy en probar esto en mi uni   :D
el de mover el mouse si sale . tambien lo pruebo en mi uni ,,,,
luego los juntare px

gracias por la ayuda por que cuando empece ni sabia extender una clase a Jframe  ;-)


puede ser que deje de transferir porque el heap se satura prueba a descomponer las imagenes en datos de bytes unicos y transferirlas de poco en poco, en teoria no dbeeria darte problemas, y menos con imagenes :s

Pero peude ser que si xD

Saludos


Título: Re: escritorio remoto en java
Publicado por: _rez3t45_ en 24 Octubre 2009, 08:47 am
JA ! ya  di con mi error !

en El recpetor estaba mi error

Código:
JLabel lbl_img = new JLabel();
aunque este no tant0 ,,

aka zi :
Código:
public void construyendo_img(ObjectInputStream entrada)throws IOException{       
            try{
                byte[] bytes_img = (byte[]) entrada.readObject();
                ByteArrayInputStream entrada_img = new ByteArrayInputStream(bytes_img);
                BufferedImage img_bufeer = ImageIO.read(entrada_img);
                //guardandola en Disco
                String ruta = "c:/tu_aka.jpg";
                   ImageIO.write(img_bufeer, "jpg",new File(ruta));
                //al recibirlo lo muestro en pantalla px xD
                img = new ImageIcon(img_bufeer); 
                lbl_img.setIcon(img);

                getContentPane().add(lbl_img);
                lbl_img.setBounds(20,50,400,900);

                img_bufeer.flush();
                               
            }catch(Exception e){JOptionPane.showMessageDialog(null, e.getMessage());}         
    }

agrege un grande "flush()" al img_buffer

 ;D

bueno aun sigo sin probarlos en dos pc reales .. per0 si dio en mi pc
.. veia como hacia todo en una pantallita de mi  formulario
azi que si deve salir ..

algun alma piadosa que lo pruebe  x q no tengo 2 pc  :S !


Título: Re: escritorio remoto en java
Publicado por: jdiazram en 26 Abril 2011, 13:13 pm
Holas
Muy buena aplicación, me resulta en el mismo PC, pero no pasa nada cuando lo intento en 2 pc a traves de la misma red, conectados por wifi ambos.
Sabes si se puede hacer?

Saludos