Analizando tarjeta BIP! de Transantiago

Estado
Cerrado para nuevas respuestas.
Oigan y los llaveros ya lo comprai uso la app y funciona o abra que configurarlo de otra manera para que funcione en la micro
 
Ndeu como interpretas esa info para saber los viajes? A mi me parece que es un pase escolar , no es una bip normal, por lo que los montos que dices no corresponden.

Es una bip normal, qué te hace pensar que es un pase?

algunas mejoras que le hice al programa:


Bueno, básicamente son 2 métodos, 1 sirve para crear un saldo tipo String (como lo muestra el post1) y el otro es para convertir el String a un arreglo de bytes (para pasarselo al mfc en la app), sirve para quienes aweonadamente cambiaron el saldo y quisieran volver atrás (onda dejar el saldo original), lo que tube que hacer con un par amigos q no querían que cagaran sus pases :)

private String[] crearSaldo(int i) {

int resto = 65535 - i;

String hexSaldo = Integer.toHexString(i);

if (hexSaldo.length() < 4) {
hexSaldo = "0" + hexSaldo;
}

String revSaldo1 = hexSaldo.substring(0, 2);
String revSaldo2 = hexSaldo.substring(2, hexSaldo.length());

String hexResto = Integer.toHexString(resto);

String revResto1 = hexResto.substring(0, 2);
String revResto2 = hexResto.substring(2, hexResto.length());

String cod1 = revSaldo2 + revSaldo1 + "0000" + revResto2
+ revResto1 + "FFFF" + revSaldo2 + revSaldo1 + "0000"
+ "21DE21DE";

String cod2 = revSaldo2 + revSaldo1 + "0000" + revResto2
+ revResto1 + "FFFF" + revSaldo2 + revSaldo1 + "0000"
+ "22DD22DD";

return new String[] { cod1, cod2 };
}

private byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}

No lo probé, pero comento para quien quiera usarlo:
Como va a dejar la opcion de poner cualquier saldo, en la linea que dice
if (hexSaldo.length() < 4) { hay que cambiarlo por
while(hexSaldo.length() < 4){
porque quizas Integer.toHexString(i) le entregue un String de largo 2 o 1, que se yo. Usen while, no if.

Con respecto a "21DE21DE" o "22DD22DD" yo aconsejo que hagan un read de esos bloques y dejen los que estan en la tarjeta. No se si tendra algo que ver, pero algunas tarjetas tienen el 21DE21DE en los 2 bloques.

Te kuento aka mismo: Karga, metro y mikro, saldo antes del Virus T $1700 y algo
uqvcyc.jpg

WpFvFQ.jpg

Espero alguna respuesta Ndeu

Lo mismo, solo se que la micro te cobro $0 y el metro $700

Ya cabros, tienen que estar atentos, en un foro vecino aproximadamente en 2 horas mas, se va a publicar la versión reloaded 1.6, esta va estar disponible por un lapsus de entre 20 a 30 minutos, ojo cabros!.
Nuevas Características del programa:
- Se podrá recargar el saldo que sea --> con un mínimo de $1 y máximo de $64.000.
- Se podrá quitar saldo.
- lo mas importante de todo, se podrá desbloquear las tarjetas que hayan sido bloqueadas hace menos de 2 dias.

Para quienes se la consigan, revisen que al instalarla solo pida permisos de usar el NFC. Si les pide acceso a otras cosas o internet no lo recomendaria. Y que no tenga publicidad.

Sirven las tarjetas de Salfa cabros ;)
Llegando a la casa sigo con las pruebas :D
AM3qDN.jpg


Acá con MCT y testeado con un moto X :

OvDO2D.jpg

Grande Moto X. Esa tarjeta no tiene clave (o sea, tiene or defecto FF...). Para ver la info tienes que poner todos los sectores y te podriamos ayudar.

Hola cabros, voy a dar unos tips (fines educativos solamente).

Como alguien ya dijo, con la app Mifae classis Tool, se puede hacer todo lo que quieras. Solo deben ingresar las KEYS q estan en el primer post. En el icono Edit/add key File se hace, escribanlas a mano (copiar pegar no sirve). Por lo tanto Dejen de pedir apps.

Para cargar saldo con esta app: Van a Tools >>Value Block De-/encoder En VB as Int: $el monto que quieran. En Addr: 22.
Apretar Encode (flechita verde hacia arriba). En VB aparecerá un codigo en Hexadecimal, codigo que tienen q copiar para luego escribir.
Con el codigo copiado, vamos a pantalla principal y Write Tag. En Sector: 8. Block: 22. Data: pegamos el codigo copiado.
Write Block.
Les pedira el archivo donde tienen guardadas las Key acercar la tarjeta y listo.
Sería bueno hacer lo mismo con la linea 21, Es un respaldo de la 22. Hacer lo mismo pero en Addr: 21.
Esto es lo mismo q hace la app Punto Bip.
Pero se pueden hacer muchas otras cosas: guardar la memoria completa de una tarjeta (DUMP) y luego grabar en otra.
Editar como quieran la memoria. Harto para jugar.

Si quieren saber el saldo de una tarjeta luego de leerla van a opciones (arriba ezquina deracha) y Value Blocks as Int.
Como ya sabemos, el sector 8 bloque 21 y 22 guarda el saldo.
Ojo al leer una tarjeta completa se demora un poco, 30 segundos aprox. Se puede hacer mas rapido creando un archivo de llave solo con las claves del sector 8.

Como dije hay muchas opciones.

El bloque 0 del sector 0 (primera linea) donde esta el UID. NO SE PUEDE CAMBIAR (de fabrica viene bloueada) . La app Punto Bip lo que hace es cambiar el numero de bip (en la segunda linea) q viene impresa en la tarjeta. Estoy casi seguro q la trajetas se bloquean por UID, por lo tanto cambiar el numero de bip de poco sirve.

La mejor opción por ahora es andar con los llaveritos o trajetas blancas, como tiene UID fuera del sistema quizas se demoran mas en notarlas. Y cargar aleatoriamente. No montos muy grandes. NO MAS DE 25500, SE BLOQUEAN.

Hacer pasar una carga como legitima creo q no se puede, quizas el validador aprueba el monto y en la web tambien aparece, pero no aparece la carga. Me explico, si cargas 1000 y te quedaban 500, en la web saldrá un salto de 500 a 1000 sin existir carga. Por eso se pueden bloquear.

Para los que estan tratando de averiguar que se escribe en los distintos sectores, no he analizado mucho. Se que en el bloque 0 del sector 4, los ultimos dos Hex antes de los ceros, es la fecha de la ultima carga.
Pero como ya dije hacer pasar una carga por app como legitima creo q no se puede.

Ahora hay otras cosas q se pueden hacer como cambiar los permisos de los sectores y bloques y probar q pasa.
Ideas. Se podría dejar algunos bloques de solo lectura para q al pasar por los validadores no se sobreescriban. Cambiar los sectores q estan como VALORES (6,7,8) en sectores de DATOS. Se puede, no lo he probado.

En este PDF se puede entender mejor como funciona la memoria de la tarjeta:
http://www.nxp.com/documents/data_sheet/MF1S50YYX_V1.pdf

El programa, 010 Editor, q esta en thepiratebay sirve para analizar los dumps.

Y bueno estan las tarjetas chinas con UID modificable (mas caras eso si). Que creo serían imposibles de bloquear.

Y esoooooo, o sea, estan hasta el loli...

Recuerden esta información es solo con fines educativos.

ERROR: Sector: 8 y Block: 22 -> el block debe ser 1 o 2. Tienen que hacer ese paso 2 veces. En uno le ponen Block 1, en el otro Block 2. La misma data. O si quieren, en el de block 1 que termine en 21DE21DE y en el Block 2 que termine en 22DD22DD.

Usar llaveros o tarjetas blancas solo si siempre usan metro. En la micro podrian fiscalizar y no vas a pasar el llavero.

Comparto que hacer pasar una carga legitima solo modificando la bip no se podria, mejor buscar la forma de desbloquear las bip.
Para esto, hay que saber bien como las bloquean. Pienso que si los validadores revisan tu id en una lista cargada seria un mal bloqueo, porque si ese validador aun no es actualizado tu bip podria funcionar en algunos validadores y en otros no.
Por eso creo que modifican algo en la bip. Alguien que tenga una tarjeta bloqueada podria usar el MCT y mostrar el sector 3 (ahi se guarda el "contrato", si es un pase de basica, media, superior, post-pago, quizas-que-otro). A lo mejor el bloqueo es escribir un cod especial ahi y asi cualquier validador aunque no este actualizado la tome como bloqueada.

Como es eso de la fecha? algun formato especial? algun ejemplo?

Por ultimo, para los que se marearon con 21, 22, 33, 34:
Si usan MCT, en write se usa Sector: 8 y Block: 1 y 2 (2 veces se escribe)
Si estan metiendose con android en write() tienen que usar 33 o 0x21 y 34 o 0x22
porque int 33 == hex 0x21 // int 34 == hex 0x22

Suban fotos del sector 3 de tarjetas bloqueadas!
Yo se de una bip! que desde el 8/10/2014 usa estas tecnicas y aun funciona bien (no se cargó con 10.000 porque era mucho)
 
Última edición:
A los que comentaron una información tan valiosa.
Por favor, aqui estan mis dudas mas sinceras.
He jugado harto, pero me surgio la siguiente duda:
1) Si clono una PLOP (De un pase, de una bip, lo que sea) estaremos usando "dos" tarjetas al mismo tiempo? (considerando que la original sigue en circulación?)
2) Habrá alguna forma de importar sólo el saldo al llavero, para que no tenga ningun N° de BIP ni nada por el estilo?

Gracias por la info, ya pude ingresar a dos llaveros y modificar los saldos.
 
Lo q pasa es q si un fiscalizador lo detecta, seguro se puede hacer algo...

En un post anterior, alguien dijo que cuando el uso la plop, en una micro, subio un fiscalizador, y que finalmente no detecto nada malo, ya que la maquinita solo verifica que hayas pagado la micro en el momento.
 
Oigan y los llaveros ya lo comprai uso la app y funciona o abra que configurarlo de otra manera para que funcione en la micro
 
A los que comentaron una información tan valiosa.
Por favor, aqui estan mis dudas mas sinceras.
He jugado harto, pero me surgio la siguiente duda:
1) Si clono una PLOP (De un pase, de una bip, lo que sea) estaremos usando "dos" tarjetas al mismo tiempo? (considerando que la original sigue en circulación?)
2) Habrá alguna forma de importar sólo el saldo al llavero, para que no tenga ningun N° de BIP ni nada por el estilo?

Gracias por la info, ya pude ingresar a dos llaveros y modificar los saldos.
1- Si, X ke kpias los mismos datos de una bio (kreo ke seria asi)
2- No kreo ya ke el sistema te pide el numero de bip, sino, no podrian detektarte...pero va X buen kamino la kosa
 
Entonces,
Lo que va sería lo siguiente, encontrar la info donde se almacena el N° bip para poder cambiarlo a traves de un n° random.
Lo que hice fue leer una bip adultera sin usar aun, y clonerlo al llavero y de ahi cambiar los valores (desde 5000 a 8000)

Saludos!
 
Estado
Cerrado para nuevas respuestas.