Sans même le savoir, vous l’utilisez tous les jours. Insérer une carte pour démarrer un véhicule, badger pour pointer au travail, badger pour ouvrir une porte, ou pour utiliser une remontée mécanique au ski, valider un titre dans les transports en commun, ou encore badger pour acheter votre café. Tout ces gestes quotidiens utilisent la technologie sans contact RFID pour « Radio Frequency Identification« .

L’origine de la RFID

Pour l’anecdote, la technologie RFID a connu ses premiers jours pendant la 2nd guerre mondiale. Afin d’identifier si les avions qui arrivaient dans l’espace aérien britannique étaient amis ou ennemis, les avions alliés installaient des transpondeurs qui envoyaient des réponses aux radars qui les questionnaient. Le système était appelé IFF « Idendify Friend or Foe ». Aujourd’hui, le trafic aérien reste encore basé sur ce principe.

Cette technologie s’est développée dans les années 70, avec des tags dits « actifs » qui devaient être alimentés comme le lecteur. L’usage était donc restreint à certains domaines tels que le secteur nucléaire, ou militaire. Le véritable prédécesseur du RFID a été breveté en 1973, il concerne l’utilisation de tags dits « passifs » qui reçoivent leur énergie via le lecteur, cela rend le tag beaucoup moins coûteux et plus pratique. À ce moment là on commence à envisager son utilisation dans les banques, la sécurité, le transport, la logistique…

Aujourd’hui, le RFID est utilisé dans de nombreux secteurs, dont le marquage de vêtements qui représente environ 80% du marché des étiquettes passives. IDTechEx prévoit que le marché du RFID pèsera près de 14 milliards de dollars en 2020, 34 milliards d’étiquettes RFID (dont 33 milliards de passives) ont été vendues depuis le début de la RFID, dont 7.5 milliards en 2014, c’est pour dire l’importance du RFID aujourd’hui.

Fonctionnement

Son fonctionnement est assez simple, on utilise des « radio-étiquettes » ou « RFID tag » en anglais, qui sont activés par un transfert d’énergie électromagnétique entre l’étiquette RFID (composé d’une puce et d’une antenne) et le lecteur. Ces lecteurs sont des dispositifs actifs, ils émettent des radiofréquences qui vont activer les étiquettes qui passent devant eux, en leur fournissant de l’énergie. Les étiquettes ont une capacité de 2Kio mais la plupart n’utilisent pas cet espace et ne contiennent d’un ID de 96 ou 128 bits.

Il existe différentes fréquences :

    • 125 kHz : ils sont d’un poids et d’une taille réduite, ils sont utilisés dans tout type de matériaux comme les textiles, métaux, etc.
    • 900 MHz : les étiquettes possèdent des antennes imprimées ou gravées, elles peuvent être lus à plusieurs mètres.
    • 13.56 MHz : la plus répandue dans l’industrie et le grand public pour des applications à portée limitée (badge café, badge porte, etc). Les antennes peuvent être imprimées ou gravées ce qui les rend très fins.
  • 2.45 GHz ou 5.8 GHz (micro-ondes) permet des portées de plusieurs mètres, cette fréquence est notamment utilisée pour le télépéage.

Copier un badge

Avant toute chose, sachez que vous êtes responsable de l’utilisation que vous allez faire de cette méthode, ce tutoriel a seulement pour objectif de pointer du doigt le manque de sécurité du RFID, et je ne peux en aucun cas être tenu responsable de vos actes.

Extraire les clés de chiffrement de la puce RFID chinoise dans un fichier

Cette étape au nom un peu barbare ne devrait vous prendre que quelques secondes. Son principe ? Pour pouvoir écrire sur une puce RFID, il faut en posséder les clés de chiffrement. Une sorte de mot de passe qui permet d’encoder et de décoder les informations de la puce. Ces clés de chiffrements vont être stockées avec le contenu de la clé, dans un fichier. Ce fichier nous servira lors de l’étape finale pour copier les données de la puce originale sur la puce chinoise.

