Carte RFID Mifare 1K

Attention, cet article n’a pas de vocation illégal. Il s’agit de comprendre le fonctionnement des cartes Mifare 1K.
Cette expérience nous servira dans le cadre de la création d’une ouverture de porte sécurisée par carte NFC.

Les cartes RFID Mifare 1K (13.56MHz) possèdent deux protections principales :

  • Le block 0 (zéro) est en lecture seule, seul le constructeur de la carte peut initialiser ce block.
  • Les données écrites sur les cartes sont encryptées.

Il existe cependant des solutions pour outrepasser ces protections et permettre de créer des copies exactes.
Vous pouvez cloner des cartes si vous disposez d’un lecteur/graveur de cartes tel que le Proxmark III.
Vous pouvez cloner des cartes avec un lecteur/graveur standard si vous utilisez des carte pour lesquelles l’UID peut être modifié (disposant d’une backdoor pour écrire sur le block 0), appelées plus communément « Cartes chinoises » car aucune loi ne restreint l’utilisation de ces cartes en Chine.

Dans cet article je détaillerais la procédure pour cloner une carte RFID Mifare 1k sous Linux en utilisant des « cartes chinoises ».

1. Achat d’une carte Mifare 1K Chinoise

La première étape consiste à se procurer une carte chinoise.

Rien de plus simple : posez la question a votre vendeur chinois habituel, il vous trouvera cela pour 15$ les 2.
Ces cartes disposent d’une backdoor physique permettant de modifier le contenu du block 0 (habituellement en lecture seule sur des cartes classiques).

2. Achat d’un lecteur de carte

Personnellement, j’ai opté pour un contrôleur NFC/RFID chez Adafruit. Pratique, joli, et il se marie très bien avec ma Raspberry Pi, il s’agit du PN532, comme ici (pour andré).

3. Environnement Linux

C’est que les choses se compliquent un peu..mais juste un peu.
Dans un premier temps, il faut libérer l’UART :

Verifier que la ligne est bien commentée :

 Puis modifier le fichier /boot/cmdlines.txt afin de remplacer :

par

 Vous aurez besoin de la LIBNFC et de MFOC.

LIBNCF :
Récupérer le numéro de la dernière version ici.

Installer les pré-requis :

 Récupérer les sources de la LIBNFC :

 Copier le fichier de conf correspondant à votre contrôleur dans /etc :

 Configurer et compiler la lib :

C’est parti :

 Faites un test :

 MFOC :
Récupérer le numéro de la dernière version ici.

Récupérer les sources de MFOC :

Pour la version 0.10.5, remplacer à la ligne 121 :
str_nfc_target(&s, nt, verbose);
par
str_nfc_target(&s, &nt, verbose);

Configurer et compiler MFOC :

 Faire un test. Poser une carte sur le contrôleur :

4. Dump/Cracking des cartes

Cette étape consiste à créer des « dump » des deux cartes. On dump la carte que l’ont veut copier (pour avoir la source) et on dump aussi la carte chinoise pour avoir ses clés.
Placez la carte chinoise sur votre lecteur :

 Placez la carte à copier sur votre lecteur :

5. Recopier le contenu

Nous allons maintenant copier le contenu de la carte sources sur la carte chinoise. Placez la carte chinoise votre lecteur :

 ou

6. Modification du numéro de série

La dernière étape est la plus importante. Elle consiste à modifier le numéro de série de la carte chinoise avec le numéro de série de la carte source.

Placez la carte à copier votre lecteur :

 

Mettre ce numéro de coté.

Placez la carte chinoise votre lecteur :
# nfc-mfsetuid
36d035ce

Vérifiez que le numéro de série de votre carte chinoise est identique à votre carte.

# nfc-list
Vous devriez avoir le meme numéro que la carte source.

A propos Mehdi HAMIDA

Moi en quelques mots: je m'appelle Mehdi, j'habite à Lyon, je suis chef de projet technique et papa geek. Je m’intéresse aux nouvelles technologies, à la publicité, la musique, à l’art en général et à la culture 2.0, ainsi qu’à tout ce qui a trait de près ou de loin à Internet : réseaux sociaux, webmarketing, le marketing viral et la veille stratégique.