Comprobar los comentarios que hago en el archivo adjunto, aunque estan en ingles se entienden, si tengo tiempo traducire lo mas importante.
http://www.hispalan.com/archivos/MF1S50.pdf Caracteristicas de la tarjeta y estructura: La tarjeta esta compuesta de 1k = 1024bytes* x 8bits**, cion la siguiente distribucion (pagina 9):
La tarjeta dispone de 16 sectores independientes, y cada sector dispone de 4 bloques y cada bloque de 16 bytes*.
Por lo que cada bloque tiene 16 caracteres, multiplicamos x 4 y nos da 64 caracteres por bloque y si multiplicamos por 16 sectores nos da exactamente 1024 caracteres = 1 k
Bloque 0, informacion del fabricante (pagina 10)
La informacion esta guardada en el sector 0 y bloque 0, de la siguiente forma
4 primeros bytes es el numero de serie, el 5 byte es el byte de comprobacion y los restantes (6-16) son datos del fabricante, lo imporante es que se puede editar.
Bloques de datos
Son los primeros 3 bloques de cada sector(0,1,2), excepto en el sector 0 que tiene el bloque 0 con la informacion del fabricante y es de solo lectura.
Cada bloque de datos dispone dispone de 16 bytes, organizados asi
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
VALUE | VALUE | VALUE | adr|ADR|adr|ADR
Las grupos VALUE de datos, son los mejores, en cuanto a almacemaniento de datos y el tratamiento de los mismos, ya que permiten leer, escribir, incrementar, descontar, restaurar y transferir) aparte tienen un comprobante de la transmision, por lo que si no se hace correctamente esta se vuelve a enviar.
Los bytes ADR son para direcciones de bloques y restaurar informacion (hasta 3 cambios).
Bloque 3 en los 16 sectores (pagina 11)
Este bloque en todos los sectores contiene las dos keys A y B de 6 bytes cada una, 12 en total, mas 4 bytes de acceso...
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
KEYA | Access | KEYB
Funcionamiento (pagina 12)
identificacion y seleccion de la operacion a realizar
Para por autentificarse con la KEY A Y/O B y de ser positiva se concede el acceso
Entonces pasaremos a operar en los distintos bloques:
Bloques 0,1,2 de todos los sectores (excepto el bloque 0 del sector 0) VALUE: leer, escribir, incrementar, descontar, restaurar y transferir.
SECTOR 3 de todos los sectores, READ/WRITE: leer y escribir
Hace la comprobacion y da el ok.
Bits de acceso
EN LA PAGINA 13,14, 15 SALEN DOS FIGURAS QUE LO EXPLICAN PERFECTAMENTE
Son combinaciones de 3 bits, que hacen activar una u otra key, o las dos, asi como los permisos para operar en dicho sector, leer, escribir, incrementar....
Contraseña y acceso Cada sector dispone de 2 keys, key A y key B, cada contraseña esta compuesta por 6bytes, que en hexdecimal (como vamos a usarla) son 12 caracteres a elegir entre el 0 al 9 y de la A a la F
Estas son obligatorias para acceder, por eso el fabricante tiene unas por defecto:
KEY AFFFFFFFFFFFF
A1A1A1A1A1A1
A1A2A3A4A5A6
Key B:FFFFFFFFFFFF
B1B1B1B1B1B1
B1B2B3B4B5B6
Si disponeis de un lector y una tarjeta virgen, solo debeis elegir un sector de los 16 disponibles, del 0 al 15, y en la key A, poner una de las siguientes:
**Bit, es en codigo binario la unidad, es decir, 0 o 1.
*Byte, es en codigo ascII un caracter de 256 posibles, que se producen al combiar 8 bits, a groso modo, quiere decir que un byte es un letra, numero o simbolo.
Sacar contraseña por fuerza bruta?? Pues poder se puede como todo en esta vida, pero vamos a dar unas explicaciones y que cada uno opine.
Como dije antes una contraseña tiene 6bytes, lo que equivale a 48 bits o 12 caracteres hexadecimales (siempre que la key b no este activa).
Posibilidades
La contraseña al ser de 6 bytes y cada byte al tener 256 caracteres diferentes, la cosa seria asi:
256 elevado a 6 = 256*256*256*256*256*256= 281.474.976.710.656, 281 billones de combinaciones
En comparacion con la primitiva, que son 45 bolas y 6 numeros, como salen del mismo bolo hay que ir descontando:
45*44*43*42*41*40= 586.4443.200, 586millones entre 1, creo que cuesta 1 eur la apuesta, y no quiero averiguar los premios que dan porque seran ridiculos, en comparacion con las posibilidades, pero ira por recaudacion, botes...
Como veis es mas facil acertar la primitiva que la contraseña, la ventaja de esta ultima, es que podemos intentarlo varias veces y no nos cobran por ello, pero aun asi de ser muchas combinaciones, tienes que autentificarte para comprobarla lo que lleva un segundo aprox, lo que son 281 billones de segundos lo que son 8.925.513 años con una key por segundo, pero claro se romperia antes el lector y la tarjeta, no suelen durar casi 9 millones de años, la unica posibilidad por fuerza bruta seria que se pudiera longear como un handshake (como en redes wap) y a partir de ahi comprobar contraseñas, siempre que esto utilizando programas como cowpatty, airolib, adaptados para esto, he visto que consiguen hasta 200.000keys segundo lo que lo reduce a 44,62 años cosa poco fiable si no se aumenta radicalmente la velocidad.
Se podria hacer, si descubrieramos algunos caracteres de la clave sean comunes, o que sean el numero de serie y fabricante..., para asi rebajar las posibles claves.
Ataque diccionario, hay poca info, deberiamos de tener muchas contraseñas de series correlativas para poder pensar en algo, aun asi, estas tarjetas suelen ser por provincias o por empresas, por lo que no podriamos contar con mucha gente para ello. A no ser que utilicen como dije antes algun calculo a partir del numero de serie, fabricante...
Continuare, si me he equivocado en algo no lo se, ya que es tarde y me he podido liar, la culpa al sueño k no se puede defender jiji...