Pour lancer l’extraction des clés de chiffrement, placez votre puce sur le lecteur et saisissez dans un terminal la commande suivante.

Les clés de chiffrement seront stockées dans le fichier « carte-vierge.dmp ».

Copiez le contenu de la puce RFID d’origine dans un fichier

Maintenant que les clés de chiffrement de la puce chinoise sont extraites, il va falloir faire de même avec la puce originale. Cette opération va copier les clés de chiffrement et le contenu de la puce d’origine dans un fichier. Ce fichier contiendra toutes les données de la puce, ainsi que son UID. C’est en quelques sorte une « sauvegarde » de votre puce RFID. N’hésitez pas à la conserver en lieu sûr, ainsi si vous perdez votre puce RFID vous pourrez en créer de nouvelles à l’identique à partir de ce fichier de sauvegarde.

Pour ce faire, placez la puce originale sur votre lecteur, et entrez la commande suivant :

Vous l’aurez surement compris, cette commande va créer un fichier « carte-originale.dmp » c’est le fameux fichier de sauvegarde de votre puce originale.

Ecrire le contenu de la puce originale sur la puce chinoise

On arrive au bout ! Vous n’êtes plus qu’à une dernière commande de la victoire ! Maintenant que l’on possède une copie du contenu de la puce originale, ainsi que les clés de chiffrement de la puce chinoise, nous allons pouvoir transférer le contenu et l’UID de la puce originale sur la puce chinoise.

Pour se faire, et toujours dans le terminal, saisissez la commande suivante.

Astuce pour OS X

brew install libnfc
brew install libusb
brew install mfoc
brew install pcsc-lite

sudo launchctl stop com.apple.ifdreader

 

Modifier le montant d’un badge de machine à café

Je rappel que ce tutoriel a uniquement pour but de montrer les failles de sécurité du RFID, vous êtes donc responsable de l’utilisation que vous allez faire de cette méthode.

Si ce que vous voulez copier est un badge de distributeur, je vais vous montrer ici une faille de sécurité qui permet de modifier le montant stocké en clair sur le badge. Cette astuce fonctionne seulement sur quelques modèles de distributeurs dont je ne citerai pas les marques.

D’abord, vous devez connaître le montant exact que contient votre badge.

Exemple si votre carte contient 9.44€, tapez cette commande pour extraire le contenu :

Ensuite il faut que le montant du badge change, vous devez donc soit recharger le badge, soit acheter un produit.

Une fois que le montant a changé, notez le nouveau montant et extrayez à nouveau le contenu, exemple si j’ai un nouveau montant de 9.10€ :

Ensuite ouvrez les fichiers avec un éditeur de texte qui gère l’hexadécimal comme « Sublim Text », et comparez les différences entre ces deux fichiers, pour cela je vous conseil de copier le contenu des fichiers sur ce site :

http://www.diff-online.com/fr

Dans mon exemple, la différence se trouve au niveau de la ligne 51 :

Comme vous pouvez le voir sur la photo, sur le premier fichier « badge944 » on a une valeur en hexadécimal de « 3b0 » qui vaut « 944 » en décimal pour 9.44€, et sur le second fichier « badge 910 » on a une valeur de « 38e » qui vaut « 910 » en décimal, pour 9.10€.

Pour passer de l’hexadécimal au décimal je vous conseil d’utiliser ce convertisseur.

Ainsi il vous suffit de convertir votre montant souhaité (les machines acceptent en général 20€ maximum) en hexadécimal, et de le modifier dans le fichier.

Pour cela vous devez donc extraire le badge original « badge910 » avec 9.10€ dessus, ensuite vous copiez le fichier et le nommez par exemple « badge1999 » pour mettre 19.99€. Dans le fichier « badge1999 » allez à la ligne à modifier (ligne 51 dans mon cas) et modifiez le montant en hexadécimal (je remplace 38E par 7CF pour passer de 9.10€ à 19.99€) puis posez le badge sur le lecteur et vous utilisez la commande suivante pour modifier le montant dans le badge :