Archives mensuelles : décembre 2022

Reprogrammation télécommandes KeeLoq HCS300-HCS301

Voici quelques illustrations de la reprogrammation de télécommandes à code tournant type KeeLoq (circuit intégré HCS300 et HCS301), je les publie ici car c’est relativement difficile de trouver de la documentation sur la manière de s’y prendre.

Ces télécommandes peuvent s’acheter sur AliExpress pour quelques euros, et si on les reprogramme avec un « manufacturer code » à soi, elles sont correctement sécurisées pour un usage domestique.

Sur internet il est publié que l’algorithme de chiffrage Keeloq standard a été cassé dans les années 2000, néanmoins les méthodes utilisées qui permettent de déchiffrer et récupérer le « manufacturer code » et cloner les télécommandes sont assez poussées . Elles mettent en danger des constructeurs automobiles, ou des fabricants type Somfy etc… qui, s’ils se font cracker une clé et récupérer ce code, voient toute une gamme de leurs produits mis en danger d’avoir des clés facilement recopiables. A mon niveau je doute que ces moyens avancés soient mis en œuvre pour déchiffrer mon « manufacturer code » personnel 🙂 C’est franchement plus simple de me dérober mon trousseau de clés !

Téléchargement :

1ere étape : créer les fichiers de clés chiffrés

Cela se passe sous MPLAB X IDE, avec le plugin Keeloq installable à partir du gestionnaire du plugins, après avoir réglé tous les paramètres souhaités (tout est expliqué dans la datasheet HCS300), il faut exporter un fichier SQTP. On peut choisir le nombre de télécommandes qu’on veut, et le fichier généré comporte une ligne par télécommande.

2nd étape : connecter les circuits intégrés au programmateur

Je dispose de deux modèles de télécommandes, le premier ci dessous acheté chez LEXTRONIC, il dispose de 4 plots de connexion de programmation sur lesquels c’est facile de souder 4 fils et de les connecter au pickit 3 :

Le deuxième modèle de chez Aliexpress, franchement moins cher mais dépourvu de ces connexions. En se repiquant directement sur les pattes du circuit intégré, la programmation ne se faisait pas. La solution a été de dessouder les circuits intégrés des télécommandes, pour les programmer « hors circuit » sur une platine de connexion pour boitiers SOIC avec le pickit 3

L’alternative à la programmation avec un programmateur Pickit est d’utiliser un microcontrôleur spécialement programmé pour cela. On lui fait reproduire les cycles des pattes DATA et CLOCK pour injecter les bonnes données et ça fonctionne. Ci dessous un programme pouvant être utilisé sur PIC16F, il est facilement modifiable pour opérer sur Arduino

Téléchargement : Programme de programmation HCS301 via PIC – main.c

Nota : attention il faut une alimentation externe au circuit pour que ça fonctionne : il faut alimenter en +5V le HCS301 par les pattes VDD et VSS (masse), en plus de les connecter aux pattes VDD et VSS du Pickit, ces dernières ne servent qu’à la détection de tension.

3ème étape : injecter les nouvelles données

La manipe se fait par le logiciel MPLAB IPE, configuré comme ci dessous :

Le fichier SQTP qui est en entrée comporte une ligne par télécommande. Cette ligne comporte tous les paramètres précédées du caractère « : », une fois que la ligne a été utilisée, ce caractère est remplacé par le « ; » et le logiciel IPE ne l’utilise plus, pour ne pas produire deux télécommandes avec les mêmes codes.

Test des télécommandes

Voici l’acquisition des émissions des télécommandes à l’aide d’un analyseur logique et d’un récepteur 433 Mhz. Ci dessous deux trames issues de deux appuis différents de la télécommande visualisés sous pulseview. On voit clairement la partie chiffrée qui est différente entre les deux appuis, ce qui fait que si une trame est capturée par quelqu’un de malveillant, elle ne peut pas être réutilisée une seconde fois, elle est ignorée par le récepteur décodeur Keeloq.

Ci dessous l’extrait de la datasheet qui explicite le contenu de la trame capturée :