Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/11/2020, à 15:53

Nuliel

développement de pilotes sous linux

Bonjour,
J'ai un pc portable avec un lecteur d'empreinte digitale qui n'est pas supporté sous linux. Ce lecteur est connecté en usb (et il me semble qui contient aussi un lecteur rfid pour lequel il y aurait des scripts pour le faire fonctionner).
En particulier, j'aimerais bien avoir des retours d'expérience de personnes qui se seraient lancé dans le développement de pilotes linux.
Comment faut il s'y prendre?
J'imagine qu'il faut un windows et wireshark pour faire la partie reverse engineering, j'ai bon?
Avez vous des liens ou livres à conseiller sur le développement de pilotes linux? Linux device driver est il encore utilisable?
Dans le cas de pilotes usb, faut il faire de la programmation en mode noyau?

Merci d'avance pour éclairer ma lanterne,
Nuliel

Hors ligne

#2 Le 21/11/2020, à 17:32

NicoApi73

Re : développement de pilotes sous linux

Salut Nuliel,

Essaie de jeter un coup d'oeil au livre linux embarqué de Pierre Ficheux si tu en as l'occasion. Tu as quelques rudiments pour la partie noyau (les pilotes sont dans l'environnement noyau)

Pour l'exploitation des ressources (par exemple USB), tu peux prendre un framework qui te fournit des API (comme Qt). Il faut voir ce qui est disponible dans le framework que tu choisiras

Hors ligne

#3 Le 21/11/2020, à 17:59

Nuliel

Re : développement de pilotes sous linux

Merci NicoApi73.
Ok, j'irai jeter un œil dans ce livre.
Vu que c'est de la programmation noyau, il faut que je développe dans une VM pour éviter de crasher mon OS en cas de grosse erreur, j'ai bon?
Donc si je comprends bien, il y a deux choses à faire: un pilote (en environnement noyau) et adapter fprint pour qu'il reconnaisse et utilise ce lecteur d'empreinte digitale.

Hors ligne

#4 Le 21/11/2020, à 18:54

NicoApi73

Re : développement de pilotes sous linux

Nuliel a écrit :

Vu que c'est de la programmation noyau, il faut que je développe dans une VM pour éviter de crasher mon OS en cas de grosse erreur, j'ai bon?

oui, la programmation noyau, c'est sans filet... Après, tu peux développer dans ton environnement et empécher le chargement du module au boot en cas de problème.

Hors ligne

#5 Le 21/11/2020, à 19:18

Nuliel

Re : développement de pilotes sous linux

Ce qui serait bien, ce serait de développer sous mon environnement classique, et exécuter dans une VM, ce serait moins lourd (après j'ai 16 Go donc ça devrait passer)
Je vais continuer mes recherches

Hors ligne

#6 Le 21/11/2020, à 20:21

Bigcake

Re : développement de pilotes sous linux

Bonjour,

Je n'ai jamais compris l’intérêt d'utiliser une empreinte de doigts qui est l'une des données les moins sécurisées (Inchangeable, et laissé sur tout objet touché)
Et qui est, en plus, collecté en masse par l'état ces dernières années (combien de temps avant que ces données fuites par accident/hack ?)

J'ai développé avec succès un driver usb il y a quelque temps
Pour mon driver, j'avais récupéré l'ID hardware avec lsusb au format xxxx:xxxx (constructeur:produit il me semble)
En faisant des recherches avec cet ID, j'ai pu trouver les specs hardware et protocole logiciel publié par le constructeur (j'ai eu de la chance la dessus)

Je ne pense pas que tu ai besoin de passer par un sniffer usb, vu le type de device (lecture d'empreinte), ça semblerai être juste une récupération de données, un peu comme une souris basique
A mon avis, tu pourra juste afficher à  l'arrache les données brutes via printk() et chercher comment ça fonctionne
A voir/tester...

J'avais utilisé ces liens à l'époque :
-  (anglais) https://lwn.net/Kernel/LDD3
- (français) https://broux.developpez.com/articles/c/driver-c-linux/
-  (anglais) https://www.linuxjournal.com/article/4786

Quelques commandes utile :
- insmod, lsmod, rmmod (gestion des modules)
- lshw (pour voir quel driver utilise ton device)
- lsusb -v

Ce que tu peux essayer de faire :
- Trouver des infos spécifiques à l'ID hardware fournit par lsusb
- Trouver le code source d'un driver d'un autre lecteur d'empreinte
- Trouver le code source d'un driver d'un autre device fait par le même constructeur

Garde en tête que si tu n'arrive pas à le faire fonctionner, c'est que tu a abandonné trop tot wink, bon courage.

Dernière modification par Bigcake (Le 21/11/2020, à 20:23)


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#7 Le 21/11/2020, à 20:54

Nuliel

Re : développement de pilotes sous linux

Merci Bigcake.
Tu as tout à fait raison, je pense aussi que les empreintes digitales vont fuiter (si ce n'est pas déjà fait) un jour.
Dans mon cas, je ne pense pas que Broadcom ait donné les specs, sachant que c'est à la fois un lecteur d'empreinte et un lecteur rfid si j'ai bien compris.
Je pensais récupérer les endpoints via un sniffer usb en fait.
Tu as fait un pilote il y a combien de temps? C'est juste pour savoir si même après de gros changements au niveau noyau, LDD est toujours utilisable.
Merci pour toutes ces infos!

L'identifiant que j'ai est 0a5c:5834, une puce broadcom appelée Dell ControlVault, et pour le nfc, https://github.com/jacekkow/controlvault2-nfc-enable permet de l'utiliser

Dernière modification par Nuliel (Le 21/11/2020, à 21:12)

Hors ligne

#8 Le 22/11/2020, à 01:55

moko138

Re : développement de pilotes sous linux

http://www.linux-usb.org/usb.ids connaît déjà :

0a5c:
5801  BCM5880 Secure Applications Processor with fingerprint swipe sensor
5802  BCM5880 Secure Applications Processor with fingerprint touch sensor
5803  BCM5880 Secure Applications Processor with secure keyboard
5804  BCM5880 Secure Applications Processor with fingerprint swipe sensor

dont mon petit doigt me dit que le pilote ne doit pas être très différent de celui que tu vas élaborer.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#9 Le 22/11/2020, à 13:43

Nuliel

Re : développement de pilotes sous linux

Malheureusement, il n'y a pas de pilote pour ces id là, ce n'est qu'une liste d'id de périphériques usb, pas de périphériques forcément supportés sous linux
La liste des périphériques supportés est là: https://fprint.freedesktop.org/supported-devices.html

Dernière modification par Nuliel (Le 22/11/2020, à 13:44)

Hors ligne

#10 Le 07/02/2021, à 16:13

Nuliel

Re : développement de pilotes sous linux

Hello,
Juste un petit message pour préciser que j'ai commencé hier à regarder tout cela de plus près, là je me base sur https://www.apriorit.com/dev-blog/195-s … r-linux-os et la page de fprint.

Hors ligne

#11 Le 13/02/2021, à 15:44

LeoMajor

Re : développement de pilotes sous linux

bonjour,

nfc est rattaché aux cartes à puce, indirectement. et sous nunux, c'est Ludovic Rousseau (smartcard/nfc), qui s'en occupe.
libccid est particulièrement important

à adapter

aptitude search '(libccid|pcscd|libnfc) ~ramd64' -F%p | xargs echo "sudo apt install "
sudo apt install  libccid libnfc-bin libnfc-dev libnfc-examples libnfc-pn53x-examples libnfc5 libnfc5-dbg pcscd

https...://ccid.apdu.fr/ccid/shouldwork.html#0x0A5C0x5834
USB descriptor: readers/Broadcom_5880_0x5834.txt
Features: Multi interface reader, interface 0: Contacted SmartCard
In CCID release: 1.4.25

pcsc_scan

devrait renvoyer un truc du genre https...://ccid.apdu.fr/ccid/readers/Broadcom_5880_0x5834.txt

a/ tu as la piste aussi de  /etc/nfc/libnfc.conf  pour configurer l'usb
b/ avec ou sans pam_nfc ?
c/ https:....//ludovicrousseau.blogspot.com/2016/08/broadcom-ccid-readers.html

difficile de dire sans faire les tests et sans avoir le matériel sous les yeux.

Hors ligne

#12 Le 13/02/2021, à 16:43

Nuliel

Re : développement de pilotes sous linux

Merci pour ta réponse.

Honnêtement je n'ai pas trop regardé comment fonctionne la partie NFC, en fait je me suis principalement intéressé à la partie lecteur d'empreinte digitale vu que c'est cette partie qui ne fonctionne pas.
D'ailleurs quelques nouvelles: en fait le vrai problème c'est de comprendre comment fonctionne ce lecteur d'empreinte digitale. Cela veut dire en fait de faire de la rétro ingénierie dessus et sur le pilote afin de comprendre comment ils discutent (ce qui implique généralement pas mal de crypto).
Par ailleurs le pilote sera en fait en usermode et non kernelmode. Mais ça apparemment c'est facile, c'est la rétro-ingénierie qui est vraiment dure.

Pour en revenir au NFC, ce pc est actuellement sous debian unstable, d'où les unstable un peu partout.

nuliel@nuliel-desktop:~$ apt search "(libccid|pcscd|libnfc)"
En train de trier... Fait
Recherche en texte intégral... Fait
libacsccid1/unstable 1.1.8-1 amd64
  pilote PS/SC pour le lecteur de carte à puce USB CCID d'ACS

libasedrive-serial/unstable 3.7-8 amd64
  pilote PC/SC pour les lecteurs de carte à puce série Athena ASEDrive IIIe

libasedrive-usb/unstable 3.7-8 amd64
  pilote PC/SC pour les lecteurs de carte à puce série Athena ASEDrive IIIe

libccid/unstable 1.4.34-1 amd64
  pilote PC/SC pour le lecteur de cartes à puce USB CCID

libgempc410/unstable 1.0.8-6 amd64
  PC/SC driver for the GemPC 410, 412, 413 and 415 smart card readers

libgempc430/unstable 1.0.8-6 amd64
  PC/SC driver for the GemPC 430, 432, 435 smart card readers

libmrtd-dev/unstable 0.1.6-3+b1 amd64
  Development files for libmrtd0

libmrtd0/unstable 0.1.6-3+b1 amd64
  MRTD - Machine-readable travel document library

libnfc-bin/unstable 1.8.0-2 amd64
  Near Field Communication (NFC) binaries

libnfc-dev/unstable 1.8.0-2 amd64
  Near Field Communication (NFC) library (development files)

libnfc-examples/unstable 1.8.0-2 amd64
  Near Field Communication (NFC) examples

libnfc-pn53x-examples/unstable 1.8.0-2 amd64
  Near Field Communication (NFC) examples for PN53x chips only

libnfc6/unstable 1.8.0-2 amd64
  Near Field Communication (NFC) library

mfcuk/unstable 0.3.8+git20180720-2 amd64
  MiFare Classic Universal toolKit

mrtdreader/unstable 0.1.6-3+b1 amd64
  Reader for machine-readable travel documents (MRTDs / passports)

pcscd/unstable 1.9.0-1 amd64
  intergiciel pour accéder à une carte à puce utilisant PC/SC – coté démon

ruby-nfc/unstable 3.1.2-2 amd64
  ruby wrapper for the libnfc

nuliel@nuliel-desktop:~$

J'ai du coup passé

sudo apt install  libccid libnfc-bin libnfc-dev libnfc-examples libnfc-pn53x-examples libnfc6 pcscd

Par contre la commande pcsc_scan n'existe pas sur mon système. Je crois que mon téléphone a une fonction NFC, je vais voir pour essayer de faire reconnaître le NFC de mon téléphone par le pc. Il y a un tas de commandes nfc:

nfc-anticol             nfc-emulate-tag         nfc-mfultralight
nfc-barcode             nfc-emulate-uid         nfc-poll
nfc-dep-initiator       nfc-jewel               nfc-read-forum-tag3
nfc-dep-target          nfc-list                nfc-relay
nfc-emulate-forum-tag2  nfc-mfclassic           nfc-relay-picc
nfc-emulate-forum-tag4  nfc-mfsetuid            nfc-scan-device

J'essaierai ça avec mon téléphone

Dernière modification par Nuliel (Le 13/02/2021, à 16:44)

Hors ligne

#13 Le 14/02/2021, à 17:28

LeoMajor

Re : développement de pilotes sous linux

dell  E7240 and an E6530 ?

~$ apt-file search /pcsc_scan
pcsc-tools: /usr/bin/pcsc_scan
pcsc-tools: /usr/share/man/man1/pcsc_scan.1.gz

apt-file search, list, si le paquet n'est pas installé;  dpkg -S, -L, si le paquet est installé
(sudo apt-file update)

Hors ligne

#14 Le 02/03/2021, à 10:50

Nuliel

Re : développement de pilotes sous linux

Quelques retours sur mon avancement:
- je ne peux visiblement pas faire fonctionner le NFC de mon téléphone, vu que je l'ai reflashé avec LineageOS et que le NFC n'est visiblement pas compatible (ou je n'ai pas su le faire marcher). Je n'ai donc plus de périphérique avec du NFC pour tester le lecteur NFC du pc.
- j'ai voulu installer win10 dans une vm virtualbox, le résultat, c'est que virtualbox n'arrive pas à lier mon lecteur d'empreinte digitale à la vm, windows me sort une grosse quantité d'erreurs de lecture/écriture
- j'ai essayé sur vmware, c'est encore pire, là je ne peux même pas lier le lecteur d'empreinte à la vm
-> bref faut que je réinstalle un win10 sur un disque complètement libre sans casser l'une de mes installs

Je n'avais pas vu ton retour, je vais regarder ton lien.

Edit: honte à moi, j'avais pas installé le paquet pcsc-tools, du coup j'ai accès à la commande pcsc_scan
Ca bloque sur "Waiting for the first reader...". Je pense que ton lien me sera très utile.

Dernière modification par Nuliel (Le 02/03/2021, à 11:00)

Hors ligne

#15 Le 03/03/2021, à 16:34

Nuliel

Re : développement de pilotes sous linux

Eh bien j'ai la même remarque de la part du logiciel de diagnostic USH que j'ai essayé sur FreeDOS en safe mode.
L'idéal serait que je refasse une install de win10 sur un disque dur et que je teste depuis cette install mon pc portable contenant le lecteur d'empreinte digitale.

Hors ligne