(ou comment je vous ai préparé la meilleure clé USB pour travailler sur les puces RFID)
Hello, aujourd’hui je poste un article qui n’intéressera pas tout le monde mais devrait bien aider les concernés. Si vous utilisez un lecteur NFC/RFID modèle ACR122U et que vous essayez de l’utiliser avec la suite LibNFC des NFC Tools, vous avez peut-être rencontré l’erreur suivante : Unable to set alternate setting on USB interface (Connection timed out).
J’ai au début pensé à un problème matériel, mais si vous essayez le lecteur avec d’autres applications, vous remarquerez qu’il fonctionne correctement. Le problème semble donc bien lié à libnfc. En tombant sur cette erreur il y a plusieurs mois, je me suis senti un peu seul et j’ai ouvert un ticket sur le forum de libnfc. Mais Internet étant un endroit rempli de personnes qui vous veulent du bien, voici une synthèse de ce que de brillants esprits ont trouvé, et un petit coup de pouce de ma part pour ceux qui se sentent un peu dépassés par tout ça :)
L’origine du problème
Seuls certains lecteurs RFID ACR122U-A9 semblent provoquer le problème. Cela serait dû à un petit composant électronique qui diffère d’un lot à l’autre. Est-ce que ce sont les plus récents ? Je ne pense pas car j’en ai reçu plusieurs dizaines directement « sortis de l’usine » de la part du fabricant ACS et aucun n’a le souci. Les unités « à problème » venaient pour ma part d’un revendeur qui ne m’a pas été d’une grande aide quand j’ai été confronté à ce souci. Depuis cette nouvelle collaboration, je n’ai pas eu à déplorer un seul ACR122U affecté par l’erreur « Unable to set alternate setting on USB Interface » et je considérais ce souci comme appartenant au passé. Il y a eu un peu de mouvement sur le sujet ces dernières semaines, alors même si ça ne concerne pas les clients de la Boutique, je me suis dit que ce serait un juste « retour des choses » que d’apporter à mon tour une petite contribution à l’Internet ;)
La version courte
L’erreur Unable to set alternate setting on USB interface (Connection timed out) est provoquée par la librairie libnfc lorsqu’elle essaie d’invoquer une fonctionnalité matérielle du ACR122U qui n’est pas disponible sur toutes les unités. A quoi sert cette fonctionnalité ? Je l’ignore, mais ce que je sais c’est qu’elle n’est pas indispensable pour l’utilisation que j’en ai (l’analyse et la copie de puces RFID et NFC). Un développeur a proposé ces derniers jours une solution qui a l’air de tenir la route. Il est très probable que les responsables de libnfc adoptent ce correctif dans la librairie libnfc à l’avenir. Ce qui signifie qu’à moyen terme, libnfc ne provoquera plus l’erreur Unable to set alternate setting on USB interface (Connection timed out). Donc si tu n’es pas pressé, tu peux juste mettre en pause ton projet NFC/RFID et y revenir dans 6 mois / 1 an pour que cela fonctionne. Si par contre tu n’as pas envie d’attendre, tu devrais continuer la lecture de cet article.
Reconnaître les lecteurs NFC RFID ACR122U « à problème » ?
On commence par la base : tous les lecteurs n’ont pas le problème mais je n’ai pas su trouver de différence ni physique ni logicielle pour les distinguer à part exécuter la commande nfc-list et constater le problème …
En terme de numéro de série, je vois que les lecteurs « sains » sont immatriculés ACR122U-A9 RR171-4* et que ceux à problème sont identifiés ACR122U-A9 RR171-2*. Je ne sais pas si on peut réellement se baser dessus, si vous avez le soucis n’hésitez pas à nous donner vos numéros de série en commentaire !
Si votre lecteur est affecté par la faille que pouvez-vous faire (à part le remplacer évidemment) ? C’est tout le sujet de cet article
Les solutions si votre lecteur ACR122U souffre de l’erreur « Unable to set alternate setting on USB interface ».
Comme je vous le disais un peu plus haut, un développeur a proposé un patch pour le code source de libnfc pour ne plus rencontrer cette erreur. La bonne nouvelle, c’est que la solution est disponible pour tout le monde juste ici. La moins bonne nouvelle, c’est que pour en profiter il faut télécharger ce code source modifié, le recompiler et l’installer sur ton système pour pouvoir l’utiliser.
Alors je sais que ça fait beaucoup de mots clés barbares d’un coup, et que ça peut faire peur, mais vraiment, avec ce tuto et une bonne tasse de café, je suis sûr que tu peux le faire :) Afin de maximiser les chances de réussites de tout le monde, je suis parti d’une version récente de Kali sur laquelle il n’y a eu aucune modification préalable faite : la version 2019.3 “large”. Donc si tu pars de cette version et que tu suis le tuto ci-dessous, tout devrait bien se passer. Si tu ne t’en sors pas où que cela te paraît trop compliqué, j’ai une ultime solution pour toi au bas de l’article 🙂
Compiler libnfc avec le patch qui va bien pour se débarrasser de l’erreur Unable to set alternate setting on USB interface.
On part du principe que vous avez créé votre clé USB Kali comme expliqué dans ce tuto précédent.
Edit du 30/03/2020 : Si vous utilisez Kali dans une version 2020 ou supérieure, vous n’êtes plus identifiés automatiquement en super-utilisateur au démarrage de la clé. Avant de pouvoir suivre ce tutoriel, commencez par entrer la commande suivante
kali@kali:~$ sudo su
Etape 1 : Passer le clavier en français et désactiver les modules parasites
root@kali:~# setxkbmap fr root@kali:~# nano /etc/modprobe.d/blacklist-libnfc.conf
Coller à l’intérieur les 3 lignes suivantes :
blacklist nfc blacklist pn533 blacklist pn533_usb
Ctrl+O pour valider l’écriture, ctrl + X
Etape 2 : Se connecter à internet mettre à jour le système et installer les paquets nécessaires à la compilation
root@kali:~# apt-get update root@kali:~# apt-get install git binutils make csh g++ sed gawk autoconf automake autotools-dev libglib2.0-dev libnfc-dev liblzma-dev libnfc-bin libtool
Un message de confirmation vous demandera de valider l’installation de ces paquets additionnels. Acceptez en tapant Y puis entrée.
Etape 3 : Télécharger le code source de libnfc modifier et lancer la compilation
root@kali:~# git clone https://github.com/jpwidera/libnfc.git root@kali:~# cd libnfc/ root@kali:~/libnfc# autoreconf -is root@kali:~/libnfc# ./configure --prefix=/usr --sysconfdir=/etc root@kali:~/libnfc# make
Etape 4 : Installer les nouveaux binaires fraîchement compilés
root@kali:~/libnfc# make install root@kali:~/libnfc# cd /usr/lib root@kali:/usr/lib# cp -p libnfc.* x86_64-linux-gnu/
Voilà, à partir de ce moment, vous ne devriez plus rencontrer l’erreur Unable to set alternate setting on USB interface (Connection timed out) qui vous a amené ici ! Si vous utilisez une clé USB « Live », vous devrez recommencer la procédure à chaque fois, ce qui est plutôt fastidieux je vous l’accorde. Si par contre vous disposez d’une clé USB « avec persistance » (comme celles disponibles sur la Boutique), vous n’avez à faire cette manipulation qu’une fois en mode persistant et vous retrouverez votre version libnfc modifiée au prochain démarrage en mode persistant (et la version libnfc livrée d’origine avec Kali sera toujours disponible si vous démarrez en mode « Live »).
Je n’arrive pas à compiler libNFC, comment m’en sortir ?
J’aurais aussi pu intituler cette partie “comment avoir la meilleure suite d’outils NFC/RFID compatible avec tous les ACR122U du marché”.
Je te l’avais dis, j’ai une ultime solution pour toi ! J’ai profité du fait que les clés USB de la Boutique aient cette fameuse “persistance” pour les modifier et inclure :
- une version modifiée de libnfc pour éviter l’erreur Unable to set alternate setting on USB interface (Connection timed out)
- une version récente des NFC-Tools qui rend l’utilitaire nfc-mfclassic compatible avec les puces de génération 2 (celles habituellement réservées à la manipulation sur smartphone)
- une version modifiée de mfoc pour inclure le mode “hardnested” pour venir à bout des badges les mieux protégés
- un dictionnaire des clés les plus communes pour chiffrer les badges d’immeubles et autres badges/cartes communément répandu
- et d’autres petites attentions :)
J’ai finalisé l’installation d’une petite série de clés USB qui est vente sur la boutique depuis quelques temps.
Pour conclure cet article
Voilà, bien que je ne maîtrise pas encore 100% des détails liés à ce problème, j’espère que ce résumé t’aura éclairé et tiré du pétrin si tu rencontres cette fichue erreur Unable to set alternate setting on USB interface (Connection timed out). Pour ma part cela aura été l’occasion de peaufiner ma suite d’outils en matière de RFID/NFC pour gagner un temps de dingue ! Si j’ai du nouveau, je mettrai à jour cet article ! D’ici là n’hésitez pas à me dire en commentaire si cela a marché pour vous, et je vous dis à bientôt, probablement pour vous parler d’un nouvel appareil avec lequel je m’amuse bien en ce moment !
Tous les articles de la série Expériences NFC / RFID
ACR122U – Résoudre l’erreur « Unable to set alternate setting on USB interface »
Bonjour,
je me retrouve malgré tout avec l’erreur « Unable to claim USB interface (device or resource busy) »
Je suis sous Kali 2019.3 avec un lecteur ACR122U-A9 RR171-43****.
Bonjour Lip,
L’erreur « Unable to claim USB interface (device or resource busy) » vient du fait que le lecteur ACR122U est utilisé par un autre programme, ce qui barre l’accès à Libnfc.
C’est notamment le cas sous Kali Linux des modules pn533* qui se lancent automatiquement au démarrage.
Pour les désactiver, et se débarrasser de l’erreur, il suffit de taper dans un terminal les commandes suivantes :
modprobe -r pn533_usb
modprobe -r pn533
Cela devrait éliminer cette erreur !
Alexandre
bonjour je voudrais savoir comment peux ton effacer des Badge RFID programmable MCT Android – UID modifiable avec mct
HEllo,
aurais-tu la possibilité d’expliquer pour MacOS ?
J’ai essayé de suivre la démarche mais ça ne fonctionne pas malheureusement…
Merci bien
cp -p libnfc.* x86_64-linux-gnu/ cette commande ne fonctionne pas
Bonjour,
j’ai suivi le tuto mais impossible de le faire fonctionner
Hello Dzkman,
Pouvez-vous nous donner l’erreur que vous rencontrez ? Il n’y a pas de raison que cela ne fonctionne pas chez vous :)
Bien à vous,
Alexandre
Hello Eoras,
Sur Mac il est possible d’utiliser Kali auquel cas rien ne change dans le tuto. Si tu veux réaliser la même manipulation sous MacOS, difficile pour moi de t’aider car je n’en ai pas à disposition…
Bien à toi,
Alexandre
nfc-mfclassic ne fonctionne pas pour cloner un fichier dont la ‘Key B’ a été decodée via une clé B identifiée ‘mfoc -O carte_origine.mfd -k 415a54454b4d’
j’ai essayé plusieurs options
nfc-mfclassic W a u
nfc-mfclassic W b u
nfc-mfclassic W A B
je n’arrive pas à faire copier les block qui sont codés avec la key B..; quand le clonage des 64 block est terminé, il n’y a que les valeurs codées avecf la Key A….
Comment faire pour indiquer l’utilisation de la KEY B [415a54454b4d] ?
Merci
bonjour, j’ai suivi à la lettre les commandes et j’ai une erreur au niveau
./configure –prefix=/usr –sysconfdir=/etc
en retour j’ai cette erreur apparemment il n’y a pas de répertoire ou fichier???
bash: ./configure–prefix=/usr–sysconfdir=/etc: No such file or directory
merci pour votre aide
Bonjour
Merci pour ce tuto qui m’a bien débloqué
Juste au cas ou d’autre sont comme moi en 32 bit, pour la dernière ligne du tuto, il ne faut pas indiquer :
– cp -p libnfc.* x86_64-linux-gnu/
mais
– cp -p libnfc.* i386-linux-gnu/
bonjour j’ai suivi la procédure et à la derniere étape « cp -p libnfc.* x86-64linux-gnu/ »
j’ai le message : cannot stat ‘libnfc.*’ : No such file or directory ..
Une solution ?
j’utilise Kali sur clé live
Bonjour,
Le tuto fonctionne bien par lui même. Il semble qu’il faille brancher le lecteur des le début.
Par contre dès que l’on tape sudo nfc-list, il apparait :
nfc-list uses libnfc libnfc-1.7.1-226-g07f9182
NFC device: ACS / ACR122U PICC Interface opened
error libnfc.driver.acr122_usb Invalid RDR_to_PC_DataBlock frame
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
Ceci même en réentrant les deux commandes modprobe.
Kali clé live.
Cordialement.
Bonjour,
Reçue ce matin, la mémoire USB spéciale Atelierdugeek fonctionne très bien. Merci.
J’ai un tag rfid (ouverture de portillon) que je voudrais dupliquer,mais qu’il ne peut pas lire, car ce ne serait pas du mifare classic. Il comprend un numéro à 9 chiffres gravé dans son boitier (partie métallique entre le tag lui même et sla partie pour l’accrocher)
Que faire si c’était un mifare ultralight, ou autre ?
Merci
Cordialement.
Bonjour, je rencontre une erreur lors de la saisie de cette ligne de commande:
root@kali:~/libnfc# ./configure –prefix=/usr –sysconfdir=/etc
configure: error: invalid variable name: `–prefix’
Hello Miamigui,
Ce sont des doubles tirets devant prefix et sysconfdir : root@kali:~/libnfc# ./configure –prefix=/usr –sysconfdir=/etc
Pour une raison que j’ignore, le moteur du blog modifie cette commande :/
Avec cela cela devrait mieux marcher
Bonjour,
Tout se déroulait bien jusque à ce que je lance : root@kali:/usr/lib# sudo nfc-list
Et la, le drame :
nfc-list uses libnfc libnfc-1.7.1-226-g07f9182
NFC device: ACS / ACR122U PICC Interface opened
1 ISO14443A passive target(s) found:
ISO/IEC 14443A (106 kbps) target:
ATQA (SENS_RES): 00 04
UID (NFCID1): 02 2b e1 9e
SAK (SEL_RES): 08
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
error libnfc.driver.acr122_usb Command Code verification failed
J’ai tout refait de A a Z, j’en arrive toujours la.. une idée Chef ?
Hello Loic,
Comme souvent, une petite recherche google m’a donné la solution en 4,2 secondes ;)
https://github.com/nfc-tools/libnfc/issues/570
Bonne chance dans tes expériences,
Alexandre
Bonjour, j’ai ce message d’erreur dès l’étape 2?
apt-get install git binutils make csh g++ sed gawk autoconf automake autotools-dev libglib2.0-dev libnfc-dev liblzma-dev libnfc-bin libtool
E: Impossible d’ouvrir le fichier verrou /var/lib/dpkg/lock-frontend – open (13: Permission non accordée)
E: Impossible d’obtenir le verrou de dpkg (/var/lib/dpkg/lock-frontend). Avez-vous les droits du superutilisateur ?
Merci, ton tutoriel est super bien expliqué !
Hello Gilles,
Est-ce que tu utilises une version de Kali postérieure à 2019 ?
Depuis 2020, l’utilisateur par défaut de Kali n’est plus un utilisateur « roo », cela signifie qu’il faut précéder chaque commande du mot clé « sudo » (enfin les commandes qui nécessitent des privilèges avancées ». Dans ton cas, la commande serait la suivante :
sudo apt-get install git binutils make csh g++ sed gawk autoconf automake autotools-dev libglib2.0-dev libnfc-dev liblzma-dev libnfc-bin libtool
Voilà, je profite du confinement pour répondre aux commentaires et faire une petite mise à jour des articles, j’espère remettre tout ça au propre d’ici les prochains jours.
Alexandre
ET voilà l’article mis à jour, si vous utilisez une version de Kali 2020 ou supérieur, n’oubliez pas de démarrer avec la commande « sudo su » avant de suivre le tuto.
Alexandre
Bonjour. J’ai un soucis avec mon badge. Quand je fais mfoc -P 500 -O, l’ordi me renvoie « card is not vulnerable to nested attack ». Bon j’ai compris que c’est la mouise. Un petit peu d’aide svp ? Pourtant je programmais autrefois certes en c++ et autres mais bon, là je suis largué et je voulais m’y remettre.
Bonjour , est il possible de cloner un clone sur badge chinois carte blanche ?
Bonjour alex super ta clé linux bootable jvien de la recevoir
Maintenant j »aimerai copier du badge 125kh type HID j’ai le matos mais tres dur de trouver du badge 125kh compatible HID..
AURAIT TU un tuyau ?
Bonjour
J’ai acheter la clé usb kali linux qui fonctionnait tres bien jusqu’a aujourd’hui j’obtiens une ligne de commande disant:
Cannot open keyfile: extended-std.keys, exiting »
Quand je tape la commande :
Mfoc -P 500 – f extended-std.keys -0 badge.dmp
Bonjour a vous tous,
En ce qui me concerne j’ai testé plusieurs config linux Lali, Ubuntu Lubuntu etc…
J’ai à chaque fois le même problème j’ai testé cette dernière version pour rendre le lecteur visible mais rien n’y fait, voici le message d’erreur :
root@didier-bureau:/home/didier# nfc-list
nfc-list uses libnfc 1.7.1
error libnfc.driver.acr122_usb Unable to claim USB interface (Device or resource busy)
nfc-list: ERROR: Unable to open NFC device: acr122_usb:004:003
root@didier-bureau:/home/didier#
Mon ecteur est un AXR122U-A9,
que puis-je faire?
Cordialement
Super, j’ai suivi les instructions et ca a marché pour moi merci !
Bonjour
Merci pour ces informations précieuses, j’ai la fameuse erreur .
Je voudrais juste savoir au début de l’article tu dis que visiblement les lecteurs immatriculés ACR122U-A9 RR171-4* ne donnent plus l’erreur . Très bien mais comment fait on pour acheter ce type de lecteurs ? Dans les sites marchands seul ACR122U Est précisé ?
Cordialement
Bonjour,
Je suis en boot USB sur PC et j’ai aussi l’erreur : error libnfc.driver.acr122_usb Command Code verification failed
J’ai passé trois jours sur le net à chercher un fix mais je trouve pas.
Et en regardant les réponses précédentes, je ne trouve pas ou ne comprends pas le fix.
Quelqu’un peut m’aider?
Bonjour malgré que nous sommes en 2023 j’ai moi aussi le même problème d’erreur
nfc-list
View
Help
nfc-list uses libnfc 1.8.0
NFC device: ACS / ACR122U PICC Interface opened
error libnfc.driver.acr122_usb
Command Code verification failed 3
error libnfc.driver.acr122_usb
Wrong reply
error libnfc.driver.acr122_usb
Wrong reply ove and 1 not uperaded
error libnfc.driver.acr122_usb
Wrong reply
error libnfc.driver.acr122.
_usb
Command Code verification failed
error libnfc.driver.acr122_usb
error
Command Code verification failed
libnfc.driver.acr122_usb
error
Command Code verification failed
libnfc.driver.acr122_usb
error
Command Code verification failed
libnfc.driver.acr122_usb
error
Wrong reply
libnfc.driver.acr122_usb
Wrong reply
J’ai suivis toute les étapes de votre tuto tous ses bien déroulé mais j’ai toujours les erreurs.
Avez-vous trouvé un autre patch ou une autre solution ?