Lire la puce de sa carte d’identité française en Python sous Linux : un tutoriel DIY pour explorer vos données biométriques

Vous avez reçu votre nouvelle carte d’identité française et vous vous demandez ce qu’elle contient vraiment ? Au-delà de l’état civil et de la photo, cette puce NFC renferme des données biométriques et des informations sécurisées. Et bonne nouvelle : il est possible de les lire directement depuis un PC sous Linux, sans smartphone ni application officielle. Découvrez comment Hubert a développé un outil open source en Python pour explorer votre CNI en toute autonomie.

Une carte d’identité française qui parle… mais à qui ?

Depuis 2021, les nouvelles cartes d’identité françaises intègrent une puce NFC contenant des données biométriques et administratives. Contrairement aux anciennes versions, cette puce est protégée par des protocoles de sécurité avancés comme le PACE (Password Authenticated Connection Establishment) et l’EAC (Extended Access Control), réservés aux terminaux officiels pour les empreintes digitales. Mais Hubert, un lecteur passionné de Korben.info, a décidé de contourner ces restrictions avec un script Python nommé cnie-python-tools.

Son projet permet d’extraire l’état civil complet, l’adresse, la taille, la MRZ (Machine Readable Zone) et même la photo au format JPEG 2000, le tout depuis un terminal Linux. Plus besoin d’attendre une mise à jour de l’application France Identité ou de faire confiance à un tiers : vous devenez maître de vos données.

Le matériel nécessaire : un lecteur de carte compatible PC/SC

Pour interagir avec la puce de votre CNI, vous aurez besoin d’un lecteur de cartes à contact compatible PC/SC. Hubert recommande des modèles comme l’ACR38U ou les lecteurs Omnikey (liens affiliés), qui sont largement utilisés dans les environnements professionnels et open source. Ces appareils se branchent en USB et sont reconnus nativement sous Linux, ce qui simplifie grandement l’installation.

Une fois le matériel prêt, il suffit d’installer les dépendances logicielles, notamment Python 3.8+, pip et uv (un gestionnaire de paquets Python moderne). Le script utilise également la bibliothèque python-pcsc pour communiquer avec le lecteur via le protocole PC/SC, un standard largement adopté dans l’écosystème Linux.

Le CAN : votre clé pour déverrouiller la puce

La puce de votre carte d’identité est protégée par un code secret appelé CAN (Card Access Number), composé de 6 chiffres imprimés au recto de votre carte. Ce code est indispensable pour activer le protocole PACE, qui établit une connexion sécurisée entre votre PC et la puce. Sans ce CAN, impossible d’accéder aux données, même avec le script de Hubert.

Une fois le CAN saisi, le script cnie-dump se charge de négocier avec la puce pour extraire les informations. Le protocole PACE garantit que la communication reste chiffrée et sécurisée, évitant ainsi les attaques par interception. Hubert a même prévu un système de journalisation pour suivre les échanges et déboguer d’éventuels problèmes.

Que contient exactement votre carte d’identité ?

Le script de Hubert extrait un ensemble de données structurées dans des fichiers bruts, ainsi qu’un summary.json qui résume toutes les informations récupérées. Voici ce que vous pourrez obtenir :

  • État civil complet : nom, prénoms, date et lieu de naissance, nationalité.
  • Adresse : celle enregistrée dans la puce (attention, elle peut être différente de votre adresse actuelle).
  • Taille : votre taille en centimètres.
  • MRZ : la bande de caractères lisible par machine, identique à celle des passeports.
  • Photo d’identité : au format JPEG 2000, un format parfois difficile à ouvrir avec les visionneuses classiques. Vous pourrez la convertir en JPEG ou PNG avec des outils comme ImageMagick ou GIMP.

En revanche, les empreintes digitales restent inaccessibles car protégées par l’EAC, un mécanisme de sécurité réservé aux terminaux officiels. Hubert a respecté cette restriction, ce qui montre une approche responsable du projet.

Installation et utilisation : un guide pas à pas

Pour installer cnie-python-tools, commencez par cloner le dépôt GitHub sur votre machine :

git clone https://github.com/hubert345/cnie-python-tools.git
cd cnie-python-tools

Installez ensuite les dépendances avec uv :

uv pip install -r requirements.txt

Branchez votre lecteur de carte et insérez votre CNI. Lancez la commande suivante pour extraire les données :

uv run cnie-dump

Le script vous demandera le CAN. Une fois celui-ci saisi, il générera plusieurs fichiers dans un dossier dédié, dont la photo et le fichier JSON récapitulatif. Vous pourrez alors analyser les données à votre guise, ou les archiver pour un usage personnel.

Pourquoi ce projet est-il intéressant ?

Ce tutoriel illustre parfaitement comment l’open source et l’autonomie numérique peuvent se combiner pour redonner le contrôle aux utilisateurs. Hubert n’a pas attendu une mise à jour officielle ou une API propriétaire pour explorer sa propre carte : il a pris les devants avec du code Python et des outils accessibles. Cela ouvre la voie à des usages innovants, comme la vérification automatisée de données, l’intégration avec des systèmes de gestion personnelle, ou même des projets éducatifs pour comprendre le fonctionnement des cartes d’identité électroniques.

De plus, ce projet s’inscrit dans une tendance plus large de self-hosting et de souveraineté numérique, où les utilisateurs reprennent le contrôle sur leurs données personnelles. En maîtrisant les outils comme Python et PC/SC, vous réduisez votre dépendance aux solutions cloud et aux applications mobiles, souvent opaques sur la gestion des données.

Sécurité et bonnes pratiques : ce qu’il faut retenir

Bien que ce script soit conçu pour être sûr et respectueux des données, il est crucial de respecter quelques règles de sécurité :

  • Ne partagez jamais votre CAN : ce code est aussi sensible que votre mot de passe. Conservez-le en lieu sûr et ne le stockez pas dans un fichier non chiffré.
  • Utilisez un environnement isolé : pour éviter toute fuite de données, exécutez le script dans un conteneur Docker ou une machine virtuelle dédiée.
  • Vérifiez la légalité : en France, la lecture de la puce de votre propre carte d’identité est légale, mais assurez-vous de respecter les lois locales si vous utilisez ce script dans un autre pays.
  • Mettez à jour le script : comme tout projet open source, cnie-python-tools peut évoluer. Suivez les mises à jour sur GitHub pour bénéficier des dernières corrections et améliorations.

Conclusion : votre carte d’identité, un terrain de jeu open source

Avec cnie-python-tools, Hubert a transformé une simple carte d’identité en un objet connecté explorable depuis un terminal Linux. Ce projet démontre qu’avec un peu de code et les bons outils, il est possible de reprendre le contrôle sur ses données personnelles, sans dépendre des applications officielles. Que vous soyez un développeur curieux, un passionné de cybersécurité ou simplement un citoyen souhaitant comprendre ce que contient sa CNI, ce tutoriel est une porte d’entrée vers l’autonomie numérique.

Alors, prêt à explorer votre carte d’identité comme jamais auparavant ? Branchez votre lecteur, installez le script, et découvrez ce que votre puce a à vous dire. Et n’oubliez pas : avec la puissance vient la responsabilité. Utilisez ces outils avec éthique et respect des données personnelles.

Pour aller plus loin, consultez le dépôt GitHub de cnie-python-tools et rejoignez la communauté des utilisateurs qui explorent les limites de la technologie open source.


Source : https://korben.info/carte-identite-electronique-lire-puce-python.html

Publications similaires