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

rfid-tags-cropped

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 ! Heureusement il est un petit peu plus facile à trouver désormais voici son petit nom : Identive SCL3711. Si vous souhaitez l’acheter, cliquez sur sa photo ci-dessous.

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

Installation de mfoc

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 :

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

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
  2. Sauvegarder le contenu de la puce mifare dans un fichier
  3. 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 :

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 :

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 :

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 ;)

46 commentaires

  1. Hello,
    Merci pour ton article très intéressant, je m’intéresse un peu à cette techno, cependant aujourd’hui les cartes RFID 1k se font rares, elles sont de moins en moins utilisées au vu de leur sécurité. Peut-on faire de même avec les 4k et autres badges/cartes que l’on peut trouver un peu partout ? Et les cartes chinoises sont-elles la solution pour ces blocages ?
    Cordialement,

  2. De plus est-il possible de voir le contenu complet qui est en clair sur une carte avec une de ces librairies ?
    Merci

  3. Hello,
    Question bien générique que voilà ;) Les badges 4k sont vulnérables de la même manière (ils embarquent 4 fois plus de données) mais la sécurité est la même ! Honnêtement les seules puces robustes en matière de sécurité sont celles embarquant un microcontrôleur, et vu leur coût on n’en voit pas souvent ! Les cartes chinoises servent à autre chose, j’en parlerai bientôt ;)

  4. Les fichiers générés par la commande mfoc sont éditables avec n’importe quel éditeur hexadécimal, le contenu de la carte y est stocké en clair.

  5. Bonjour,

    Où peut-on trouver des cartes RFID vierges et comment peut-on savoir la technologie utilisée par une carte que l’on souhaiterait clôner. Pour ma part, je voudrais cloner mon badget d’accès au parking de mon immeuble mais aussi mon badge d’accès dans mon immeuble (l’un est une carte et l’autre et un badge).

    Etant obliger d’utiliser Linux ? Je n’ai sous la main que Win8.

    Peux tu faire une vidéo tuto et nous l’envoyer par MP.

    Une fois cloner la carte peut elle etre réutilisable (effacable tels un CD-R) ?

    Merci bien

  6. Bonjour,
    Pour connaître le type de carte, le plus simple est d’utiliser un téléphone Android compatible NFC avec une application comme NFC tag Info
    Les puces RFID peuvent être achetées un peu partout, notamment sur Amazon :

    A ma connaissance, pour utiliser mfoc il faut obligatoirement passer par linux, en suivant le tuto de cet article.

    Quant à la réutilisabilité de la carte, oui, elle est réinscriptible, à l’image d’un CD-RW.

    Alexandre

  7. Bonjour,

    j’ai une carte d’accès que je souhaite dupliquer mais comment connaître le type de puce qui est dedans ? Il n’y a rien de marquer dessus. Il y a des droits d’accès gérés avec, je n’ouvre pas toutes les portes avec.

  8. Bonjour darkcristal,
    Pour connaître le type de carte, comme je le disais dans un autre commentaire, le plus simple est d’utiliser un téléphone Android compatible NFC avec une application comme NFC tag Info. Avez-vous ce type de smartphone à disposition ? Sans lecteur ou smartphone compatible NFC, il est impossible de « deviner » le type de puce.

    Alexandre

  9. Bonjour Mecano91,

    Je ne pense pas qu’il existe un logiciel Windows pour ce genre de manipulation… Si tu veux utiliser ce lecteur sans avoir à installer un système linux de manière définitive sur ta machine, tu peux essayer un LiveCD tel quel Kali Linux (https://www.kali.org/). A ma connaissance, Kali Linux intègre déjà les NFC-Tools, à priori donc tu pourras démarrer le tuto à la partie « Copie des données de la puce mifare : la cinématique ».

    Alexandre

  10. Hello Carmelo,

    Il y a un ou deux articles que j’aimerais publier avant, ensuite ce sera le tour du « clone parfait » ;) N’hésite pas à suivre la page Facebook pour être tenu au courant de la programmation :)

    Alexandre

  11. Bonjour,
    Y – t-il des boutiques (ou particulier) où on peut faire cette manipulation ? Je n’ai pas Linux ni les outils à dispositions.
    Je suis interressé pour dupliquer ma carte de parking de mon boulot…
    Merci d’avance de votre retour.
    A plus tard
    K.

  12. Bonjour Kurios,
    A ma connaissance ça n’est pas une activité « officielle » surtout qu’il peut y avoir de nombreux types de cartes, certains plus compliqués à copier que d’autres.
    Après j’imagine que tout se négocie.

    Alexandre

  13. Merci de votre retour super rapide! :-)
    Peut etre connaitriez vous des contacts pour faire ce type d’operation ? Vous pouvez me contacter par mail
    D’avance merci
    K.

  14. Slt a tous, slt Alex,
    j ai suivi ton tuto, avec linux mint impossible de telecharger libnfc, et avec kali linux le badge a copier est lu mais voici l erreur affichee

    root@kali:~# mfoc -P 500 -O carte-originale.dmp
    Found Mifare Classic 1k tag
    ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00 04
    * UID size: single
    * bit frame anticollision supported
    UID (NFCID1): 2c a9 01 77
    SAK (SEL_RES): 08
    * Not compliant with ISO/IEC 14443-4
    * Not compliant with ISO/IEC 18092

    Fingerprinting based on MIFARE type Identification Procedure:
    * MIFARE Classic 1K
    * MIFARE Plus (4 Byte UID or 4 Byte RID) 2K, Security level 1
    * SmartMX with MIFARE 1K emulation
    Other possible matches based on ATQA & SAK values:

    Try to authenticate to all sectors with default keys…
    Symbols: ‘.’ no key found, ‘/’ A key found, ‘\’ B key found, ‘x’ both keys found
    [Key: ffffffffffff] -> […………….]
    [Key: a0a1a2a3a4a5] -> […………….]
    [Key: d3f7d3f7d3f7] -> […………….]
    [Key: 000000000000] -> […………….]
    [Key: b0b1b2b3b4b5] -> […………….]
    [Key: 4d3a99c351dd] -> […………….]
    [Key: 1a982c7e459a] -> […………….]
    [Key: aabbccddeeff] -> […………….]
    [Key: 714c5c886e97] -> […………….]
    [Key: 587ee5f9350f] -> […………….]
    [Key: a0478cc39091] -> […………….]
    [Key: 533cb6c723f6] -> […………….]
    [Key: 8fd0a4f256e9] -> […………….]

    Sector 00 – UNKNOWN_KEY [A] Sector 00 – UNKNOWN_KEY [B]
    Sector 01 – UNKNOWN_KEY [A] Sector 01 – UNKNOWN_KEY [B]
    Sector 02 – UNKNOWN_KEY [A] Sector 02 – UNKNOWN_KEY [B]
    Sector 03 – UNKNOWN_KEY [A] Sector 03 – UNKNOWN_KEY [B]
    Sector 04 – UNKNOWN_KEY [A] Sector 04 – UNKNOWN_KEY [B]
    Sector 05 – UNKNOWN_KEY [A] Sector 05 – UNKNOWN_KEY [B]
    Sector 06 – UNKNOWN_KEY [A] Sector 06 – UNKNOWN_KEY [B]
    Sector 07 – UNKNOWN_KEY [A] Sector 07 – UNKNOWN_KEY [B]
    Sector 08 – UNKNOWN_KEY [A] Sector 08 – UNKNOWN_KEY [B]
    Sector 09 – UNKNOWN_KEY [A] Sector 09 – UNKNOWN_KEY [B]
    Sector 10 – UNKNOWN_KEY [A] Sector 10 – UNKNOWN_KEY [B]
    Sector 11 – UNKNOWN_KEY [A] Sector 11 – UNKNOWN_KEY [B]
    Sector 12 – UNKNOWN_KEY [A] Sector 12 – UNKNOWN_KEY [B]
    Sector 13 – UNKNOWN_KEY [A] Sector 13 – UNKNOWN_KEY [B]
    Sector 14 – UNKNOWN_KEY [A] Sector 14 – UNKNOWN_KEY [B]
    Sector 15 – UNKNOWN_KEY [A] Sector 15 – UNKNOWN_KEY [B]
    mfoc: ERROR:

    No sector encrypted with the default key has been found, exiting..

  15. Il y a t’il des personnes qui sont arrivés a copier un badge rfid type MIFARE
    J’ai bien sur j’ai acheté la clés USB Identive SCL3711 que tu as conseillée, idem pour la carte RFID vierge (du type Mifare 1K) qui elle, est lu et décodée sans soucis

  16. Aurais tu une idée d’où pourrais provenir mon soucis
    mauvaise manip (j’ai essayé une dizaine de fois et avec des badges différents et cartes vierges aussi)
    merci d’avance

    test avec: kali linux 2 (en virtualbox, cela peux t’il poser soucis?) et linux mint 17.2 cinamon 64bits

  17. Bonsoir Mr Yo ! Tu as mis le doigt sur ce qui ne va pas : tu ne peux pas utiliser un système virtualisé, car du coup cela fausse les timings USB. Si tu ne veux pas installer durablement un système linux sur ton disque dur, tu peux te créer une clef USB bootable avec Linux Mint par exemple dessus. Ne lache pas l’affaire, tu y es presque ! Alexandre

  18. Salut Alex,

    Merci de ta réponse rapide, j’ai pris un peu de temps dessus aujourd’hui (j’ai aussi fait une installation de kali linux sur disque dur) et tout est fonctionne. ;p

  19. salut Alexandre!
    Ton tuto me semble tres attirant et jai deja quelques bases concernant ce domaine, malgres le fait que je ne soit pas un adepte de linux… Il me semble avoir entendu que l on peut en quelque sorte switcher de windows a linux. est ce vrai ? sinon est il possible d utiliser linux sans changer mon os préféré? (windows8.1) J ai vu tes commentaires ou tu dis de booter avec une cle usb, mais je ne sais comment faire… :(
    quelques explications ne seront pas de refus !
    merci encore!
    francis

  20. Bonjour
    J’ai installé kali linux sur une clé usb bootable mais ensuite quand je veux installer libnfc j’ai une erreur lorsque je mets cette commande
    ./configure –with-drivers=all
    Je suis bloqué ici, est-ce que quelqu’un aurait une idée de comment faire après ?
    Merci d’avance

  21. Bonjour à tous,
    Très bon Tuto pour dupliquer une mifare 1k classic. Je me suis pancher sur les Tag Nfc auto-colant mfultralight.
    Est ce que vous avez les commande pour faire la même procèdure quze avec la mifare.

    Salutations.

  22. Salut à tous !

    Est-ce que c’est possible de dupliquer une Mifare Ultralight (512octet) sur une Mifare 1k ?

    Merci d’avance ! ;)

    ++

  23. super tuto
    juste un petit probleme pour moi il me marque pour nfc-mfclassic w a carte-originale.dmp carte-vierge.dmp
    commande introuvable a tu une info merci

  24. BONJOUR, le clonage m’intéresse surtout pour mon travail ,je suis gérant d’une société de distribution de prospectus et j’aimerais bien avoir des clones des cartes vigiks dans mes bureaux et laissé les originaux chez mes distributeurs cela m’évite de faire le va et viens a chaque rechargement.

  25. Salut, Alex super tuto !!

    Par contre est-ce que tu pourrait m’expliquer ce que veux dire le mot « distance » ?
    Sector: 1, type A, probe 55, distance 30927 …..

    Je suis entrain d’essayer de mfoc une carte mais le sector 1 tourne à l’infini …

  26. Hello Alex,

    Serait-il possible de copier le contenu d’une mifare ULTRALIGHT dans une carte mifare classic ?

    merci

  27. Salut :)

    J’ai toujours se problème, j’ai essayer avec Ubuntu et Linux Mint (installé en dur sur l’ordi) et ça persiste :(

    No sector encrypted with the default key has been found, exiting..

    Peux-tu m’aider stp ?
    Merci :)

  28. Salut Alex, mon téléphone Galaxy S5 est compatible NFC, je voudrais copier un tag d’accès immeuble 1443-3A Mifare classic 1k. Avant d’acheter un tag vierge, je vois que mon application de smartphone NFC Tools me permet de copier un tag facilement. Cela a t’il des chances de marcher simplement si j’achète des tags compatibles ?

  29. Bonjour
    Déjà merci pour cet article et ce tuto
    Est il possible de plutôt que d’utiliser un autre badge copier et utiliser son smartphone android comme badge ?
    Merci

  30. bonjour Alex,
    j’ essaie d’ installer libnfc, et lorsque je tape la commande « wget http://libnfc.googlecode.com/files/libnfc-1.7.0.tar.bz2 » voilà ce que ça donne:
    –2016-09-08 14:13:22– http://libnfc.googlecode.com/files/libnfc-1.7.0.tar.bz2
    Resolving libnfc.googlecode.com (libnfc.googlecode.com)… 74.125.133.82, 2a00:1450:400c:c07::52
    Connecting to libnfc.googlecode.com (libnfc.googlecode.com)|74.125.133.82|:80… connected.
    HTTP request sent, awaiting response… 404 Not Found
    2016-09-08 14:13:22 ERROR 404: Not Found.

    En suivant le tuto je n’es taper que cette commande: « sudo apt-get install libusb-dev ». J’utilise actuellement kubuntu, ça pose probleme?

  31. Hello Neolao,
    Malheureusement je n’en suis pas sûr, rien n’évoque le bruteforce de clé mifare dans la description de l’app, donc je pense que non…
    Alexandre

  32. Salut Alex,
    En lancant la commande de copie mfoc, je me retrouve bloqué en boucle sur le « Sector 01 »
    Sector: 1, type A, probe 163, distance 33159 …..
    Sector: 1, type A, probe 164, distance 37741 …..
    Sector: 1, type A, probe 165, distance 34448 …..
    Sector: 1, type A, probe 166, distance 34895 …..
    Sector: 1, type A, probe 167, distance 20040 …..
    Sector: 1, type A, probe 168, distance 38706 …..
    Sector: 1, type A, probe 169, distance 18246 …..
    Sector: 1, type A, probe 170, distance 39785 …..
    Sector: 1, type A, probe 171, distance 30056 …..
    Sector: 1, type A, probe 172, distance 33840 …..
    Sector: 1, type A, probe 173, distance 40372 …..
    Sector: 1, type A, probe 174, distance 34394 …..
    Sector: 1, type A, probe 175, distance 33698 …..
    Sector: 1, type A, probe 176, distance 12753 …..
    Sector: 1, type A, probe 177, distance 44235 .^C

    Y a-t-il un moyen de forcer la lecture du fameux secteur?
    Si oui avec quelle commande est-ce possible?

    Merci d’avance de ta réponse

    Cham

  33. Bonjour,
    Avec quel type de logiciel puis-je ouvrir et modifier le fichier DUMP ?
    Concernant Kali, effectivement les outils NFC-tools y sont déjà mais il faudra installer libnfc-examples pour pouvoir utiliser la commande nfc-mfsetuid et modifier l’UID pour effectuer un clone parfait.

  34. Hello Renard,
    Un simple éditeur devrait faire l’affaire. personnellement j’utilise « Sublime Text » mais il en existe certainement beaucoup d’autres !

    Alexandre

  35. Bonjour,
    J’aurais voulu savoir s’il existe de nouveaux lecteurs RFID compatibles moins cher ? Et qu’est ce qui fait qu’un lecteur est compatibe ou non ? Aucune possibilité avec un smartphone ?
    Cordialement

  36. bonjour,
    j’aurais voulu savoir s’il existe des lecteurs RFID compatibles moins cher ? Et qu’est ce qui fait qu’un lecteur est compatible ou non ?
    cordialement
    vincent

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *