Protocole Wiegand
Auteur : Bryk
Zine: Rafale #12
1 - Introduction
2 - Description
3 - Lire - écrire une trame
4 - Conclusion
1 - Introduction
John R. Wiegand a découvert "l'effet Wiegand", c'est à dire un
phénomène magnétique utilisé pour réaliser des "badges à effet Wiegand" de
contrôle d'accès par exemple (dans les années 1980). Ces badges ont des
propriétés physiques, concernant leur magnétisme, qui les rendent difficile
à copier. Vous trouverez sur Internet des descriptions de la découverte de
Wiegand.
Le terme Wiegand est également utilisé pour désigner des protocoles de
communication, ou encore connu sous le nom "interfaces Wiegand". Ils en
existent plusieurs, assez ressemblant. Le but de cette article est d'étudier
ce protocole, qui est utilisé dans les systèmes de contrôle d'accès.
Il existe plusieurs architectures de contrôle d'accès:
- 1) autonome: vous avez un lecteur (de badge, magnétique, biométrique, ...),
intégré à la poigné, ou encore relié à une gâche électrique.
- 2) centralisé: vous avez une centrale reliée à un ou plusieurs lecteurs
autonomes. La communication entre le lecteur et la centrale peut se faire
via le protocole Wiegand (chouette :-) ).
Il y a différent type de lecteur, du lecteur de badge au biométrique.
Plutôt que de cloner un badge ou une empreinte digital pour ouvrir une
porte, intéressons nous à ce qu'envoi comme données le lecteur à la
centrale. Imaginé une porte blindé, de 30 cm d'épaisseur, installé sur une
cloison en placoplâtre. Par où essayerez-vous d'entrer?
2- Description
Le protocole Wiegand pour les transmissions filaires utilise une
transmission asynchrone à 3 fils (Data0, Data1, masse) avec des signaux
entre 0 V et 5V par défaut. Les 0 et les 1 sont des impulsions de durée
20 µs à 100 µs à l'état bas.
Exemple d'oscillogramme (non à l'échelle):
Lorsqu'il n'y a pas de données à transmettre, Data0 et Data1 sont à un
niveau haut (5V par défaut).
Lorsqu'un "0" est envoyé, Data0 est au niveau bas (0V par défaut) alors
que Data1 reste au niveau haut.
Lorsqu'un "1" est envoyé, Data1 est au niveau bas alors que Data0 est au
niveau haut.
Le protocole Wiegand utilise des trames de 26 bits. Il existe des variantes
avec un nombre de bits plus grand (Wiegand 36 bits, ...).
Dans ces 26 bits transmis, on retrouve:
- 1 bit de parité
- 8 bits de données (code site)
- 16 bits de données (code ID)
- 1 bit de parité
Le premier bit de parité est calculé suivant les 12 premiers bits de
données (8 du code site et 4 du code ID) et est une parité paire. On
définit le bit de parité paire comme étant égal à zéro si la somme des
autres bits est paire et à un dans le cas contraire.
Le dernier bit de parité est calculé suivant les 12 derniers bits de
données (12 dernier bits du code ID) et est une parité impaire. On définit
le bit de parité impaire comme étant égal à zéro si la somme des autres bits
est impaire et à un dans le cas contraire.
Exemple de trame Wiegand pour un badge dont le code est 0100166A37 :
1 00010110 0110101000110111 0
Le code émis est 166A37 en hexadécimal.
3 - Lire - écrire une trame
Les lecteurs de contrôle d'accès (rfid, code barre, ...) sont
facilement accessible. Il faut regarder le constructeur, le modèle, et
avec une recherche internet on peut trouver la notice d'installation.
Il faut vérifier comment l'ouvrir "proprement", et si il y a des contacts
d'ouverture (tamper = sabotage). Vous trouverez souvent 5 fils: 3 pour le
bus Wiegand, un fil de masse (0V) et un d'alimentation (entre 5V et 12V le
plus souvent).
A la conférence BlackHat 2008, Zac Franken a fait un exposé très instructif,
avec une démonstration. On retrouve sur internet sa présentation, et des
vidéos.
Il a créé un module appelé Gecko, qui se branche entre le lecteur et la
centrale. Il permet de:
- enregistrer plusieurs ID
- télécharger des infos au travers de la LED vers un pc
- charger des infos via une carte vers le module Gecko.
Une fois installé, Gecko peut donner des informations, se mettre à jour,
..., sans ré-ouvrir le lecteur. Il est alimenté sur l'alimentation du
lecteur.
Ce module est sans doute un simple micro contrôleur (pic, ATmega, ...) avec
quelques composants passifs (quartz, résistances, ...).
Photo du module Gecko.
Il est techniquement possible de créer des trames et de les envoyer, pour
faire un "brute force" afin de trouver un code site et un code ID permettant
d'ouvrir la porte. Mais attention, les systèmes de contrôle d'accès ont
un historique dans la centrale, et sur une installation assez importante,
sont couplés à un logiciel de supervision. Autrement dit, cette technique
n'est pas discrète ...
4 - Conclusion
Le protocole de communication Wiegand est utilisé dans différents pays,
y compris la France. Un contrôle d'accès peut avoir un lecteur très
perfectionné (biométrique, ...), la simplicité de ce protocole est vraiment
une faiblesse dans l'installation. Même si le lecteur est équipé de contact
d'ouverture du boitier, si on a la documentation et l'on sait où se trouve
ces contacts, il est facile de leurrer le système.
Les "hack hardware" sont très intéressants, ils combinent électronique et
informatique. Les bâtiments sont équipés en contrôle d'accès, intrusion, vidéo,
ou encore sécurité incendie, ces systèmes sont communicant ce qui nous laisse
la possibilité de trouver de nombreuses failles ou backdoor.
Have Fun ...