Dupliquer son badge d’immeuble avec un smartphone c’est facile

Cet article fait partie de la série Expériences NFC / RFID (4 articles au total)

S’il y a quelques années, très peu de personnes avaient entendu parler de technologies comme le NFC et le RFID, il en est désormais tout à fait autrement ! La plupart des nouveaux smartphones milieu et haut de gamme intègrent désormais des puces NFC ce qui rend possible la lecture et l’écriture de badges et cartes sans contact, à commencer par la majorité des badges d’immeuble ! Beaucoup d’entre vous me contactent en me posant la même question : est-il possible de faire soi-même un double de son badge d’immeuble à l’aide d’un simple smartphone ? Et bien la réponse est oui, mais pas n’importe comment !

Edit du 27/03/2020 : je profite du confinement pour mettre à jour cet article. Au menu, quelques infos supplémentaires et un mot sur les systèmes anti-copies qui peuvent vous empêcher de mener à bien cette opération.

Une manipulation réservée à certains smartphones Android

Bien que les nouveaux iPhones aient une puce qui matériellement est capable de lire et écrire sur des badges à 13,56Mhz, je n’ai pas trouvé d’applications permettant de réaliser cette manœuvre. Sous Android par contre il est plus facile de trouver son bonheur : les smartphones équipés d’une puce NFC sont nombreux et il existe plusieurs applications pour cet usage, dont une gratuite assez répandue : Mifare Classic Tool, c’est d’elle que nous parlerons aujourd’hui !

Seuls les badges fonctionnant à 13,56Mhz sont copiables avec un smartphone

En effet, il existe plusieurs types de badges d’ouverture sans contact. L’immense majorité est en 13,56Mhz, mais on trouve aussi quelques badges qui fonctionnent à 125Khz. Les puces équipant les téléphones ne permettant que des échanges sur la bande de fréquence de 13,56Mhz, seuls les badges correspondant pourront être lus… et donc copiés. Si votre portier d’immeuble arbore un petit logo Vigik, il y a de grande chance que votre badge soit à la bonne fréquence !

Pourquoi on ne peut pas utiliser des badges avec UID modifiables « classiques »

Si vous suivez ce blog depuis quelques temps, vous avez peut-être déjà entendu parler de badges RFID qui ont une particularité, celle d’avoir leur identifiant unique (UID) modifiable. Cette particularité est nécessaire pour pouvoir réaliser un « clone parfait » de la puce RFID, en dupliquant son contenu mais aussi son identifiant qui est censé être unique au monde. J’ai utilisé de telles puces pendant des années. Ces puces de première génération fonctionnent à merveille avec un lecteur NFC externe comme le ACR122U, mais on ne peut pas modifier leur identifiant unique depuis un smartphone. En effet, la modification de l’UID nécessite des instructions particulières qui ne sont nativement pas possible sous Android. Je pensais donc que la réalisation d’un « clone parfait » d’un badge d’immeuble n’était possible que via un ordinateur. J’avais tort !

C’était sans compter sur les efforts de sociétés asiatiques qui ont donc créé un nouveau type de badges avec UID modifiables (on parle de badges de deuxième génération). Ces badges ont les mêmes caractéristiques que ceux de première génération, mais permettent également de modifier l’UID via des instructions standards, ce qui les rend pleinement utilisables avec un smartphone Android ! Ces badges sont nettement plus difficiles à trouver, mais sachez que j’en ai quelques uns en stock sur la boutique !

De quoi avez-vous besoin pour dupliquer votre badge d’immeuble ?

C’est pour moi la meilleure partie 🙂 En fait si vous avez déjà un smartphone sous Android compatible NFC, vous n’avez besoin de rien d’autre ! Evidemment il vous faudra des badges vierges adéquats, mais vous pouvez déjà diagnostiquer si votre badge est au bon format sans dépenser le moindre euro !

Donc si on récapitule, pour mener l’opération de bout en bout, il vous faudra :

Comment copier votre badge d’immeuble avec votre smartphone pas à pas

Etape 1 : Créer une sauvegarde (dump) de votre badge d’origine

Le but de cette étape est de transférer le contenu du badge vers un fichier de sauvegarde, un « dump » en anglais. Cela permettra de créer ensuite autant de copies que vous le souhaitez ! Cette étape est cruciale et peut déjà vous permettre de savoir si votre badge est copiable facilement.

Vérifiez que le NFC est activé sur votre appareil (Paramètres > Réseaux > NFC)

Ouvrez l’app Mifare Classic Tool, vous arrivez face à l’écran d’accueil que voici :

L’écran d’accueil de l’application MCT. Ici c’est la partie lecture (Read Tag) qui nous intéresse

Cliquer sur READ TAG, ce qui va vous afficher l’écran de sélection des clés à utiliser :


L’écran de sélection des clés. Le plus sûr est de sélectionner les 2 fichiers de clés.

Cochez les cases extended-std.keys et std.keys

Coller le badge sur l’arrière, un message va apparaître brièvement sur le bas de l’écran avec l’identifiant (UID) du tag détecté

Cliquer sur START MAPPING AND READ TAG. L’application va alors tenter une à une les différentes clés disponibles pour décoder chacun des secteurs qui composent le badge.

Il y a en tout 16 secteurs, sur la majorité des badges d’immeuble (ils renferment des puces de la famille des Mifare Classic 1K la plupart du temps). Il faut compter de quelques secondes à une dizaine de minutes pour que l’application MCT décode tous les secteurs et parvienne à un extraire les données.

Si vous voyez cet écran, c’est bon signe, c’est que l’application MCT a pu décoder le contenu de votre badge ! Félicitations :)

Si tous les secteurs sont lisibles, bravo, vous avez fait le plus dur. Je vous conseille alors d’enregistrer le dump en cliquant sur l’icône en forme de disquette en haut de l’écran, et de choisir un nom parlant. Dans notre exemple, je l’ai appelé badge-original. Ce fichier est la seule chose dont vous aurez besoin pour créer autant de copies de votre badge que nécessaire. Aussi je vous conseille de le stocker en lieu sûr, cela pourra vous être utile en cas de perte de votre badge d’origine par exemple.

En cas d’échec

Si jamais vous avez un écran où plusieurs secteurs sont affichés avec des tirets ou des X rouges, c’est que l’application ne possède pas les clés pour les lire.  Tout n’est pas perdu mais vous ne pourrez probablement pas aller plus loin avec votre smartphone. Il faudra dans ce cas passer par une méthode un peu plus évoluée où vous aurez besoin d’utilitaires comme mfoc ou mfcuk pour trouver les clés manquantes. N’hésitez pas à relire cet article qui vous mettra sur la piste :)

Etape 2 : Transférer le contenu de votre sauvegarde vers un badge vierge

Comme annoncé en introduction, il va vous falloir pour cette étape des badges un peu spéciaux. Il s’agit de badges RFID contenant également 16 secteurs comme notre badge d’origine, mais avec une petite particularité : le secteur 0, habituellement accessible uniquement en lecture, doit également être accessible en écriture à l’aide d’instructions que votre smartphone peut gérer. Je reconnais qu’ils peuvent être un peu compliqués à dénicher, mais vous  trouverez ces badges compatibles smartphone sur la boutique, testés et approuvés !

Toujours depuis l’application MCT, il va falloir se rendre dans la section WRITE TAG disponible sur l’écran d’accueil de l’application Mifare Classic Tool en haut à droite :

L’écran d’accueil de l’application MCT. maintenant c’est la partie écriture (Write Tag) dont on va avoir besoin

Quatre possibilités s’offrent alors à vous, mais c’est la deuxième qui vous intéresse : Write Dump (Clone)

L’écran permettant de transférer le contenu d’un fichier vers un badge vierge

A partir de ce moment, il va falloir scrupuleusement suivre les instructions :

  • Commencer par cocher la case Show Options ce qui va rendre accessible deux nouvelles case à cocher : Use these Access Conditions for all sectors et Advanced: Enable writing to the manufacturer block
  • Cocher également ces deux nouvelles cases. La première case permettra de réécrire sur le badge plus tard (au risque d’avoir quelques différences avec le badge d’origine). La seconde case est capitale : elle va autoriser l’application à écrire le fameux secteur 0 (aussi appelé « Block 0 » ou « Manufacturer Block« ). Notez que si vous souhaitez un badge 100% identique au risque de ne pas pouvoir le réécrire, vous pouvez vous contenter de cocher uniquement la seconde case.
  • Cliquer ensuite sur le bouton SELECT DUMP ce qui va afficher la liste de toutes les sauvegardes de badges disponibles sur votre téléphone.
Liste des dumps disponibles sur le téléphone
  • Sélectionner badge-original si vous l’avez bien nommé comme moi.
  • Un nouvel écran apparaît vous demandant de sélectionner les secteurs que vous voulez écraser en utilisant ceux du dump. Tout est coché par défaut… et c’est bien comme ça.
Ecran de sélection des secteurs à transférer sur le badge vierge
  • Placer à ce moment le badge vierge contre l’arrière de votre smartphone. Un petit message va apparaître en surimpression avec l’UID de votre badge vierge.
  • Cliquer sur OK, ce qui va lancer le processus d’écriture. L’opération ne prend que quelques secondes.

L’application va ensuite revenir à son écran de démarrage. Il m’arrive parfois d’avoir un message d’erreur qui s’affiche, sans que cela ne pose réellement de problème sur les données que contiennent le badge. Si vous rencontrez une erreur, re-faite tout simplement la manipulation, cela suffit la plupart du temps.

Félicitations, à ce moment là vous être normalement en possession d’une copie parfaite de votre badge d’immeuble ! Notez que si vous souhaitez faire d’autres exemplaires du même badge, il suffit de répéter l’étape 2 autant de fois que nécessaire. Vous comprenez donc que conserver le dump de votre badge d’origine est vital pour ne jamais être bloqué à l’avenir :)

Comment vérifier que la copie est parfaite ?

Evidemment vous allez me dire, le plus simple est de l’essayer ! Ce n’est pas faux mais ce n’est pas toujours possible ! Sachez que MCT intègre d’autres outils bien pratiques quand on travaille sur les puces RFID. Par exemple, si vous faites désormais une sauvegarde de votre clone de badge (en déroulant l’étape 1 avec votre clone), vous obtiendrez un nouveau dump (ici je l’ai appelé badge-copie). Et bien dans la section Tools de l’application Mifare Classic Tool, vous pourrez trouver un utilitaire appelé Diff Tool qui vous permettra de comparer les deux sauvegardes/dumps comme vous le voyez ci-dessous. Secteur par secteur, l’application vous montre si la copie et l’original sont identiques.

Voici la liste des outils disponibles dans l’application MCT pour manipuler les dumps. L’outil « Diff Tool » en 4ème position est très utile pour comparer 2 dumps.
Le résultat de la comparaison entre 2 dumps : secteur par secteur, ligne par ligne, l’outil nous indique les correspondances et les différences (s’il y en a). Ici on est bon, tout est identique !

Un mot sur les systèmes « anti-copie »

Parfois, certains d’entre-vous me rapportent que la copie ne fonctionne pas, voire pire, que suite à son utilisation votre badge d’origine a été désactivé. Cela est généralement dû à la présence d’un système anti-copie sur le badge. Je ne connais que 2 marques qui pratiquent cela, mais voici un moyen simple de détecter si vous êtes concernés.

  1. Vous réalisez l’étape 1 de ce tutoriel, en enregistrant la sauvegarde du badge (par exemple en l’appelant « badge-original-1« 
  2. Vous ouvrez votre porte d’immeuble en utilisant le badge
  3. Vous réalisez de nouveau l’étape 1, en enregistrant la sauvegarde du badge avec un nom différent (ex : « badge-original-2« )
  4. Vous comparez avec l’utilitaire « Diff tool » de MCT vos 2 sauvegardes. S’il y a des différences, votre badge est équipé d’un système anti-copie et il n’est probablement pas copiable sans faire appel à votre syndic.

Et si vous avez un doute, n’hésitez pas à me demander, j’essaierai de vous éclairer de mon mieux…. Mais gardez en tête que quoi qu-il arrive, vous êtes responsable de vos actions.

Pour aller plus loin

Avec ce nouvel article, j’espère avoir rendu encore plus accessible ce domaine des badges et puces RFID qui me passionne. Ce ne sera vraisemblablement pas le dernier et l’intérêt que vous manifestez chaque jour via les autres articles sur le sujet et la boutique en dit long sur votre soif de connaissances !

Cet article s’adresse avant tout aux amateurs, mais si vous êtes professionnels et avez besoin de dupliquer et gérer des badges en quantité, sachez qu’il existe des solutions pour vous !

N’hésitez pas à poser vos questions en bas de l’article, et surtout dites moi ce que vous souhaitez que j’aborde comme sujet autour de cette thématique ! Comme toujours j’essaie d’y répondre dès que je peux, et je vous encourage vivement à scanner tout ce qui se trouve autour de vous !

Dupliquer le contenu d’une puce RFID (Mifare Classic)

Cet article fait partie de la série Expériences NFC / RFID (4 articles au total)

Vous êtes de plus en plus nombreux à me poser des questions sur les puces RFID. Pour ceux qui ne connaissent pas ce sigle, sachez que c’est cette techno qui se cache bien souvent derrière vos carte d’accès à votre parking/immeuble/local vélo etc… Depuis quelques années, de plus en plus de systèmes « à clés » sont remplacés par des cartes/badges RFID, sous prétexte de fournir une plus grande sécurité. Mais du coup, vous êtes vous déjà renseignés s’il était possible de se faire un double ?

Pourquoi vouloir faire une copie ?

Peut-être que comme moi, vous n’avez qu’une carte d’accès à votre parking alors que vous êtes deux à utiliser une même voiture. Et si auparavant pour obtenir un double de clé il suffisait de se déplacer chez le cordonnier du quartier, pour une carte RFID c’est une autre paire de manches ! Dans mon cas la réponse du gestionnaire du parking est simple : impossible de me fournir un double, le seul moyen d’avoir une deuxième carte est de louer une place de parking supplémentaire ! Qu’à cela ne tienne, si on ne peut pas me fournir de double, je peux peut-être m’en faire un moi-même ?

Il y a RFID et RFID

Des familles de puces RFID, il y en a quelques unes. Chacune a ses propres caractéristiques et sa fréquence de fonctionnement. Dans mon cas, la puce cachée dans ma carte de parking est une puce Mifare Classic 1K. Un type de puce très courant. En terme de caractéristiques, celle-ci fonctionne a une fréquence de 13.56Mhz, peut contenir jusqu’à 1kilo-octet de données et est protégée par plusieurs clés de chiffrement pour justement empêcher de lire tout le contenu de celle-ci (et donc d’en faire une copie).

Mifare Classic 1K et sécurité

Là où les choses deviennent intéressantes c’est qu’en 2007/2008/2009, plusieurs chercheurs européens ont mis en évidence des vulnérabilités sur la méthode de sécurisation des puces Mifare Classic et il n’aura pas fallu attendre longtemps pour que des outils exploitant ces faiblesses voient le jour. C’est le cas de toute une suite d’outils que j’aime bien et dont je vais vous parler dans cet article : les NFC-Tools.

Notez que les techniques mises en œuvre dans cet article ne sont pas les plus efficaces : cela prendra une dizaine de minutes sur un PC standard, là où les techniques les plus avancées peuvent récupérer le contenu d’une carte complète instantanément.

Dupliquer le contenu d’une puce Mifare Classic 1K

La liste des courses

Pas d’inquiétudes ici, la liste est courte ! Pour dupliquer le contenu de la puce (nos fameux 1 kilo-octets de données) on va avoir besoin d’un PC sous Linux et de 2 éléments qu’il faudra bien choisir :

    • un lecteur RFID compatible avec les NFC Tools
  • une puce RFID vierge (du type Mifare 1K)

Pour le lecteur RFID, il n’y a pas 50 modèles de lecteurs compatibles avec les nfc-tools, et je vous avoue que j’ai un peu galéré à dénicher le mien ! J’en ai 2 différents, qui marchent aussi bien l’un que l’autre : un Identive SCL3711 et un ACR122U. Si vous souhaitez en acheter un, cliquez sur sa photo ci-dessous.

identive-scm-scl3711
Acheter le lecteur RFID USB Identive SCL3711 sur Amazon

Acheter le lecteur ACR122U sur la boutique de l’Atelier du Geek

Pour la puce RFID vierge, il faut très logiquement en choisir une du même type que celle à dupliquer, en l’occurrence nous avons donc besoin du puce Mifare Classic 1K vierge. La forme importe peu, qu’il s’agisse d’une carte, d’un badge ou d’un autocollant, tant que la puce est du bon type. Choisissez le plus pratique pour vous !

Pour la suite de ce tuto, j’utilise une distribution Linux dérivée de Debian, Linux Mint. Cela devrait donc fonctionner sur toutes les distributions avec la même base (Ubuntu, Linux Mint, Kali, Debian…).

Installation des outils logiciels

Pour jouer avec les puces RFID et notamment les puces Mifare, on va avoir besoin de 2 outils du projet NFC-Tools : libnfc et mfoc. Je n’ai pas trouvé de paquets « prêt à l’emploi » et il faut donc récupérer les sources de ces outils pour les compiler avant de les installer. Pour cela, il va falloir jouer de la ligne de commande :

Installation de libnfc

sudo apt-get install libusb-dev
wget http://libnfc.googlecode.com/files/libnfc-1.7.0.tar.bz2
tar -xjvf libnfc-1.7.0.tar.bz2
cd libnfc-1.7.0/
./configure --with-drivers=all
make
sudo make install

Installation de mfoc

wget https://github.com/nfc-tools/mfoc/archive/mfoc-0.10.7.tar.gz
unzip mfoc-0.10.7.zip
cd mfoc-0.10.7
./configure LDFLAGS=-L/usr/local/lib PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
make
make install

Maintenant que nos outils logiciels sont installés, on branche le lecteur SCL3711, on pose notre carte RFID dessus et on entre la commande suivante :

nfc-list

Et si tout est correctement installé, votre console devrait afficher quelque chose de ce genre là :

NFC device: SCM Micro / SCL3711-NFC&RW opened
1 ISO14443A passive target(s) found:
ISO/IEC 14443A (106 kbps) target:
ATQA (SENS_RES): 00 03
UID (NFCID1): 21 ad 3b 1a
SAK (SEL_RES): 09

Ok, maintenant on est prêt à passer aux choses sérieuses.

Copie des données de la puce mifare : la cinématique

Pour faire une copie des données de la puce mifare, il va falloir procéder en 3 étapes :

    1. Trouver les clés de chiffrement de la puce vierge
    1. Sauvegarder le contenu de la puce mifare dans un fichier
  1. Transférer le contenu du fichier de sauvegarde sur la puce vierge

L’opération prend environ une quinzaine de minutes et demandera là aussi de saisir des commandes dans le terminal.

Etape 1/3 : Trouver les clés de chiffrement de la puce vierge

Placer la puce vierge sur votre lecteur RFID et entrez la commande suivante :

mfoc -P 500 -O carte-vierge.dmp

Le contenu , et les clés de chiffrement de votre carte vierge est désormais sauvegardé dans le fichier carte-vierge.dmp

Etape 2/3 : Sauvegarder le contenu de la puce mifare à copier dans un fichier

Placer la puce mifare à copier sur votre lecteur RFID et entrez la commande suivante :

mfoc -P 500 -O carte-originale.dmp

Le contenu de la carte originale est sauvegardé dans le fichier carte-originale.dmp. Je vous conseille de garder de côté ce fichier : en cas de perte de la carte originale, il vous permettra d’en créer de nouvelle.

Etape 3/3 : Transférer le contenu du fichier de sauvegarde sur la puce vierge

A nouveau, placez la puce RFID vierge sur votre lecteur RFID et entrez la commande suivante :

nfc-mfclassic w a carte-originale.dmp carte-vierge.dmp

Un message devrait vous informer du succès de l’opération. Et voilà, vous avez désormais 2 puces RFID avec le même contenu !

Ces cartes sont-elles vraiment identiques ?

Hélas pas vraiment ! Si dans mon cas je peux désormais accéder à ma place de parking avec mon badge original ou mon badge copié, il n’en va pas forcément de même avec tous les lecteurs d’accès RFID. La faute à l’identifiant unique de la puce (dans le jargon on appelle ça l’UID pour Unique IDentifier). Cet identifiant est gravé en usine et chaque puce possède un UID unique au monde. Si produire un clone parfait de votre carte vous intéresse n’ayez crainte, il existe des solutions ! J’en parlerai dans un prochain article ;)