Hoe ik mijn CASIO F-91W hackte en omvormde tot een contactloos betaalmiddel

Inleiding

Onlangs heb ik veel gereisd en kon ik de voordelen ervaren van het contactloos betalen voor metro- en busritten of een kop koffie. Systemen op basis van Apple, Google of Samsung Pay vereisen dat je je apparaat actief ontgrendelt, wat het betaalproces vertraagt. Als je in een rij staat met mensen achter je en er gaat iets mis, heb je een probleem.

Als onverbeten nerd draag ik een CASIO F-91W sinds ik nog puistjes in mijn gezicht had. Dit legendarische tijdstuk siert de polsen van tech-liefhebbers wereldwijd dankzij het strakke ontwerp, de stevige bouw en de indrukwekkende batterijduur (die naar verluidt ongeveer 7 jaar gaat). Het werd een symbool van de digitale horlogerevolutie vanaf de jaren '80 met de adoptie van kwarts.

Ik dacht dat het mooi zou zijn om niet mijn creditcard of pinpas uit mijn portemonnee, of mijn telefoon uit mijn zak te hoeven halen, maar in plaats daarvan het horloge dichter bij het betaalapparaat (PoS) te brengen en te betalen met een snufje moderne magie. Daarom besloot ik het horloge een nieuw leven te geven door nostalgie en innovatie te combineren in pure hacking-stijl.

Analyse

NFC-technologie (Near Field Communication) maakt het mogelijk om informatie uit te wisselen zonder direct fysiek contact tussen twee apparaten. In het geval van contactloze betaalkaarten kunnen deze worden gebruikt zonder ze in een PoS-gleuf te steken of een pincode in te voeren, wat financiële transacties sneller en handiger maakt.

In een plastic (of metalen) contactloze betaalkaart vinden we verschillende componenten:

  • Microchip: Vaak aangeduid als een secure integrated circuit (IC) chip of een smart chip. Dit is het brein van de kaart en bevat:
  • CPU: Bestuurt de bewerkingen van de kaart en beheert de gegevensverwerking.
  • Geheugen: Slaat gegevens op zoals accountgegevens, transactiegeschiedenis en beveiligingssleutels.
  • Crypto Core: Kan echte willekeurige getallen genereren, helpt bij het oplossen van rekenkundige uitdagingen en voert encryptie/decryptie uit voor het authenticatieproces tussen de kaart en de terminal.
  • Antenne: Meestal gemaakt van koper of aluminium; verantwoordelijk voor het verzenden en ontvangen van radiofrequentiesignalen. Deze is ontworpen in een specifiek patroon om een efficiënte signaaloverdracht te garanderen.

Via een antenne is het mogelijk om radiofrequente golven over te dragen. De frequentie van het NFC-protocol is 13,56 MHz (in sommige gevallen iets hoger, rond de 14,5 ~ 15,5 MHz voor betalingssystemen of geldautomaten). De golflengte ($\lambda$-lambda) in vrije ruimte wordt berekend door de lichtsnelheid ($\approx 300.000\text{ km/s}$) te delen door de doelfrequentie.

Een ideale antenne zou dus bestaan uit een draad van 22,12 meter lang, maar gebruikelijk is dat fracties van $\lambda$ (zoals $\lambda/2, \lambda/4, \lambda/8, \lambda/16$, etc.) worden gekozen. Een andere belangrijke factor is de elektrische impedantie van de draad, die afhangt van het materiaal, de resistiviteit en de doorsnede van de draad.

Betaalkaarten zijn passieve apparaten die geen eigen stroombron nodig hebben. In plaats daarvan worden ze gevoed door elektromagnetische inductie wanneer ze in de buurt komen van een actief NFC-apparaat. Het actieve apparaat genereert een magnetisch veld, dat een stroom induceert in de antenne van de kaart, wat voldoende energie levert om de chip te activeren.

Evolutie van chip- en antenne-ontwerpen

Oudere smartcards hadden de antenne ingebed in een plastic of harsbehuizing, gesoldeerd aan de chip. Nieuwere technologie maakt gebruik van een dual interface zonder bedrade contacten tussen de microchip en de antennemodules. De antenne in het kaartlichaam heeft enkele extra windingen rond het gebied waar de chipmodule is ingebed. Deze antenne koppelt inductief met een minuscule lusantenne die direct in de microchipmodule is geïntegreerd. Dit vereenvoudigt het productieproces omdat de antenne niet fysiek aan de chipmodule bevestigd hoeft te worden.

In moderne Coil on Module (CoM) kaarten fungeren "vierkantjes" die in lijn zijn verbonden als variabele condensatoren. Samen met windingen op meerdere niveaus stelt dit de module in staat om op verschillende frequenties te koppelen.

