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 - rub'n

#851
Cita de: PalitroqueZ en 22 Enero 2018, 20:57 PM
Wipe Reset
https://www.androidpit.es/que-es-wipe

homie, el FRP es un método implementado por google para que gente como tu y yo no hagan WIPE/RESET  

para lograr el bypass del FRP hay varias maneras tanto free/pago por medio de boxes, jtag, isp etc...
#852
Cita de: davidkether en  8 Octubre 2017, 18:16 PM
Hola.
Primero daros la enhorabuena y agradecimiento por el foro, me ha servido de ayuda en varias ocasiones.

Tengo un energy sistem que se me ha roto la pantalla y no puedo pasarme los datos al ordenador porque no puedo dibujar el patrón de desbloqueo.

Además de las fotos, etc.. Necesito recuperar unas conversaciones laborales que tenía guardadas con una app .

60€ me cuesta cambiar la pantalla y ya me regalaron móvil nuevo.



Que versión de Android tiene?
#853
Cita de: Zhesslow en  9 Noviembre 2017, 18:31 PM
Hace un tiempo compré un s7 de segunda mano por ebay, el vendedor no aceptaba devoluciones pero era bastante barato el móvil.

El problema es que cuando lo he encendido me pide que me conecte a una red wifi, después me dice que tengo que introducir la cuenta de gmail que estaba vinculada a ese dispositivo (por lo que se ve no me deja poner ninguna cuenta, solo la que estaba vinculada).

Y el vendedor no responde a ningún mensaje, he estado intentando contactarle desde hace ya casi un mes para que me diga la cuenta o como arreglarlo o algo.

