Riding (for) free: TMB hacking


Published: June 2026

Sembla que finalment s'ha establert la famosa T-mobilitat així com l'App associada al telèfon mòbil. Per aquest motiu crec que ja ha arribat l'hora que expliqui aquesta petita història de com vaig/vam viatjar uns anys en metro de forma totalment gratuïta.

Rerefons

Sembla que fa poques setmanes que les últimes targetes magnètiques de metro i bus s'han deixat de vendre (si hem de fer cas als diaris on s'indica que un 5% dels viatges es fan amb aquestes targetes encara) o han quedat invalidades per a viatjar. Aquestes targetes magnètiques es podien adquirir a les màquines del metro o similars i també en alguns estancs.

T-10 antiga

Aquestes targetes no estaven (òbviament) linkades a cap tipus de compte online, ni identitat, ni, en principi, res conegut. De fet, durant algun temps, no tenien ni mesures de seguretat. Finalment els van afegir una banda brillant a la part de darrera per a complicar-ne la còpia.

T-10 antiga amb banda

Sembla ser que era un problema relativament comú, es troben molts articles relacionats amb la venda de bitllets fraudulents:

Hi ha una barreja de gent clonant targetes, fent-ne de "noves" o reciclades, també de lladres amb "amics" al TMB (furt de bobines de targetes), etc. La majoria d'articles són relativament recents, pel que sembla que la falsificació no era tan coneguda abans de tota aquesta història (això o Google és realment una merda).

Un lector magnètic

Si alguna cosa es té a la facultat és temps, i si alguna manca són els calers. Un dia per casualitat es va donar la convergència de circumstàncies on un amic va comprar-se un lector de targetes magnètiques, uns altres amics em van parlar de hackejar el metro i jo devia tenir exàmens finals, pel que la meva creativitat i procrastinació es devien trobar en màxims històrics.

El lector en qüestió: un MSR206, d'alta coercivitat. Els primers experiments amb targetes van revelar allò que ja sospitàvem: aquestes targetes són una mica especials i no són fàcils de gravar. Les de crèdit de tota la vida no posen massa problemes però les de cartró amb banda magnètica estreta sí. Per això era necessari aquest tipus de lectors d'alta coercivitat. Per a llegir-les qualsevol val, de fet vaig arribar a llegir-les amb un lector d'aquests de barrel 2.5mm.

Amb tots vostès el MSR206

Lector de magstrip 2.5mm

Una vegada vam comprovar que era possible llegir i escriure les targetes (a.k.a. clonar-les) em vaig posar a investigar com funcionen més a fons.

Moltes targetes

Dos amics, de forma totalment independent i per voluntat pròpia, havien guardat dotzenes de targetes als seus calaixos. Diguem-li síndrome de Diògenes o que eren uns believers (un d'ells em va dir: "Ho guardava per quan arribés aquest dia"), això va suposar una enorme font d'informació. Vaig dumpejar moltes targetes i crear una base de dades (aka un humil arxiu .txt) i amb paciència vaig poder entendre com funcionava el tema.

Les targetes guarden uns 25 bytes d'informació (hi ha més bits però són heading o trailing bits amb l'objectiu de permetre al lector "enganxar-se" a la lectura quan una targeta es passa pel lector). En aquests bits hi ha tot el que es necessita per a descriure la targeta. En el meu cas em faig centrar en les targetes de TMB (metro/bus/tram) i no pas en les específiques de Renfe o FGC.

Fent un cop d'ull per sobre els elements més importants són:

  • Identificador únic de 32 bits.
  • Data de caducitat
  • Tipus de targeta
  • Nombre de zones i viatges restants
  • Informació sobre l'últim viatge iniciat (incloent estació i hora/data)
  • Checksum

El checksum era una simple XOR dels bytes anteriors, simple però efectiu. Els diferents tipus de dades els vaig trobar parcialment fent ús de la meva "base de dades": T-10, T-mes, T-trimestre, etc. Alguns camps com la data de caducitat no estan associats al tipus, així que es pot crear una T-mes que caduqui en 4 mesos, per exemple.

Programa que vaig crear per la meva comoditat

Les targetes estaven prou ben fetes. Per exemple, les T-10 permeten viatjar a un grup de persones, pel que és necessari un comptador de nombre de persones així com un comptador de nombre de transbords, per assegurar que 3-4 persones poden viatjar i fer els transbords legalment permesos correctament. Em va sorprendre que tot això fos funcional en una targeta de cartró.

Per a poder crear, copiar i llegir targetes vaig crear un petit software, en Qt3?, que permet fer tot això. L'he penjat al meu github per si algú li vol fer un cop d'ull (for the lulz, perquè ara mateix no és massa útil).

Ens va el risc

Per a viatjar sense pagar, no era suficient amb clonar targetes, calia alguna cosa més. Inicialment el que feia era buscar màquines que no tinguessin tinta: sense tinta no es marca pel darrera, és extremadament comú i ningú sospita, i pots recarregar un viatge sense aixecar sospites. És una mica pesat i has de portar diverses T-10 a sobre, no és ideal.