Gereedschappen

Om de onzichtbare wereld van radiogolven te kunnen analyseren, heb ik gebruikgemaakt van de volgende apparatuur:

  • NanoVNA (Nano Vector Network Analyzer): Een draagbaar apparaat voor het meten en analyseren van radiofrequentie (RF) en microgolfcircuits. Het biedt nauwkeurige metingen van complexe impedantie, reflectiecoëfficiënten en transmissiecoëfficiënten.
  • Proxmark3: Een open-source hardware- en softwareplatform voor RFID-onderzoek. Het kan RFID-kaarten emuleren en fungeren als reader/writer, waardoor het mogelijk is om signalen te klonen, simuleren en manipuleren.
  • RFID-RC522: Een populaire RFID-module. In dit project is de chip "gecannibaliseerd" om de microstrip-antenne op de PCB te gebruiken als probe voor de NanoVNA.

Voor de koppeling heb ik condensatoren C10 en C11 van de RFID-RC522 verwijderd en vervangen door vrouwelijke jumper-connectoren. Hieraan heb ik een coaxiale kabel van de NanoVNA gesoldeerd (met de binnenkern als positief en de buitenste afscherming als negatief) om een afneembare interface te creëren. Door deze "Frankenstein-antenne" te koppelen aan de S11 → CH0 ingang van de NanoVNA, kon ik de radiogolven visualiseren.

Configuratie

NanoVNA instellingen

Na het inschakelen heb ik de volgende stappen ondernomen om de relevante signalen te isoleren:

  1. Display: In het DISPLAY sub-menu heb ik alle onnodige traces uitgeschakeld (Trace 1, 2 en 3) zodat alleen de gele trace zichtbaar bleef.
  2. Schaal: Onder BACKSCALESCALE/DIV heb ik de waarde op "4" gezet.
  3. Stimulus: In het STIMULUS menu heb ik de startfrequentie op 12,5 MHz en de stopfrequentie op 16 MHz ingesteld. Hiermee filtert het apparaat alle signalen buiten de 12,5 tot 16 MHz band.

Om de instellingen te testen, plaatste ik een reserve NFC-tag op de antenne. Een diepere dip in de grafiek duidt op een hogere resonantie, wat betekent dat de tag goed gekoppeld is met de antenne.

Proxmark3 instellingen

De Proxmark3 vereist een computer. Voor de installatie op macOS heb ik de brew-based tutorial gebruikt.

  1. Firmware: Voor de eerste run is het aanbevolen de firmware te upgraden. Dit gebeurt door de verborgen knop ingedrukt te houden terwijl de Micro-USB kabel wordt aangesloten (DFU-modus).
  2. Update: Met het commando pm3-flash-all wordt de firmware geüpdatet.
  3. Interactie: Na herstart kan men via het commando pm3 de interactieve shell betreden.
  4. Test: Met het commando hf search kon ik de informatie van de NFC-tag en later de betaalkaart uitlezen.

Let op: Beide apparaten kunnen last hebben van ruis op geleidende oppervlakken (zoals metaal). Ik heb ze op een rubberen muismat geplaatst voor stabiele metingen.

Demontage

Om het type betaalkaart te bepalen, moest ik deze demonteren. Met een heteluchtstation (ingesteld op 100 °C) heb ik het plastic rond de chip verhit. Door constant te bewegen voorkom je dat het plastic smelt. Na ongeveer een minuut kon ik de chip met een pincet voorzichtig losmaken.

Hierbij bleek dat de kaart gebruikmaakt van de nieuwe technologie: een chip met een kleine ingebouwde antenne die resoneert en koppelt met de grotere antenne die in de plastic kaartplaat verborgen zit.

Vervolgens heb ik de CASIO F-91W gedemonteerd. Ik verwijderde de horlogebandjes en schroefde de behuizing open. De voorplaat heb ik met de heteluchtkanon (100 °C) verhit gedurende 1,5 minuut, waarna deze met enige kracht naar buiten kon worden geduwd. De interne centrale unit heb ik intact gelaten, zodat het horloge nog steeds de tijd aangeeft.

Inspectie

Ik heb de RF-eigenschappen van de kaart onderzocht met de NanoVNA:

  • De kaartbehuizing alleen resoneert op $\approx 15,28\text{ MHz}$.
  • De combinatie van behuizing + chip resoneert op $\approx 14,85\text{ MHz}$.

Dit experiment toonde aan dat bij het namaken van een antenne niet alleen impedantie, maar ook materiaaldikte en magnetische permeabiliteit van belang zijn.

Afstemming (Tuning)