Necesito alguna forma de usar el móvil que si no son mas de 100 pavos a la basura, he probado a hacerle un hard reset y sigue igual.  :-( :-( :-(

¿No hay forma de desvincular la cuenta o saltarse esa seguridad o algo?

Dame el modelo exacto del s7, abajo de la pila/bateria a ver.
#854
Java / Re: Cadena aleatoria de caracteres
21 Enero 2018, 08:22 AM
Interesante hacerlo   ;D con los tips de los muchachos , y de verdad que no se repiten  :D

Código (java) [Seleccionar]
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CaracteresShuffle {

   private static final char[] CHR = {'D','A','N','I','E','L'};

   public CaracteresShuffle() {

       shuffle();

   }

   private void shuffle() {
       /**
           Llenamos una lista de caracteres
           con tu numbre Daniel para luego pasarla
        como parametro en Collections.shuffle
        */
       List<Character> list = new ArrayList<Character>();
       for(int f = 0; f< CHR.length; f++) {
           list.add(CHR[f]);
       }

       /**
           Thread que genera tu nombre sin repetir  cada 1.5seg
        */
       new Thread(() -> {
           try {
               while (true) {
                   //cada iteración invoca el método estático shuffle
                   Collections.shuffle(list);
                   for(Character a : list) {
                       print(a);
                   }
                   print("\n");
                   Thread.sleep(1500);
               }
           }catch (InterruptedException ex) {
           }
       }).start();
   }

   static<T> void print(final T s) {System.out.print(s);}
   public static void main(String ...foroElHackerNet) {
       new CaracteresShuffle();
   }
}


Aplicando Java 8

Código (java) [Seleccionar]

 private void shuffle() {

       List<Character> lista = IntStream
               .range(0, CHR.length)    //recorremos el array completo
               .mapToObj(i -> CHR[i])  //Wrapper de primitivos char a objetos Character 
               .collect(Collectors.toList());
       
       new Thread(() -> {
           try {
               while (true) {
                   //en cada ciclo invocamos el método statico shuffle
                   Collections.shuffle(lista);
                   lista.forEach(param -> print(param));
                   print("\n");
                   Thread.sleep(1500);
               }
           }catch (InterruptedException ex) {
           }
       }).start();
   }


/
#855
jajajajja de verdad que mamada tan real, eso me recuerda que actrices de la industria se blanquean el ASS XD jajajajjaja...


Me da mucha risa homie...
#856
Bueno señores que talco testeando aburrido me encontré este crackME de Leyer tiene como 10 años de antigüedad jajaaj, primera vez que me asomo en esta cuestión crackMEs, antes solo los usaba y listo sin mucha pasión, pero de verdad que digamos, estaba algo aburrido, así que vacilen.

Herramientas y Entorno




Lo primero que debemos hacer es descompilar nuestro .jar con el decompilador de preferencia por ejemplo esta web javadecompilers.com ahi debemos subir el .jar,  existen otras opciones offline como el uso de Krakatau programado en python para usarla desde consola CLI, también Recaf lector de bytecode e incluye cfr decompilador interno.


También tengo la opción con el decompilador por defecto que trae IntelliJ IDEA versión que use para esto:



  • (Community Edition) 2017.2 EAP
    Build #IC-172.2656.10, built on May 30, 2017


Aquí en este enlace está el CrackME de leyer, bueno no se si el tiene otros mas, que seguro si XD  para decompilar hacemos así, creamos un proyecto java y agregamos nuestro .jar desde File/project Structure y en el menú Libraries damos a + para importar el jar


Ya podemos ver todo el código fuente , en el menú External Libraries la primera linea si oprimo en el + dijera Source code recreated from a .class file by IntelliJ IDEA ..blalba by Fernflower, tocaría ahora crear una nueva clase y copiar el contenido de todo el código que se ve abajo, o usar krakatau para convertir este .class (Bytecode) a código fuente .java


Directamente en bandeja de plata esta casi todo, no tiene ningún wrapper con alguna aplicación tipo Jar2Exe,  así que no tenemos que quejarnos tanto XD , otra cosa en su web tiene un source code que es como una versión nueva del crackME que es casi lo mismo, pero si tiene algunas diferencias y es el código que usaremos se ve así:



Vemos que las variables están escritas con $$ que hacen bastannnte falta en Vzla,  para darle un toque más intenso jajaj si o no ? Y ofuscar algo el código, en java se puede escribir así, aunque por convención se evita su uso, pero este es otro caso.

Aquí es importante acotar que la ofuscación de los String no es tan tann dura, como lo hacen algunos otros ofuscadores como Allatori ofuscator, el método  _$$as_OIsl

Código (java) [Seleccionar]
 
static String _$$as_OIsl(String _$s_String_) {
       byte[] _$$d_defaultBytes_ = _$s_String_.getBytes();
       java.security.MessageDigest _$$a_algorithm = null;
       try {
           _$$a_algorithm = java.security.MessageDigest.getInstance("SHA1");
       } catch (java.security.NoSuchAlgorithmException noSuchAlgorithmException) {
       }
       _$$a_algorithm.reset();
       _$$a_algorithm.update(_$$d_defaultBytes_);
       byte messageDigest[] = _$$a_algorithm.digest();
       StringBuffer hexString = new StringBuffer();
       for (int _$I_Index = 0; _$I_Index < messageDigest.length; _$I_Index++) {
           hexString.append(Integer.toHexString(0xFF & messageDigest[_$I_Index]));
       }
       @SuppressWarnings("unused") String _$f_Foo_ = messageDigest.toString();
       _$s_String_ = hexString + "";
       return _$s_String_;
}


que recibe un String como parámetro y luego lo pasa por un algoritmo de digestión usando la clase MessageDisgest() con SHA1 retornando bien cabronnn en la linea 18. Lo cual no podemos descifrar, a menos que seas empleado de google, puedas lograr una colisión con 100 VGA XD o hasta masss, bueno ya basta de tanta cotorra y empecemos por partes como el popular jack.

Ejecutamos el crackME  Mayús+ F10


Debe aparecer así


Introducimos cualquier valor, arrojando error claramente, pero eso ya da una pista que el botón validar quizá realice la validación o invoque a un método que la haga, vamos  por más, si oprimo control + F que es para buscar e introducir la palabra validar así:


Para que lo hacemos? pues para ir destripando como hacia jack, ahora con la opción de oprimir control + click justo en el nombre de la instancia del botón _$$b__$$hsqqso_ linea 85 debería de aparecer como la imagen, indicando que en la linea 108 esta el listener de el, vamos a ver que talco



En la linea 112, obtenemos un array de caracteres que viene del JPasswordField que es el campo donde introducimos el serial que debe ser valido , se usa un for para concatenar todos los valores en un String este _$$I_pos123 ver linea 115


la linea 117 es el condicional que compara si _$$I_pos123 es igual a _$$r_easte pero quien rayos es el puto _$$r_easte ? vamos a buscarlo, ctrl+F :


Depurando app java con IntelliJ  básico

En la linea 105 se colocara un BreakPoint para saber que valor posee ese String _$$r_easte
_$$r_easte



Ahora para ejecutar el depurador podemos oprimir Mayús + F9 o en la esquina superior derecha oprimir donde tenemos el icono del bug.

IMPORTANTE

Muchas veces no tenemos una configuración lista y nuestra app no se ejecuta, miren que yo tengo mi configuración del archivo a ejecutar/depurar que es CrackME2_ORIGINAL que eso le dice al IDE que clase ejecutar


Si por alguna razón tienen esa lista de items vacía creen una configuración previa con EDIT CONFIGURATION... y seleccionen el proyecto a ejecutar/depurar, cosa que espero que no les pase nigg@s


Al hacer todo bien el debug tendria que aparecernos:


vamos a la pestaña Variables observando que el String _$$c_Cor_ contiene este valor


cacaba0dff27b124ae5bc688b77c14f136b989118.0


que esa es la key aleatoria que se genero en ese momento de ejecutar el crackME, la pude obtener con control + c , e igual podemos obtener mayor info con click Derecho en ella


Ajustando nuestro botón para hallar y setear la key

Código (java) [Seleccionar]
_$$b__$$hsqqso_.addActionListener(e -> {
  final String $faHA_$oPL = __gXb$.getText();
  if ($faHA_$oPL == null || "".equals($faHA_$oPL.trim())) {
    return;
  }
  if (!$faHA_$oPL.matches("[0-9]{0,9}") ) {
    JOptionPane.showMessageDialog(null, "Invalid value");
  } else {
    final int $hitDesireMyEX = $$1(_$$Y_sy76, Integer.valueOf($faHA_$oPL.trim()));
    if($hitDesireMyEX != -1) {
       String _$$c_Cor_ = "";
       final int _$_foP = $hitDesireMyEX;
       for (int _$$i_INDEX_ = 0; _$$i_INDEX_ < _$$Y_sy76.length; ++_$$i_INDEX_) {
          if (_$$Y_sy76[_$$i_INDEX_] == _$$Y_sy76[_$_foP]) {
            for (int index = 0; index < _$$i_INDEX_; ++index) {
                _$$c_Cor_ = _$$c_Cor_ + String.valueOf((byte) _$$Y_sy76[index]);
            }
     //aqui el método es el que cifra el String _$$c_Cor_ y lo concatena
     _$$c_Cor_ = _$$as_OIsl(_$$c_Cor_) + String.valueOf(Math.pow((double) _$$2341s, 2.0D) / 6.0D - 36.0D);
          }
       }//for externo XP
      _$lH$$j$.setText("");
      _$lH$$j$.setText(_$$c_Cor_);
      _$$c_Cor_ = "";
    }else {
       JOptionPane.showMessageDialog(null, "Invalid value");
    }
 }
});


Para validar la entrada del usuario usamos condicionales como en la linea 3 y 6, justo en la linea 6 hay una expresión regular (máximo 9, y rango del 0 al 9 inclusive) que cada index contiene ese largo 9 números, como lo siguiente:

Código (java) [Seleccionar]
matches("[0-9]{0,9}")

La linea 9 del código anterior se invoca al método $$1 mostrado abajo, este retorna el index, donde esta el valor de la variable X del crackME, por cada index del  array estático de valores hexadecimales ejemplo 0x7031101 es igual a el decimal 117641473, cada uno tiene un hash único que es lo que queremos, de otra manera seria -1 en caso de que no este, si es así la linea 10 daría falso y saltaría de una a la linea 25 notificando con Invalid Value

Código (java) [Seleccionar]
private static int $$1(final int $$_23DeSh$T[], final int $Bul$) {
       return IntStream.range(0, $$_23DeSh$T.length)
               .filter($__Fkl -> $$_23DeSh$T[$__Fkl] == $Bul$)
               .findFirst()
               .orElse(-1);
}



Con este index que lo llamaremos $hitDesireMyEX  mi ·$"%$"%"%  EX , en caso de que exista lo seteamos a _$_foP ver linea 12

La linea 13 esta un for que  recorre el array y en cada iteración consulta el condicional de la linea 14 así,


Código (java) [Seleccionar]
if(_$$Y_sy76[_$$i_INDEX_] == _$$Y_sy76[_$_foP]) {

Cuando el valor del contador _$$i_INDEX_ sea igual a _$_foP osea mi %$% EX que me hizo la vida imposible con tanto drama por 3 meses, entraremos en el for mas interno para castearle explícitamente los valores del contador del for a bytes, + otro casting  a String  y concatenarlo a _$$c_Cor_, al terminar ese for interno se invoca a  _$$ as_OIsl cifrandolo con el algoritmo de hashing SHA1 retornando de nuevo a la linea 13 for externo, esa condición de la linea 14 siempre se cumplirá solo una vez, es decir si la X es 7414755 index 0, ese for iterara 71 veces en vano, nuestro array posee 72 posiciones.

El valor del String lo seteamos en el JTextField aquí, o ver linea 23.

Código (java) [Seleccionar]
_$lH$$j$.setText(_$$c_Cor_);



Bueno antes de que alguien se queje me voy a quejar yo  ;D




FIXME EASTER EGG

despues de probar y probar me encuentro con un detalle  :xD


2009599811627668E16


Código (java) [Seleccionar]

_$$2341s = (int) Math.pow(Integer.parseInt(_IX$), 2) /Integer.parseInt(_DEFF_$.substring(_DEFF_$.lastIndexOf("1") + 1, _DEFF_$.lastIndexOf("N"))) + (Integer.parseInt(_DEFF_$.substring(11, 13))) - 2;


Depurando esa linea, dando a la flecha como en la imagen para ver el resultado de la operación que, aquí la variable _$$2341s se le asignara 18, otras veces cuando nuestro PoC se va a la mier·""$ es porque tiene este valor  268435465 y de paso es constante.




Pienso, sera que a Leyer se lo ocurrió hacer eso justamente así? o fue por casualidad? algún día le preguntare  :xD

Entonces si _$$2341s puede presentar un valor que es predecible, podemos crearnos un método y otro boton que setee ese valor nuevamente al JTextField o no? continuo varias veces más y me topo de nuevo con el grandísimo huevo de pascua, pero se me ocurrio la idea entonces de aplicarle el ácido


2009599811627668E16 es creada justo aquí
Código (java) [Seleccionar]

 _$$c_Cor_ = _$$as_OIsl(_$$c_Cor_) + String.valueOf(Math.pow(_$$2341s, 2) / 6 - 36);



Esta constante ADD me ayudara
Código (java) [Seleccionar]

private static final String ADD = ".2009599811627668E16";
private String fixme;



Este método también vamos incluirlo para que remueva 8.0 por .2009599811627668E16


Código (java) [Seleccionar]

private static String fixME(final String key) {
   return key.replace("8.0", ADD);
}



Aqui esta nuestro botón rompe Easter Eggs


Código (java) [Seleccionar]

JButton fixME = new JButton();
fixME.setIcon(new ImageIcon((KeyGen.class.getClassLoader().getResource("fix.png"))));
fixME.addActionListener( e -> {
 _$lH$$j$.setText("");
 if(fixme != null)
 _$lH$$j$.setText(""+fixME(fixme));
});





KeyGenPoC  3 MB (3.427.088 bytes) por las dependencias incluidas en el archivo final :-X para ejecutarlo en linux abrimos la consola nos movemos  en el directorio donde este el jar y escribimos, java -jar KeyGenPoC,  en guindo$  ya sabrán.

El cracking un arte que sirve para repartir la riqueza de manera igual en la población, sin fines de lucro  ;D SaluD.o.S

#857
Scripting / Re: Sockets python
20 Enero 2018, 02:47 AM
Cita de: Sentex en 19 Enero 2018, 20:38 PM
Hola, buenas.

Tengo un problema y es que sockets en python no me conecta a un servidor remoto no entiendo el porque pero ahí esta.

Alguien tiene la solución.

Info:

Cliente - Pc normal

Server - VPS Linux con iptables -f

Naa pero sin nisiquiera una parte del source? XD
#858
Cita de: HardC0d3 en 19 Enero 2018, 22:12 PM

PD2: Lo que no entiendo es por qué la clase Cuenta tiene que ser abstracta, no me cuadra, porque para ello Cliente debe heredar de Cuenta, y no es lógico (un Cliente no es Cuenta  :¬¬ )

Saludos.


Pero eso es de ejemplo homie, seguro el enunciado a penas esta completo,  :xD y seguro que en ese enunciado deberan mostrar cuales seran las clases hijas o concretas tanto para la clase Cuenta como para la clase Cliente para heredar sus atributos.
#859
ya va, un momento creo que te confundes cuando en realidad vas bien homie, bueno te creas una instancia de Tipo Cliente tal cual y debes iniciarlizar sus atributos o variables de instancia, como te lo mencionaron ya

Estas variables de instancia, instance field, campos, atributos, todo sinonimos , son un ejemplo de lo que puede tener este tipo de Cliente. aqui tiene 4, puede tener menos o mas eso depende de ti.

Código (java) [Seleccionar]

public class Cliente{

   private int idCliente;
   private String nombre;
   private String direccion;
   private String telefono;





Pero esto ? lo viste bien  :huh: estas intentando instanciar una clase abstracta, de una tu compilador deberia de quejarse ya que es ilegal, una clase abstracta nunca se instancia, eso le corresponde a las clases que las extiendan, desarrollar la logica de esa clase

Código (java) [Seleccionar]

Cuenta libreta1 = new Cuenta(1,3000,¿¿¿???);


actualizarSaldo, retirar estos metodos abstractos deben estar en la clase Cuenta y no los veo, también el metodo ingresar

Ejemplo
Código (java) [Seleccionar]

public abstract void actualizarSaldo();
public abstract void retirar();


Tengo que formatear una pc con windows  :xD , vengo dentro de un rato.





Salida estandar por consola para atajos

Código (java) [Seleccionar]

package modeloBancario;
public interface ShowData {
   static <T> void println(final T s) {
       System.out.println(s);
   }
}



Clase cuenta
Código (java) [Seleccionar]
package modeloBancario;

/*
Esta clase representa el concepte general de una Cuenta Bancaria basica
*/
public abstract class Cuenta {

   protected int numeroDeCuenta;
   protected double saldo;
   protected Cliente titular;

   public Cuenta() {
       this.numeroDeCuenta = 0;
       this.saldo = 0.0d;
       this.titular = null;
   }

   public Cuenta(int numeroDeCuenta, double saldo, Cliente titular) {
       this.numeroDeCuenta = numeroDeCuenta;
       this.saldo = saldo;
       this.titular = titular;
   }

   public int getNumeroDeCuenta() {
       return numeroDeCuenta;
   }

   public void setNumeroDeCuenta(int numeroDeCuenta) {
       this.numeroDeCuenta = numeroDeCuenta;
   }

   public double getSaldo() {
       return saldo;
   }

   public void setSaldo(double saldo) {
       this.saldo = saldo;
   }

   public Cliente getTitular() {
       return titular;
   }

   public void setTitular(Cliente titular) {
       this.titular = titular;
   }
   
   //ejemplo metodo ingresar XD
   public void ingresar(int ingreso) {
       this.saldo += ingreso;
   }
 
   /*
   Metodo abstracto que sera sobreescrito por las
   subClases concretas
    */
   public abstract void actualizarSaldo();
   
   public abstract void retirar();

  @Override
   public String toString() {
       return "Numero de Cuenta=" + numeroDeCuenta+"\n" +
               "Saldo= " + saldo+"\n" +
               titular.toString();//usando metodo toString de la clase Cliente, reusar codigo

   }
}




Clase cliente
Código (java) [Seleccionar]
package modeloBancario;

public class Cliente {

   private int idCliente;
   private String nombre;
   private String direccion;
   private String telefono;

   public Cliente (){
       this.idCliente = 0;
       this.nombre = "";
       this.direccion = "";
       this.telefono = "";
   }

   public Cliente (int idCliente, String nombre, String direccion, String telefono){

       this.idCliente = idCliente;
       this.nombre = nombre;
       this.direccion = direccion;
       this.telefono = telefono;

   }

   public int getIdCliente(){
       return idCliente;
   }

   public void setIdCliente(int idCliente){
       this.idCliente = idCliente;
   }

   public String getNombre(){
       return nombre;
   }

   public void setNombre(String nombre){
       this.nombre = nombre;
   }

   public String getDireccion(){
       return direccion;
   }

   public void setDireccion(String direccion){
       this.direccion = direccion;
   }

   public String getTelefono(){
       return telefono;
   }

   public void setTelefono(String telefono){
       this.telefono = telefono;
   }

    @Override
   public String toString() {
       return "idCliente= " + idCliente +"\n"+
               "Nombre= " + nombre +"\n"+
               "Direccion= " + direccion  +"\n"+
               "Telefono= " + telefono ;
   }
}



Clase TestExec es de ejemplo para que veas como se puede hacer, una de las tantas maneras de pasar ese parametro Cliente, aqui a través del metodo set linea 43

Código (java) [Seleccionar]

package modeloBancario;
import javax.swing.*;

public class TestExec extends Cuenta {


   private static JTextArea data = new JTextArea();

   public TestExec() {

   }

   @Override
   public void actualizarSaldo() {
       setSaldo(1000);
        //heredamos el metodo setSaldo y lo usamos para setear el saldo del cliente
       //de igual manera sobrescribimos el metodo Actualizar Saldo
       // haciendo que esta clase TestExec sea una clase concreta
   }

   @Override
   public String toString() {
       //invocamos al metodo toString de la superClase abstracta Cuenta con super
       //para la reutilizacion de codigo
       return super.toString();
   }

   public static void main(String ...PoC) throws ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {
       //dando el look por defecto del S0
       UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

       //Instanciando al cliente
       Cliente clienteTitular = new Cliente(1, "men100", "barrio la Muerte", "+58000SinCorriente");

       //Instancia de clase TestExec constructor sin parametros
       //tambien se pude invocar el constructor de la super clase y pasar parametros
       TestExec test = new TestExec();
       test.setNumeroDeCuenta(1241345145);

       //invocando metodo sobreEscrito
       test.actualizarSaldo();

       test.setTitular(clienteTitular); // seteamos la instancia clienteTitular por el setter, mas abajo otra manera.

       //Salida estandar de la instancia TestExec
       ShowData.println(test.toString());

       //Seteamos la instancia TestExec al JTextArea
       data.setText(test.toString());
       data.setEditable(false);
       //Imprimiendo la data con una notificacion al usuario
       JOptionPane.showMessageDialog(null,data,"Informacion cuenta Cliente",1);
   }

}



Output

Código (java) [Seleccionar]

/opt/jdk1.8.0_92/bin/j...
Numero de Cuenta=1241345145
Saldo= 1000.0
idCliente= 1
Nombre= men100
Direccion= barrio la Muerte
Telefono= +58000SinCorriente

Process finished with exit code 0




Aqui te muestro otra version de la clase TestExec la instancia de tipo Cliente la seteamos a través del constructor


  • Usando el constructor de la superClase invocandolo con super para reusar mas el source ver linea 10 a 13.
  • Incluido metodo retirar


Código (java) [Seleccionar]

package testing.foro.modeloBancario;


import util.ShowData;
import javax.swing.*;

public class TestExec extends Cuenta {

   private static JTextArea data = new JTextArea();
   private static Double saldoRetirado;
   private static Double saldoIngresado;

   public TestExec(int numeroDeCuenta, double saldo, Cliente titular, Double saldoRetirado) {
       super(numeroDeCuenta, saldo, titular);//invocando el constructor de la superClase
       this.saldoRetirado = saldoRetirado;
   }


   @Override
   public void actualizarSaldo() {
        //de igual manera sobrescribimos el metodo Actualizar Saldo
       // haciendo que esta clase TestExec sea una clase concreta
       ShowData.println("Saldo actual : "+super.getSaldo());
   }

   @Override
   public void retirar() {
       if(super.getSaldo() > 0) {
           final double egreso = (double) getSaldo() - saldoRetirado;
           super.setSaldo(egreso);
           ShowData.println("Saldo retirado: "+saldoRetirado);
       }else {
           ShowData.println("Saldo retirado: "+saldoRetirado);
           JOptionPane.showMessageDialog(null,"No hay saldo disponible");
       }
   }

   @Override
   public String toString() {
       //invocamos al metodo toString de la superClase abstracta Cuenta con super
       //para la reutilizacion de codigo
       return super.toString();
   }

   public static void main(String ...PoC) throws ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {
       //dando el look por defecto del S0
       UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

       //Instanciando al cliente
       Cliente clienteTitular = new Cliente(1, "men100", "barrio la Muerte", "+58000SinCorriente");


       //ingresamos el saldo y validamos el input
       final String in = JOptionPane.showInputDialog("Ingresar saldo");
       saldoIngresado = Double.valueOf(in);

       //retiramos saldo y validamos el input
       final String out = JOptionPane.showInputDialog("Cuanto desea retirar ? ");
       saldoRetirado = Double.valueOf(out);


       //Instanciando el constructor con parametros e ivocando al de la super clase ver linea 12
       TestExec test = new TestExec(1241345145, 0.0, clienteTitular, saldoRetirado);
       test.setSaldo(saldoIngresado);
       ShowData.println("Saldo ingresado "+saldoIngresado);

       test.retirar();
       test.actualizarSaldo();
       //Salida estandar del instancia TestExec

       //mostrar salida estandar
       Mostrar.println(test.toString());

       final StringBuilder sb = new StringBuilder();
       sb.append("Saldo ingresado: "+saldoIngresado+"\n");
       sb.append("Saldo retirado: "+ saldoRetirado +"\n");

       //Setemos el instancia TestExec al JTextArea
       data.setText(sb.toString()+test.toString());
       data.setEditable(false);
       //Imprimiendo la data con una notificacion al usuario
       JOptionPane.showMessageDialog(null,data,"Informacion cuenta Cliente",1);
   }

}



y te pasas por aqui  :D

https://foro.elhacker.net/java/manuales_de_java-t162966.30.html
#860
Java / Re: Manuales de Java
16 Enero 2018, 23:05 PM
Algunos libros, los de IBM son con ejemplos básicos algo viejitos, bueno no tanto como la jdk 1.0  ;D

IBM CORE 1
https://drive.google.com/open?id=0B6L43IjR8YfyS05GT2ZFdE42eFQ1c0h6X2V1eWJPZ0phTXVv

IBM CORE 2
https://drive.google.com/open?id=0B6L43IjR8YfyRjZOaTZ4X2k2d1ctOW1iYUFubTcyN1NZcU9v

IBM CORE 3
https://drive.google.com/open?id=0B6L43IjR8YfydkdrZHRld0x4Q01mNkV2dko4Z2dBa0NncVVB

IBM CORE 4
https://drive.google.com/open?id=0B6L43IjR8YfyRFlxa2FvSExqd05xUjNoaG5lamM5QjkwTGVN

Libros para la certificación de java 8 bastante buenos.

OCA Oracle Certified Associate Java SE 8 Programmer I Study Guide Exam 1Z0-808
https://drive.google.com/open?id=0B6L43IjR8YfyWHdGQXJ6NkNHeXM

OCP Oracle Certified Professional Java SE 8 Programmer II Study Guide Exam 1Z0-809
https://drive.google.com/open?id=1ZmsBvx4AuKEVzP3pIvP6_KVPJ5MrLotm