IR HACKING : partie I
Auteur : Ratchet
Zine : Rafale #4
====[ Introduction ]====
Salut, voilà donc mon premier article pour Rafale. Celui-ci concerne l'IR
hacking ou comment hacker les systèmes de prise de contrôle a distance par
infrarouge. L'article est divisé, à priori, en deux parties. La première (que
vous lisez actuellement) traitera de la théorie. Pour cela j'ai fais un melting
pot de ce qui est nécessaire de connaître pour s'adonner par la suite aux joies
de l'IR Hacking.
====[ Fonctionnement des systèmes de prise de contrôle à distance par IR ]====
De nos jours les infrarouges sont largement utilisés, que ça soit pour la
télécommande de la TV, la porte automatique du garage, parfois pour votre
voiture (le plus souvent par onde radio à présent). Ce signal infrarouge
est créé par une diode infrarouge/photodiode qui va transformer un courant
électrique en un signal lumineux dont le spectre de longueur d'onde invisible
pour l'oeil humain ce situe en dessous du rouge, d'où le nom !
Pour comprendre le fonctionnement global d'un système de contrôle a distance
par infrarouge, prenons par exemple la télécommande de votre TV que vous
utilisez pas mal je pense ;).
Quand vous appuyez sur un bouton un code va être émis par IR. Ce code est une
suite de 0 et de 1. La LED va donc s'allumer et s'éteindre en fonction du code
émis. La TV va elle décoder le signal et agir en fonction.
Premièrement, le capteur placé sur le téléviseur ne va réagir que pour des
infrarouges émis à une certaine longueur d'onde (choisie dans la plage de
l'infrarouge bien évidemment). Deuxièmement, ce capteur est suivi d'un filtre.
Ce filtre ne va garder que les rayonnements infrarouges oscillant à une
certaine fréquence. C'est-à-dire : comme nous l'avons dit, la LED va s'allumer
et s'éteindre pour émettre des bits, donc tel qu'il l'a été expliqué pour le
moment, quand la led s'allume, le capteur est censé recevoir un 1 et quand la
led est éteinte le capteur est censé recevoir 0.
C'est vrai pour le 0, mais pas tout a fait exact pour le 1. Pour transmettre un
état haut, il ne faut pas que la led soit simplement allumée, il faut qu'elle
s'allume et s'éteigne à la fréquence demandée par le filtre du capteur (donc
qu'elle oscille).
====[ Les méthodes de modulation ]====
Il y a beaucoup de manières possibles de coder des données binaires par des
impulsions infrarouges.
Voilà quelques méthodes communes employées par beaucoup de fabricants et par
quelques normes.
a) Modulation de largeur d'impulsion
Cette technique de modulation se base sur la largeur de l'impulsion, si
l'impulsion est "courte", elle vaut 0 (état bas), si elle est plus "large",
elle vaut 1 (état haut). Cette méthode est employée par le protocole SIRCS
(Sony).
b) Modulation de largeur de l'espace
La méthode est identique a celle présentée ci dessus sauf qu'ici c'est à la
largeur des espaces que l'on s'intéresse et non aux impulsions. Cette méthode
est utilisé par le protocole REC80.
c) Codage sur fronts montants/descendants
Ce codage se base donc sur les fronts montants et descendants des impulsions.
Un front montant vaut 1 et un front descendant vaut 0. Cette méthode est
utilisée par le protocole RC-5 (Phillips).
====[ Ces protocoles plus en détail ]====
<SIRCS>
Le protocole SIRCS développé par Sony est essentiellement utilisé par les
systèmes Sony (logique non?). Il utilise un codage basé sur la modulation de
largeur d'impulsion.
La trame s'organise comme ceci :
- 1 bit de début est tout d'abord transmis
- suivi de 7 bits d'instruction
- puis des bits d'adresse
Le bit de début :
Le bit de début est constitué d'un niveau haut durant 2,4 ms suivi par un
niveau bas de 0,6 ms. Ce bit sert à annoncer que nous allons devoir recevoir
une instruction.
Les bits d'instructions :
Les 7 bits d'instruction représentent une touche de la télécommande, chaque
touche de la télécommande se voit attribué une instruction unique.
Les bits d'adresse :
5 bits d'adresse extensibles à 13 bits destinés à l'appareil concerné (TV,
chaîne Hi-fi, etc...).
< Philips RECS-80 Protocol >
Le protocole emploie la modulation de distance d'impulsion. Un signal logique
« 0 » s'identifie par une durée de 6 périodes de la fréquence
porteuse (158µs), suivies d'un espace qui fait toute l'impulsion pour atteindre
la distance 5.06ms. Un signal logique « 1 » s'identifie par une durée
de 6 périodes de la fréquence porteuse, suivies d'un espace qui fait toute
l'impulsion pour cette fois atteindre la distance de 7.59ms.
Le tout est résumé ici :
Ce protocole commence à se faire vieux.
< Protocole RC5 >
Limites
Le code RC5 peut générer 2048 commandes différentes. Ces commandes sont organisées en 32 groupes adressables de 64 commandes chacun. On peut donc
attribuer une adresse individuelle à chaque appareil, sans se soucier des
influences de réglage d'un appareil sur l'autre.
Constitution des mots de données du code RC5
La trame au format RC5 se compose d'un mot de données de 14 bits.
Sa construction est la suivante :
* - 2 bits de départ
* - 1 bit de basculement
* - 5 bits d'adressage du système
* - 6 bits d'instruction
Les 2 bits de départ sont utiles pour ajuster le niveau de la commande
automatique du gain AGC dans le circuit intégré de réception.
Le bit de basculement indique une nouvelle transmission de données. Sa valeur
change à chaque nouvelle activation d'une touche afin de distinguer une
nouvelle pression d'une pression continue sur la même touche.
Les 5 bits suivants déterminent l'adresse de l'appareil devant réagir à la
commande. On a donc 25 = 32 groupes d'adressage. L'instruction destinée à
l'appareil est codée dans les 6 derniers bits. On a donc 26 = 64 instructions.
Détail d'un bit
Les bits du code RC5 sont codées en biphasé (codage Manchester), c'est à-dire
qu'un bit est composé de 2 demi-bits alternés.
La combinaison bas/haut caractérise un bit positionné à 1 et la combinaison
haut/bas un bit remis à 0.
Détail d'une trame
Chaque bit a une longueur de 1,778 ms, donc une trame rc5 dure en tout
14 x 1,778 = 24,892 ms (24,889 ms réellement sur les documentations dû aux
erreurs d'arrondissement par
Enchaînement des trames
La périodicité des messages (ou trame) à été choisie comme tel : c'est un
multiple de la durée d'un bit soit, 64 x 1,778 ±= 113,778 ms
Modulation infrarouge
Pour un bilan énergétique adapté à l'utilisation de piles, le rapport cyclique
des impulsions de la modulation est relativement faible.
En faisant le produit de 36 KHz et 4 nous obtenons une fréquence de 144 KHz ce
qui correspond à une période de : 1 / (36 x 4) = 6,94 µs.
====[ Conclusion ]====
Voilà finalement on à fait le tour du fonctionnement global en analysant
certains protocoles connus. La seconde partie reposera sur les connaissances
acquises ici. Je tiens à remercier San.B et Positron pour leur travaux
utilisés ici. On se retrouvera peut-être dans une seconde partie pour parler
interception de signal, analyse/decoding, et émission ;)
Ratchet ]~
electronic reversing spirit :p