#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
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Pour reprendre le contrôle des semences: https://kokopelli-semences.fr/fr/
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.
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Pour reprendre le contrôle des semences: https://kokopelli-semences.fr/fr/
Hors ligne
#4 Le 21/11/2020, à 18:54
- NicoApi73
Re : développement de pilotes sous linux
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
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Pour reprendre le contrôle des semences: https://kokopelli-semences.fr/fr/
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 , 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
Radio+sons libre=oxyradio.net
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)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Pour reprendre le contrôle des semences: https://kokopelli-semences.fr/fr/
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)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Pour reprendre le contrôle des semences: https://kokopelli-semences.fr/fr/
Hors ligne