Antenne-tuning is een complex proces waarbij lengte, afmetingen en impedantie worden aangepast om de gewenste resonantie en efficiënte energieoverdracht te bereiken. Om dit proces te versnellen zonder diep in de elektromagnetische theorie te duiken, heb ik de "fishing tuning"-methode gebruikt.

Het proces van "fishing tuning":

  1. Meting: Ik mat de afmetingen van de chip met een schuifmaat.
  2. 3D-Print: Ik ontwierp een spoel met een chiphouder in het midden, met ruimte voor zowel innerlijke als uiterlijke windingen.
  3. Winden: Met 0,10 mm geëmailleerd koperdraad begon ik met het winden rond de chip en vervolgens op de buitenste spoel.
  4. Real-time monitoring: Met het commando pm3 -> hf tune op de Proxmark3 kon ik in real-time de spanningsval in mV volgen. Hoe hoger de spanningsval, hoe groter de resonantie.
  5. Optimalisatie: Terwijl ik de spoel op de Proxmark3-antenne hield, trok ik het draad langzaam uit de spoel tot ik de hoogste spanningsval bereikte ($\approx 11\text{ mV}$). Daarna knipte ik het overtollige draad af.

Het resultaat was een antennedraad van ongeveer 1,6 meter lang.

Ontwerp

De CASIO F-91W bestaat uit verschillende lagen: metalen kap, batterijhouder, batterij, PCB, display, plastic behuizing en schermbeveiliging. Een antenne aan de achterzijde werkt niet vanwege de "shielding" (afscherming) door de interne componenten.

Daarom heb ik een nieuw ontwerp gemaakt:

  • Voorplaat: Ik heb de originele voorplaat nagemaakt in 3D CAD, maar met een uitsparing voor de chip en een holte rond de hele perimeter om de antennedraad in te winden.
  • Achterplaat: Ik heb de originele metalen plaat vervangen door een 3D-geprinte PLA-plaat. Dit vermindert elektromagnetische ruis die door metaal wordt veroorzaakt, terwijl de esthetiek behouden blijft.

Testen en Afwerking

Om de exacte hoeveelheid draad te bepalen, heb ik de resonantiepiek herhaaldelijk getest met de NanoVNA + RFID-RC522 combo, waarbij ik stukjes draad wegsneed tot het optimaal was. Met de Proxmark3 heb ik bevestigd dat de kaart in zijn nieuwe vorm nog steeds goed gelezen werd.

Afwerking: Het gat voor het display in de 3D-geprinte voorplaat is gevuld met ultra-heldere epoxyhars voor een glazen finish. Dit is uitgehard onder een UV-lamp (48W) gedurende 1 à 2 minuten per zijde.

Montage

De laatste stappen waren:

  1. De adhesie-oppervlakken van de voorplaat herstellen met dubbelzijdige reparatietape voor elektronica.
  2. Alle componenten terugplaatsen in de behuizing.
  3. Het geheel sluiten met de nieuwe achterplaat en de originele schroeven.
  4. Een passende horlogeband toevoegen voor de finishing touch.

Demonstraties

Ik heb het systeem getest bij verschillende winkels en verkoopautomaten. Het systeem werkt vlekkeloos. Het grootste plezier is de verbazing op de gezichten van mensen wanneer ze beseffen dat ik met een vintage Casio betaal.

Toekomstige Ontwikkelingen

Er zijn twee ideeën voor verdere verbetering:

  1. Beveiliging: De mogelijkheid om de antenne te onderbreken en deze pas te kortsluiten via een van de knoppen van het horloge, om zo "digitale zakkenrollers" te voorkomen.
  2. Multi-chip: Het toevoegen van een tweede chip en spoel die via een knop geschakeld kunnen worden.

Conclusie

Deze reis in de wereld van NFC-technologie en radiogolven was fascinerend. Voor een hacker is het een geweldige tijd om te leven, omdat de evolutie van tools en software ons in staat stelt om grenzen te verleggen. Een tech-nerd zijn gaat verder dan passie voor elektronica; het is een mindset van nieuwsgierigheid en probleemoplossing.

Tegelijkertijd is het belangrijk om ethische overwegingen en privacy in acht te nemen. Met grote macht komt grote verantwoordelijkheid.

Disclaimer

De informatie in dit artikel is uitsluitend bedoeld voor educatieve doeleinden. De auteur is niet verantwoordelijk voor illegale acties die worden ondernomen op basis van deze informatie. Het is de verantwoordelijkheid van de gebruiker om te zorgen dat zij voldoen aan alle toepasselijke wetten en ethische normen. Alle acties worden uitgevoerd op eigen risico.