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 :

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