Números tarjeta bancaria…

El número de nuestra tarjeta consta de 16 dígitos. Están separados en grupos de 4 para poder identificarlo mejor, es decir, no es porque cada grupo de 4 dígitos signifique una cosa, sino que la razón eminentemente práctica:

1234567812345678

El significado de esos 16 números es el siguiente:

  • Los cuatro primeros dígitos (1234) son el número de identificación de la entidad que nos proporciona la tarjeta, que es diferente según la entidad a la que corresponde (hasta siendo de la misma entidad, dos tarjetas de distintos continentes pueden tener números distintos).
  • El siguiente dígito, (5) indica el tipo de tarjeta y la entidad financiera a la que corresponde (American Express, VISA, …).
  • Los diez dígitos posteriores (6781234567) son algo así como el número de identificación del usuario al que pertenece la tarjeta, que lo identifican de forma única.
  • El dígito final (8) es un dígito de control.

Y en este último punto es donde entras las matemáticas. El dígito de control se calcula a partir de los dígitos anteriores y sirve para confirmar que el número de la tarjeta es un número válido. Tengamos en cuenta que hay muchos lugares donde se pueden introducir números de tarjeta, por lo que es interesante que exista un algoritmo para desechar números de tarjeta falsos.

El algoritmo que se utiliza para calcular el dígito de control de una tarjeta se denomina algoritmo de Luhn, y se debe al informático alemán Hans Peter Luhn. Está basado en la aritmética modular y los pasos a seguir son los siguientes:

    1. De izquierda a derecha, tomamos las cifras que aparecen en las posiciones impares y las multiplicamos por 2. Si el número obtenido es menor que 10 nos quedamos con él y si es mayor que 10 sumamos las cifras de ese número y nos quedamos con el resultado (esto es, calculamos el valor del resultado módulo 9).
    2. Sumamos todos los resultados obtenidos en el paso anterior. Digamos que esa suma vale A.
    3. Sumamos todos los dígitos que aparecen en las posiciones pares del número de la tarjeta (excepto el dígito de control, que es el que no sabemos). Llamemos B a dicha suma.
    4. Ahora sumamos los dos resultados anteriores. Tomamos el valor de esta suma y vamos restando 10 hasta obtener un número entre 0 y 9 (es decir, calculamos Suma módulo 10). Entonces el dígito de control (DC) es 10 menos ese número obtenido. Expresado matemáticamente:

      DC = 10 – (A + B mod 10)

Para saber si un número de tarjeta es falso lo que podemos hacer es añadir el último dígito del número (el supuesto dígito de control) a la suma de los dígitos de las posiciones pares. Si el resultado de A+B no es múltiplo de 10 (es decir, si no es igual a 0 módulo 10) entonces el número de la tarjeta es falso.

Fuente: https://www.gaussianos.com

Recuperar datos de la RAM…

La RAM almacena datos de lo que actualmente esta corriendo en el ordenador. Todo programa o proceso en ejecución esta en la RAM. Otra cosa es que haya accesos a disco para recuperar informacion, pero todo lo que se esta ejecutando esta en la RAM.

(Casi) cualquier informático, incluso expertos, te dirían que cuando apagas el ordenador, los datos que estaban en la RAM se pierden. Eso es falso. Los datos de la RAM van desapareciendo en un tiempo que oscila entre varios segundos y varios minutos, permitiendo el análisis forense de esos datos aunque se haya apagado el equipo.

Para aumentar este tiempo, podemos usar sprays de aire comprimido que enfríen la RAM a temperaturas cercanas a los -50ºC. Si el asunto es serio, puedes usar nitrógeno liquido hasta alcanzar cerca de los -200ºC para mantener en los chips la información durante HORAS.

Esto puede ser usado para capturar passwords almacenados en RAM, lo cual es muy frecuente que ocurra. Y también puede ser usado para violar utilidades de cifrado como Truecrypt, pues todas ellas se basan en almacenar las claves de descifrado en RAM. Esto se hizo así porque lo creían seguro, pues el S.O. no deja a ningún programa acceder a estas claves en memoria, y en principio la única manera de pasar del S.O. seria apagando el equipo, con lo cual todo el mundo sabe que las claves almacenadas en RAM desaparecerían. Todo el mundo menos los que como no sabían que era imposible, lo hicieron.

Pasemos a la acción.

Apagamos la maquina. Arrancamos con un S.O. desde nuestra llave USB por ejemplo, y copiamos el contenido de la memoria.

Haciendo esto habremos conseguido passwords almacenados en memoria, y claves de cifrado que podríamos usar para descifrar datos cifrados en disco.

Pero antes de pasar a la acción, esperemos un momento, demostremos todo esto.

Crea un programa con un bucle infinito tal que así:

#!/bin/bash
a = 'risperdal'
b = 'vlan7'
while [ 1 ]; do
c = '$a$b'
done

Pero antes de ejecutarlo, pasa todo el contenido de la memoria al disco.

sync

Ejecutalo ahora. No se mostrara nada, pero al cabo de un rato veras que el ordenador empieza a leer de disco, pues la RAM se ha llenado.

Bien, ahora dale al botón de reset, y, cuando la maquina arranque, busca risperdal en memoria:

# strings /dev/mem |less

Veras trozos de la cadena risperdal. Esa es la prueba de que datos de la RAM permanecieron tras el reset de la maquina.

A jugar.

Fuentes: