Vous êtes sur la page 1sur 4

Rechercher...

HOME VEILLE PLUGINS PRESSE À PROPOS DERNIERS BILLETS CONTACT


Blog indépendant
AOÛT
Présentation des générations de tags Mifare (NFC 13,56 04
Et sans publicité
depuis 2007.
MHz) 2019
Tutos, décryptage,
Sécurité (4 vote(s), 4,75/ 5) Réagir analyse et
reviews.
« [Android] Ignorer les optimisations de batterie par marque
Qui suis-je ?
(modifié le 27 novembre 2019 à 0:06)
Blogs Amis
Blog NT
iooner jean@cloud.ninja
Aujourd'hui je vous parle des tags NFC Mifare Classic 1K. Cela ne vous dit rien ? alors ce Tous les autres
Tech2Tech
post est pour vous ! IT-Connect Je m'abonne par email
Cachem
Minimachines

Suivre @xhark

Catégories
Développement (134)
Batch et VBScript (13)
Javascript et Css (23)
PHP (My)SQL (46)
Powershell (10)
Do It Yourself (108)
3D (11)
Feedback (125)
Graphisme (25)
Internet (993)
Divertissement (176)
Sécurité (92)
Twitter (17)
Le blog (237)
Mobilité (108)
Musicmotion (33)
Pratique (90)
Psp (4)
Système (502)
Virtualisation (8)
C'est la carte la plus répandue : carte de chambre d'hôtel, machine à café, badge xbox (7)
personnel d'entreprise, ticket de transport, parking, immeuble... Elle est partout !
Thématiques
A force de parcourir les datasheets, forums et site web j'y vois beaucoup plus clair et je accès application blog
vous propose ici une découverte de ces tags sans-fil : Gen1 (UID), Gen2 (FUID) et carte clé code
Gen3 (CUID). connexion disque
distance donnée données
débit email erreur
Plusieurs noms pour la même carte
fichier free
Mifare est une marque déposée de NXP Semiconductors, un fabricant de semi-
conducteurs fondé en 1967 sous le nom de Motorola. Elle est issue d'une scission de la
google gratuit
hadopi image
division semi-conducteurs de Philips (wikipedia).
Internet linux
NXP est donc un poids lourd du secteur et la société a fait l'acquisition des activités WiFi mobile Musique
et Bluetooth de Marvell en Mai 2019, rien que ça. navigateur partage
recherche réseau
La carte que l'on trouve un peu partout est la Mifare Classic 1k, elle fonctionne sur la
fréquence 13,56 MHz (HF : High Frequency). script serveur
service site
smartphone social
Système Sécurité
télécharger usb
version vidéo
vitesse web wifi
windows
wordpress

Ajoutons aussi les Mifare Classic Mini (320 octets) et les Mifare Ultralight (64 octets)

On trouve la Mifare Classic 1K sous d'autres noms :

Mifare Classic 1024 bits

Mifare Classic 1ko

Mifare S50

MF1 IC S50 (datasheet)

En réalité, on parle bien de la même carte/tag.

Comment fonctionne un tag NFC ?


La carte contient une puce connectée à une bobine qui fait office d'antenne et qui fait
plusieurs tours pour former une carte à puce passive sans contact :

La transmission des données se fait sans contact et sans alimentation (pas de pile ni
de batterie, le champ électromagnétique de proximité suffit pour alimenter la puce).

Bien sûr quand je parle de carte ou de tag je parle de la même chose. L'un se présente
sous forme de badge ou étiquette dont la forme peut varier, l'autre au format carte
format bancaire dont voici une vue transparente :

Le plus connu des badges en france est le badge d'immeuble vigik (+infos).

Stockage des données (mémoire)


La carte embarque donc 1ko de stockage EEPROM, réparti dans 16 secteurs de 4 blocs
de 16 octets : 16*4*16 = 1024 octets (donc 1ko).

Les secteurs sont numérotés de 0 à 15. Le premier bloc du secteur 0 est spécial car il
contient l'identifiant du tag (manufacturer block). On l'appelle vulgairement le "block 0"
car c'est là qu'est écrit le numéro de série du tag UID (Unique ID), normalement inscrit en
usine et pouvant être écrit (normalement) une seule fois. Dans notre cas l'UID est sur 4
octets.

Chaque secteur contient 4 blocs de 16 octets, le dernier bloc s'appelle le sector trailer :

Il contient en hexa :

octets 0-5 (vert clair) : une clé A

octets 6-9 (orange) : conditions d'accès du secteur (ACs : access conditions)

octets 10-15 (vert foncé) : une clé B

Je dis normalement car il existe des cartes qui permettent d'écrire et/ou réécrire ce
numéro de série. On parle de carte chinoises et la transition est toute faite pour parler
des générations de tag.

Info : les blocs peuvent contenir des données brutes ou êtres considérés comme des
value blocks. Dans ce cas les données sont organisées dans un format spécifique avec un
contrôle CRC, mais je ne rentre pas dans le détail ici.

NFC ou RFID : quelles différences ?


Le NFC concerne uniquement le High Frequency (HF) à 13,56 MHz.

NFC apporte des fonctionnalités supplémentaires à la norme RFID, comme l'échange de


données entre 2 smartphones collés ou encore le paiement sans contact avec Google Pay
par exemple.

NFC et RFID diffèrent dans le mode de stockage des données. Cela veut dire qu'un
tag vierge qui n'est pas NFC peut le devenir si on utilise le format NDEF (NFC Data
Exchange Format). Je ne rentre pas plus dans le détail, je tire ces infos d'un numéro du
magazine Open Silicium.

Côté smartphone il faut disposer d'une puce Broadcom pour pouvoir lire et écrire des tags
Mifare Classic Tool (MCT). De mon côté j'utilise un OnePlus 6 e t u n Galaxy S3
(LineageOS) et ça marche au top.

Liste des smartphones compatibles / incompatibles

Les différentes générations de tag


Il existe 2 façons d'écrire sur un badge :

avec un smartphone (équipé en NFC Broadcom)

avec un lecteur USB avec libNFC, comme l'abordable ACR122U ou proxmark sous Kali

Gardez bien ça en tête car c'est déterminant pour utiliser la bonne génération de tag
(src).

Voici les différents types de badges Mifare 1k que j'ai trouvé.

[GENERATION 1] UID Modifiable :

UID modifiable plusieurs fois : oui

Tous les blocs peuvent être écrits plusieurs fois, y compris le bloc 0

Compatible avec un lecteur USB et libNFC : oui

Compatible avec MCT : oui, excepté le bloc 0

Backdoor pour réécrire sans tenir compte des ACs (magic commands) : oui (Gen 1a)

Détectable comme copie : oui, à cause des commandes magiques

[GENERATION 2] CUID :

Tous les blocs peuvent être écrits plusieurs fois, y compris le bloc 0

Compatible avec un lecteur USB et libNFC : oui

Backdoor pour réécrire sans tenir compte des ACs (magic commands) : non

Détectable comme copie : difficilement (ne répond pas aux commandes magiques)

Particularité : mort subite si écriture d'un bloc 0 invalide (voir procédure XOR > calculateur)

[GENERATION 3] FUID :

Notez que la génération 3 est en réalité un GEN2 FUID. Mais pour éviter la confusion je
l'appelle GEN3.

Le block 0 peut être écrit une seule fois

Tous les blocs peuvent être écrits plusieurs fois, sauf le bloc 0

Particularité : protection contre la mort subite si écriture d'un bloc 0 invalide

Backdoor pour réécrire sans tenir compte des ACs (magic commands) : non

Détectable comme copie : très difficilement (ne répond pas aux commandes magiques)

Sécurité
Les cartes MIFARE dites Classic sont protégées par l'algorithme de chiffrement propriétaire
CRYPTO1. La connaissance des clés de chiffrement (A et B) est nécessaire pour lire ou
écrire des données sur la carte MIFARE.

Le problème c'est qu'un chercheur en sécurité a trouvé des faiblesses dans Crypto1... qui
font qu'il suffit de trouver une des deux clés par brutforce avec mfoc/mfcuk pour avoir
l'autre (voir aussi BlackHat).

MFOC : MiFare Offline Cracker (nested attack)

MFCUK : MiFare Classic Universal toolKit (DarkSide Key Recovery Tool)

Là encore je ne rentre pas dans le détail de la sécurité, vous trouverez de nombreuses


ressources sur le web. La faisabilité dépend également de la qualité du lecteur NFC, si un
ACR122U n'est pas cher il n'est pas non plus ultra fiable par rapport à un proxmark3. Mais
ce n'est pas le même prix !

Quoi qu'il en soit, un système uniquement basé sur la lecture du bloc 0, l'identifiant du
tag, est une hérésie ! Car cette partie se copie bien trop facilement avec des tags
chinois. Malheureusement ce système de badge est encore largement utilisé dans les
entreprises .

Aussi, les clés A et B des fabricants circulent très largement sur le web. C'est aussi le cas
de MCT (Android) qui embarque extended-std.keys. Cela lui permet de tester les clés les
une après les autres pour lire le contenu d'une carte/tag.

Particularité à MCT
Pour écrire sur un tag vierge avec Mifare Classic Tool il suffit d'utiliser std.keys qui
contient les clés de base, généralement c'est 12 xF (FFFFFFFFFFFF).

Avant tout il faut toujours aller dans Show Options et cocher "use these Access
Conditions for all sectors : 08778F". Sans ça vous allez écrire des ACs qui vous
empêcheront de réécrire certains blocs lors du restore d'un dump existant.

Ensuite je vous déconseille d'écrire tous les secteurs d'un coup si vous avez besoin
d'écraser le manufacturer block :

1. écrire d'abord le secteur 0 (en cochant les 2 options dans show options)
2. écrire le reste des secteurs (en cochant uniquement use these Access Conditions for all
sectors : 08778F)

Relire ensuite le dump pour vérifier qu'il correspond, excepté les ACs qui vont
naturellement différer.

note : vous pouvez aussi utiliser les ACs FF078069 au lieu de 08778F (comprendre les
ACs).

Conclusion
J'espère que vous y voyez plus clair dans tout ça. Je vous incite à pratiquer pour bien
comprendre les tenants et aboutissants de tout ça.

Comme moi vous allez forcément flinguer des tags au début, alors n'hésitez pas à en
acheter plusieurs.

Voici quelques liens de tags que j'ai testé qui supportent l'écriture du bloc 0 :

Génération 1 : Tags Aliexpress, Tags eBay, Cartes eBay

Génération 2 : Tags Amazon FR, Tags Aliexpress, Cartes Aliexpress

Génération 3 : désolé jamais testé

MàJ 25/11/2019 : Je vous propose également un script bash que j'ai écrit qui permet de
convertir un dump MCT pour l'écrire avec un lecteur USB (libNFC) et aussi je vous
expliquerai comment écrire ces tags GEN1 et GEN2, restaurer un dump, etc :

Script disponible ici !

J'espère que ce post vous a plu, la rédaction m'a pris beaucoup de temps

Sur le même thème :


Flipper Zero, le dauphin à tout MIFARE
[Script] Convertir un dump MCT en binaire (lecteur USB *.MFD)
mct2dmpGui : une version portée sur Windows
[Solution] Unable to claim USB interface (ACR122U)
[Android] Ignorer les optimisations de batterie par marque

Bose Headphones 700 vs QC35 vs Sony XM3 »

Tweet Like 2

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
Tags: bloc, carte, génération, NFC, tag

Déjà 23 commentaires

Wallace • 4 août 2019 à 19h08

Super intéressant et bien résumé quand on ne connait pas le domaine.


Donc en gros toute solution sur ces badges est duplicable vigik, serrure entreprise ... En gros les
clefs normales le sont aussi et ça coûte moins cher ...

Mr Xhark • 4 août 2019 à 19h20

@Wallace: merci! Il existe des cartes qui sont (à l'heure actuelle) considérées comme sécurisée,
c'est le cas des DESFire par exemple. Certains tags sont écrits avec un CRC présent dans la
carte et dans la centrale, si désynchro il y a tous les badges se présentant avec cet ID seront
refusés. Bref, il y a plein de façons de faire de la sécurité, mais de là à dire que c'est le cas
partout, clairement pas. Concernant les Vigik il n'existe pas de "pass magique" car pas de clé
maître, laposte (et d'autres que l'on appelle badge prestataire) utilisent des badges qui ont une
durée de validité de quelques dizaines d'heures. Les facteurs doivent donc "recharger" leur
badge avec de partir en tournée pour qu'il soit reconnu (en face c'est un serveur web qui répond
et tout est basé sur l'horodatage donc pas modifiable). Que ce soit facile ou pas, ça reste illégal
de cloner une carte si tu n'y es pas explicitement autorisé. Cloner le badge d'entrée de ton
immeuble parce que le syndic te demande 50€, oui tu peux, mais cloner la carte de ton
entreprise... non

Pyrou - @pyrou • 4 août 2019 à 23h22

Petite coquille dans l’article, tu évoques 12.56 MHz, c’est bien 13.56

D’ailleurs, fait intéressant, 433.92 (fréquence largement répandue dans le contrôle RF) / 32 =
13.56

Mr Xhark • 5 août 2019 à 1h52

@pyrou : coquille corrigée merci! Effectivement je n'avais pas non plus fait attention à cette
histoire de multiple, intéressant !

cedric • 5 août 2019 à 23h57

Très intéressant et bien documenté. Bravo.


Le MiFare classic a encore de beaux jours devant lui. Très bon marché est simple a utiliser. Très
efficace pour de l'identification de bas niveau, sans sécurité, ni enjeu. Sinon, il faudra
commencer a penser au Desfire.

nofnof • 6 août 2019 à 0h00

Super intéressant Merci !!

J-Claude - @75Informatique • 22 août 2019 à 18h19

Sans oublier que ce mode de communication est facilement piratable pour un hacker équipé.
Donc attention à la carte bleue. Il existe des étuis de protections pour les cartes et objets aux
données sensibles.

Mr Xhark • 26 août 2019 à 22h13

@J-Claude: il ne faut non plus dire aux gens que tout est piratable. Il est bien plus probable que
quelqu'un relève vos numéros de carte en se frottant à vous (transport en commun), excepté le
CVV mais c'est vrai que certains sites étrangers ne le demandent pas, que quelqu'un intercepte
la communication ou propose un fake terminal pour encaisser de l'argent. Je ne dis pas que
c'est impossible, je parle simplement de probabilité. Personnellement j'ai désactivé le sans
contact via ma banque en ligne (boursorama), ce qui fait qu'à chaque demande les
transactions sont refusées. Pour le reste je ne sors pas la CB de mon porte-feuille

Jiben • 6 septembre 2019 à 15h28

Salut Xhark !
Et merci beaucoup pour ce billet très intéressant. J'ai perdu le badge de chez moi cette semaine
et quand j'ai vu que le cordonnier me demandait 50 balles pour m'en faire une copie je me suis un
peu intéressé au sujet

J'ai une question qui me vient à l'esprit après avoir lu ton post : après avoir récupéré le contenu
d'un tag avec MCT, est-ce qu'on peut utiliser son téléphone en guise de badge ? en théorie rien
ne l'empêche si ?

Mr Xhark • 6 septembre 2019 à 22h28

@Jiben: Ce n'est pas possible, ce n'est pas simplement un identifiant mais des blocs mémoires.
Il existe des émulateurs de carte (proxmark 3 chameleon) mais impossible avec un téléphone à
ma connaissance. Change de cordonnier, le tarif correct dans le commerce est de moins de
15€ pour dupliquer un badge.

Alex de L'Atelier du Geek • 10 septembre 2019 à 14h12

Bravo Xhark, très clair et pédagogique sur le sujet, et je sais de quoi je parle
Personnellement je privilégie désormais les badges de generation2... Que je manipule avec une
version modifiée de libnfc et un lecteur ACR122U. C'est ce que je trouve de plus efficace. MCT
c'est génial pour une copie d'un badge dont les clés sont connues, mais dès que l'on souhaite se
frotter à plus exotique, le lecteur USB devient indispensable.

Enfin, j'essaie de proposer tout le nécessaire à ces expériences sur La Boutique de l'Atelier du
Geek mais je ne suis pas contre un avis de ta part sur la gamme

Jalna • 14 septembre 2019 à 12h02

Bonjour,

Je suis gérante d'une laverie et je souhaiterai mettre en place un systeme de forfait avec cartes
magnétiques mais l'entreprise de ma borne de paiement me demande une fortune pour la
licence et 50 cartes (presque 800€TTC!!!)
Est-il possible en ne prenant que leur licence d'encoder des cartes moi meme? quel modèle de
desfire me conseilleriez vous?

Merci d'avance our vos réponses!

Luc • 26 septembre 2019 à 13h44

Bonjour. Si je ne dis pas de bêtise le secteur 0 des badges de 2° génération ne peut être écrit via
MCT qu'une seule fois. Si l'on doit le modifier à nouveau, on ne peut le faire que sous linux et sa
librairie adéquate.
Pour ma part, un badge de 2° génération était indispensable pour une copie de badge Urmet. Je
n'ai pas encore cherché à modifier ultérieurement son UID avec Linux, puis à remettre le bon UID,
pour voir si ma copie fonctionnait toujours.
Dans le doute, je me contente de l'écrire dès le début avec MCT avec le bon UID, et je ne touche
plus à rien...
Peut-être que l'article pourrait être complété pour préciser cet aspect ?
Cordialement

Mr Xhark • 30 septembre 2019 à 20h36

@Luc: aucun souci pour écrire plusieurs fois le secteur zéro sur du génération 2 avec MCT.
Peut-être as-tu du génération 3 ?

mickey - @EyeGaree • 12 novembre 2019 à 12h55

Bonjour,

Qu'en est il aujourd'hui de :

" Prochainement je vous publierai un script bash que j'ai écrit qui permet de convertir un dump
MCT pour l'écrire avec un lecteur USB (libNFC) et aussi je vous expliquerai comment écrire ces
tags GEN1 et GEN2, restaurer un dump, etc. "

Mr Xhark • 12 novembre 2019 à 13h16

@mickey: et voici comme promis : http://blogmotion.fr/internet/securite/mct2dmp-convertir-


dump-hexa-binaire-18125

Éric73 • 13 juillet 2020 à 16h06

Bonjour, j'ai fait un dump avec de mon badge vigik avec mifare classic tool . J'ai commandé des
tags pastilles pour les collés sur mon smartphone, problème ces tags sont au format mifare
Ultralight. Peut t-on transformer dump mifare classic en mifare Ultralight ?
Ou une application Android pour faire cette manipulation.
J'ai utilise un Samsung Android 7 roote et application mifare classic tool et mifare++Ultralight

Merci pour votre aide

Mr Xhark • 15 juillet 2020 à 14h54

@Éric73: Non, impossible de convertir, ce ne sont pas les mêmes puces

redscreen • 27 septembre 2020 à 18h41

Bonjour,
J'essaye de copier mon propre badge (UID double) dumpé avec succés grace aux "extended-
keys") mais j'ai une erreur de BCC:

NFC reader: ACS / ACR122U PICC Interface opened


Found MIFARE Classic card:
ISO/IEC 14443A (106 kbps) target:
ATQA (SENS_RES): 00 04
UID (NFCID1): 8b ba 97 19
SAK (SEL_RES): 08
Guessing size: seems to be a 1024-byte card
Sent bits: 50 00 57 cd
Sent bits: 40 (7 bits)
Received bits: a (4 bits)
Sent bits: 43
Received bits: 0a
Writing 64 blocks |!
Error: incorrect BCC in MFD file!
Expecting BCC=FD

Je crains que mon badge vierge ne soit capable d'écrire l'UID double de 7 octets du badge
original.
Y a t'il un moyen ?
Faut il acheter un autre type de badge vierge ?

AlexLou • 2 juin 2021 à 16h11

Bonjour,
Je voudrais savoir si il était possible de lire plusieurs tags NFC dans une enveloppe par exemple
avec un smartphone. Je ne cherche pas forcément à ce que tous les tags soient lus en même
temps mais qu'une séquence de recherche puisse lire tous les tags.
Par avance, merci !
Alex

Mr Xhark • 1 juillet 2021 à 0h54

@redscreen: https://security.stackexchange.com/questions/213639/identifying-and-cloning-
nfc-card-double-size-uid-type-mifare-plus-7-byte-2k-or

@AlexLou: Bonjour, non ce n'est pas possible, ce sera celui qui sera le plus proche qui répondra

James • 9 juillet 2021 à 1h43

Bonjour,

Est il possible de dupliquer un badge Vigik Hexact sur un autre badge Vigik Hexact vierge via
MCT?

Merci de votre réponse

Mr Xhark • 12 juillet 2021 à 23h26

@James: non puisque l'identifiant n'est pas modifiable

Commentaire :
Restez courtois/constructif. Pas d'URL abusive en tant que pseudo/nom

Nom ou pseudo *

Votre email * il ne sera pas publié

Votre site/blog (sera nofollow)

Votre pseudo twitter sans @

RSS Comm.(RSS) :yulPa Mentions légales et cookies


Acceptez-vous le cookie tiers de mesure d'audience (Google Analytics) Accepter Refuser Politique de confidentialité
Une combinaison de touche secrète se trouve dans cette page, saurez-vous la trouver ?

Vous aimerez peut-être aussi