Posant el focus en les T-mes/trimestre (ja que no es marquen a cada viatge) era possible allargar la seva data de caducitat. De fet, la màquina escrivia al darrera la data de caducitat durant el primer ús i el missatge "Títol esgotat" en arribar la data. Emprant una goma d'esborrar o una màquina amb poca tinta (o una mica de celo a darrera) era possible falsificar la data. El problema però: la targeta està escrita pel devant (per la màquina expenedora), pel que seria prou sospitós viatjar al maig amb una targeta venuda al febrer, que encara té 10 dies de validesa (no seria invàlid, simplement sospitós, especialment si han passat molts mesos entre les dates).

I aquí és on vaig trobar el jackpot gràcies a amics i coneguts: a l'estanc es podien comprar T-mes/T-10 que no tenen cap tipus de gravat/imprès a la cara principal. En el seu lloc hi ha un espai en blanc on se suposa que s'ha d'escriure la data del primer ús (amb un bolígraf). Els revisors però, no li donen massa importància: al cap i a la fi ells ho validen tot amb el seu lector.

Amb aquestes T-mes vaig viatjar uns anys, sense que ningú sospités res. De fet, les poques vegades que vaig trobar revisors (a l'intercanviador de Sants), vaig esquivar-los. Fins que un dia però, la curiositat em va poder i vaig decidir que validessin el bitllet. I he de dir, que va funcionar perfectament!

T-mestre

Menció especial pels companys de la T-mestre. Cap als volts del 2012 van aparèixer uns nanos que havien fet alguna cosa similar, però a diferència del jo no-mobilitzat políticament del 2012, ho van compartir amb el món. El nom de l'operació: T-mestre, en el context del moviment polític del 15M, l'auge de les operacions cibernètiques dels anomenats Anonymous i del descontent polític generalitzat del moment.

Els arxius no estan disponibles així que no podem veure què sabien ells sobre el format de la targeta. Crec recordar que tenien informació similar a la meva. També una aplicació escrita en Qt4 (amb python però); sempre sospitaré que fos algun grup de FIBers.

De fet, revisitant aquest article, acabo de veure que a la secció de comentaris hi ha comentaris fins fa ben poc, sembla que hi havia gent fent ús d'aquestes targetes encara. He trobat també un post on s'explica una mica més, no sé si de manera fidedigna.

TMB fights back!

Cap al 2012 TMB va afegir la famosa banda platejada a les targetes, suposo que per evitar que la gent les imprimís a casa o fossin tan fàcils de copiar. Però poc temps després vaig començar a experimentar quelcom nou: a vegades la targeta clonada no volia funcionar. La meva explicació (després de fer moltes proves) és que TMB estava detectant targetes clonades. De fet, a l'article anterior ja s'esmenta això de forma pública ("Hay mayor presencia de la Guardia Urbana y se han instalado máquinas validadoras que incorporan sistemas de bloqueo para tarjetas copiadas.").

La meva explicació (que vaig més o menys validar experimentalment) era: les màquines (algunes potser, probablement no totes) registren en algun sistema central l'ID de la targeta i el nombre de viatges restants. La meva hipòtesi era que si detectaven una targeta sospitosa (per exemple una T-10 que s'ha picat 35 cops) la posaven a algun tipus de llista negra que permetia a les màquines rebutjar-la quan la trobaven.

La meva hipòtesi estava basada en certes assumpcions:

  • És impossible que la màquina realitzi un accés/consulta (quan es pica el bitllet) a un sistema central. És massa ràpida i el sistema hauria de ser bastant ben fet, poc probable tractant-se de Barcelona.
  • És possible que la màquina tingui una petita memòria i que pugui enregistrar certes dades o esdeveniments, així com transmetre-les a algun sistema del TMB. Aquest flux d'informació potser només funciona en algunes màquines i no és massa fiable, però en general funciona.
  • Les màquines poden rebre actualitzacions de configuració (al cap i a la fi la màquina sap quina data és avui, quin any, etc.) i això podria incloure una llista de IDs de targetes prohibides.

També em vaig basar en el fet que molts pirates probablement només copiaven les targetes i no sabien crear-ne de noves. De fet, vaig arribar a tenir algun contacte online amb gent que venia targetes en portals dubtosos, i sembla que simplement les copiaven sense saber massa com funcionen.

Aquest sistema permetria a TMB invalidar moltes targetes clonades amb poc esforç, sense canviar massa com funciona la màquina, i de forma suficientment efectiva com per a que els compradors de títols fraudulents no se'n refiessin més dels venedors (només cal una mala experiència realment!).

I aquí acaba aquesta història. Han passat més de 12 anys, ja no hi ha targetes magnètiques (potser encara les de Renfe però?) i si es va cometre algun delicte, ja està prescrit. Si algú llegeix això i té més informació del tema, que em contacti. Tinc curiositat de saber qui més feia coses semblants.