{"id":3350,"date":"2018-12-01T12:01:22","date_gmt":"2018-12-01T11:01:22","guid":{"rendered":"http:\/\/www.unicoda.com\/?p=3350"},"modified":"2018-11-21T18:50:52","modified_gmt":"2018-11-21T17:50:52","slug":"clone-parfait-dune-puce-rfid","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=3350","title":{"rendered":"Clone parfait d&rsquo;une puce RFID"},"content":{"rendered":"\n<p>Cela faisait un petit moment que j&rsquo;avais envie de m&rsquo;int\u00e9resser au monde des puces RFID. Apr\u00e8s quelques recherches, j&rsquo;ai fait le choix d&rsquo;un lecteur RFID chinois de type ACS \/ ACR122U, qui a l&rsquo;avantage de son prix abordable en comparaison de certains autres lecteurs. Pour cette premi\u00e8re entr\u00e9e en mati\u00e8re, je me suis donn\u00e9 pour objectif la cr\u00e9ation d&rsquo;un clone de mon badge d&rsquo;immeuble. Voici les \u00e9tapes qui ont permis d&rsquo;y arriver.<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Pr\u00e9paration du syst\u00e8me<\/h4>\n\n\n\n<p>Sous ArchLinux, il est n\u00e9cessaire d&rsquo;installer quelques paquets pour la gestion du NFC, \u00e0 savoir :<br><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>libnfc : Platform independent Near Field Communication (NFC) library<\/li><li>mfoc : MiFare Classic Universal toolKit<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo pacman -S libnfc mfoc<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">V\u00e9rifications<\/h4>\n\n\n\n<p>Maintenant que les programmes n\u00e9cessaires sont install\u00e9s, nous pouvons connecter le lecteur \u00e0 notre ordinateur, poser une puce RFID sur celui-ci et v\u00e9rifier que tout est d\u00e9tect\u00e9.<br><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ nfc-list<p>nfc-list uses libnfc 1.7.1<br>NFC device: ACS \/ ACR122U PICC Interface opened<br>1 ISO14443A passive target(s) found:<br>ISO\/IEC 14443A (106 kbps) target:<br>ATQA (SENS_RES): 00&nbsp; 04<br>UID (NFCID1): 5a&nbsp; 7a&nbsp; 3f&nbsp; 10<br>SAK (SEL_RES): 08<\/p><\/pre>\n\n\n\n<p>Comme nous pouvons le voir dans le retour de la commande, le lecteur et la puce sont bien reconnus.<br><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Extraction du contenu de la puce source<br><\/h4>\n\n\n\n<p>Passons maintenant \u00e0 l&rsquo;extraction des donn\u00e9es de la puce source \u00e0 proprement parler. La cr\u00e9ation d&rsquo;un dump de la puce dans un fichier s&rsquo;effectue avec la commande suivante :<br><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mfoc -P 500 -O badge-entree.dmp<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Modification de l&rsquo;UID de la puce cible<\/h4>\n\n\n\n<p>Afin de cr\u00e9er une copie parfaite, il convient de modifier l&rsquo;UID de la puce cible. Attention, pour effectuer une op\u00e9ration de ce type, il est bien s\u00fbr n\u00e9cessaire de disposer de puce RFID inscriptible dans leur totalit\u00e9. On parle notamment de puce dont le bloc 0 est modifiable.<br><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nfc-mfsetuid 5a7a3f10<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Premi\u00e8re tentative de clonage de la puce<br><\/h4>\n\n\n\n<p>A ce stade, les informations que j&rsquo;ai pu trouver en divers endroits sur le web pr\u00e9conise d\u2019ex\u00e9cuter une nouvelle fois la commande ci-dessus, mais cette fois sur la puce cible afin d&rsquo;obtenir un fichier badge-vierge.dmp. Il est ensuite question de proc\u00e9der \u00e0 l&rsquo;\u00e9criture des donn\u00e9es sur la puce vierge de la fa\u00e7on suivante :<br><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nfc-mfclassic w a badge-entree.dmp badge-vierge.dmp<\/pre>\n\n\n\n<p>En particulier, pour copier \u00e9galement le contenu du bloc 0, on remplacera l&rsquo;option w par W, ce qui aura pour effet d&rsquo;\u00e9crire l&rsquo;int\u00e9gralit\u00e9 des 64 blocs sur la puce, toujours si celle-ci le permet.<\/p>\n\n\n\n<p>Pour ma part, j&rsquo;ai not\u00e9 que je n&rsquo;ai pas r\u00e9ussi \u00e0 modifier l&rsquo;UID de ma carte cible avec la commande nfc-mfclassic, bien que le bloc 0 de la puce rfid soit modifiable. Je me suis donc tourn\u00e9 vers la commande pr\u00e9sent\u00e9e plus haut afin de remplacer sp\u00e9cifiquement l&rsquo;UID de ma puce cible par celui de ma puce RFID source.<\/p>\n\n\n\n<p>Par ailleurs, la commande ci-dessus ne m&rsquo;a pas&nbsp; permis pas de cr\u00e9er une puce identique. Les cl\u00e9s ne sont pas modifi\u00e9s et comparer le hash des dump permet de v\u00e9rifier leur diff\u00e9rence. La cl\u00e9 par d\u00e9faut reste utilis\u00e9e sur la puce chinoise. Un petit tour du c\u00f4t\u00e9 de l&rsquo;entr\u00e9e de mon immeuble et la petite lumi\u00e8re rouge clignotante me confirme que les puces cr\u00e9es ne sont pas correctes.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Cr\u00e9ation du clone<br><\/h4>\n\n\n\n<p>Cette premi\u00e8re tentative s&rsquo;\u00e9tant r\u00e9v\u00e9l\u00e9e infructueuse, j&rsquo;ai donc tent\u00e9 la cr\u00e9ation du clone de la mani\u00e8re suivante :<br><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nfc-mfclassic W a u badge-entree.dmp<\/pre>\n\n\n\n<p>En ex\u00e9cutant mfoc sur la puce ainsi cr\u00e9\u00e9e, le r\u00e9sultat n&rsquo;est plus imm\u00e9diat, ce qui est plut\u00f4t encourageant car cela prouve que la cl\u00e9 par d\u00e9faut n&rsquo;est plus utilis\u00e9e.<\/p>\n\n\n\n<p>V\u00e9rification avec les sommes de contr\u00f4le:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ sha256sum badge-entree.dmp<br>0ca740e1a69a5eb379c96e232b6c39ed70daf8072912e2950e73f91876d3ec35&nbsp; <br>badge-entree.dmp<br>$ sha256sum badge-cible.dmp<br>0ca740e1a69a5eb379c96e232b6c39ed70daf8072912e2950e73f91876d3ec35&nbsp; badge-cible.dmp<\/pre>\n\n\n\n<p>Dernier point, pour afficher le contenu d&rsquo;un fichier hexad\u00e9cimal dans le terminal, on pourra utiliser la commande hexdump (ou xxd, bien pratique \u00e9galement).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Conclusion<\/h4>\n\n\n\n<p>Avec le mat\u00e9riel et les logiciels ad\u00e9quats, il est possible en quelques minutes de cr\u00e9er une copie parfaite d&rsquo;une puce RFID, tel qu&rsquo;un badge d&rsquo;entr\u00e9e d&rsquo;immeuble. \u00c9tant donn\u00e9 que certaines puces RFID se pr\u00e9sentent sous la forme de porte-cl\u00e9s, nous pouvons alors envisager une mani\u00e8re plus pratique d&rsquo;ouvrir, par exemple, la porte d&rsquo;acc\u00e8s de son entreprise. Il serait \u00e9galement int\u00e9ressant de pouvoir fournir le contenu extrait de la puce \u00e0 l&rsquo;aide de son t\u00e9l\u00e9phone portable; l&rsquo;id\u00e9al serait alors une identification automatique du lecteur pour un choix automatique de la puce RFID \u00e0 \u00e9muler.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cela faisait un petit moment que j&rsquo;avais envie de m&rsquo;int\u00e9resser au monde des puces RFID. Apr\u00e8s quelques recherches, j&rsquo;ai fait le choix d&rsquo;un lecteur RFID chinois de type ACS \/ ACR122U, qui a l&rsquo;avantage de son prix abordable en comparaison de certains autres lecteurs. Pour cette premi\u00e8re entr\u00e9e en mati\u00e8re, je me suis donn\u00e9 pour &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=3350\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Clone parfait d&rsquo;une puce RFID&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[85,392,394,393,391],"class_list":["post-3350","post","type-post","status-publish","format-standard","hentry","category-info","tag-archlinux","tag-clone","tag-libnfc","tag-mfoc","tag-rfid"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3350"}],"version-history":[{"count":6,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3350\/revisions"}],"predecessor-version":[{"id":3376,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3350\/revisions\/3376"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}