Pirater ma maison: Garage par cryptographie rencontre Raspberry Pi – Installation électrique

Pourquoi les devis d'électricien sont-ils aussi élevés ? Cliquer sur ce bouton pour comprendre les calculs !

L'histoire d'aujourd'hui en est une de victoire et de défaite, de mystère et d'aventure … Il est temps d'automatiser la porte de garage. Connecter la porte du garage à Internet était un must sur ma liste de fonctionnalités pour la maison intelligente. Spring ouvre est doté de fonctionnalités de connexion Internet intégrées. Comme vous pouvez le deviner, je suis très sceptique quant à la connexion d’un périphérique à Internet lorsque je n’ai pas le contrôle sur le logiciel qui s’exécute.

La porte de garage est contrôlée par un bouton situé sur le mur du garage. Il n'y a que quelques fils, il ne faut donc qu'un seul relais pour simuler la pression d'un Raspberry Pi. J'ai connecté un module de relais à un GPIO sur Pi monté dans le plan de garage et écrit un programme de test rapide et sale en Python. Effectivement, le petit relais s'est brisé joyeusement – mais la porte du garage ne bougeait pas. Il est temps de dépanner. Le bouton-poussoir fonctionne-t-il toujours? * lève la porte du garage * ouais. Qu'en est-il du relais maintenant? * cliquez … cliquez * non.

Vous l'avez peut-être découvert maintenant, mais cette porte de garage qui s'ouvre ne constitue pas un simple bouton-poussoir instantané. Oui, c'est un microcontrôleur, dans un bouton de porte de garage. Ce type de scénario nécessite un équipement médico-légal meilleur qu'un simple multimètre, puis je me suis tourné vers Amazon pour un oscilloscope USB pouvant effectuer une analyse de signal limitée. Un appareil prenant en charge Linux était indispensable et Pico Technology convenait parfaitement.

Recherche d'un secret Nous n'avons pas vraiment besoin de

Mon oscilloscope Picotech à deux canaux, 2204A, est enfin arrivé et il était temps de voir quel type de technologie étrangère se trouvait dans cette porte de garage. Il y a deux fils pour le bouton, un fil de terre et une ligne de cinq volts. Lorsque le bouton est enfoncé, le microcontrôleur renvoie les données sur cette ligne en tirant la ligne 5 V vers le sol. S'il ne s'agit pas d'une implémentation de Dallas 1 wire, il s'agit d'un concept très similaire.

Le protocole filaire fonctionne assez facilement pour se reproduire, idéalement avec un opto-isolateur. J'ai trouvé une puce appropriée et l'ai commandée. Avec l'interface physique triée, il était temps de passer aux données elles-mêmes.

Alors, à quoi ressemble la demande? "Ouvrir Sésame"? Le logiciel picoscope est capable de décoder le signal de sorte que tout réglage avec ces paramètres produise des résultats reproductibles. UART à 9,6 kbaud. 38 octets de données ont été envoyés sur la ligne. L'étape suivante consistait à capturer plusieurs de ces paquets pour rechercher des modèles.

Chaque paquetage commençait par un motif reproductible que Picoscope décodé 55 01 00. Un en-tête de variétés? Un identifiant de source ou de destination? Jusqu'à présent, je n'ai pas assez d'informations à raconter. Autre que ce modèle, les données se sont avérées aléatoires. Alors, où aller d'ici?

Le dessous de l'interrupteur montre quelques numéros de brevets. Les demandes de brevet contiennent souvent de nombreuses informations utiles qui ne sont disponibles nulle part ailleurs. Les brevets montrent également le pire en termes de jargon juridique. Le fait de patauger dans des brevets tels que 7 561 075 lui donne parfois une pépite. Il décrit un schéma de cryptage (ou d'obscurcissement) qui consiste en une simple transformation. En regardant la documentation de brevet, j'ai suspecté qu'il serait possible de casser le schéma de cryptage et le bouton de porte de garage usurpé sur lequel on a appuyé.

Un script Python pour faire de l'informatique était mon prochain déménagement planifié. Avec un peu de chance, je pensais pouvoir restaurer l'algorithme et potentiellement récupérer les secrets utilisés pour générer les données. De nombreux projets ont été suivis lorsque les besoins de la vie réelle ont pénétré dans la vie du pirate informatique et que je ne suis pas à l'abri. Pendant environ un mois, ce projet a été terne. Nous avons emménagé dans la maison, mon premier-né a une semaine et il est temps de faire fonctionner la porte de garage.

Bouton spoof, pas cryptographie

Rappelez-vous comment nous avons commencé à chercher un simple bouton poussoir? Il s'avère qu'un tel interrupteur est intégré à l'ouverture câblée. La soudure menant au petit bouton est la plus rapide à mettre en œuvre, sinon la plus élégante. Oui, ma solution est un Raspberry Pi qui exécute un relais, et ce relais connecte le petit bouton physique du logement câblé.

Des solutions élégantes mais complexes peuvent constituer de gros pièges pour faire avancer les choses. Parfois, vous avez le temps de creuser et de mettre en place la solution idéale, mais parfois, il vous suffit de mener à bien le projet. Si c'est de la triche et que ça fonctionne, ce n'est pas … D'accord, c'est toujours de la triche, mais ça marche, ce qui est plus important.

Nous pouvons ouvrir la porte du garage à partir d’une ligne de commande du Raspberry Pi. C'est utile, mais peut-être un peu maladroit. Rappelez-vous le chemin du retour dans le premier article, j'ai mentionné l'utilisation de la fiole pour créer une interface RESTful? Ici, nous pouvons vraiment commencer.




de fiole d'importation de charbon de bois
importtid
importer RPi.GPIO en tant que GPIO
app = bouteille (__ nom__)
GPIO.setmode (GPIO.BCM)
GPIO.setup (20, GPIO.OUT)
GPIO.setup (20, GPIO.LOW)

@ App.route ("/")
def hey ():
reviens "bonjour!"

@ App.route ("/ Moments / & lt; tap & gt;")
moment de def (pin):
changePin = int (pin)
GPIO.output (changePin, GPIO.HIGH)
temps.sommeil (0.5)
GPIO.output (changePin, GPIO.LOW)
reviens "ok"
si __name__ == "__hoved__":
app.run (host = & # 39; 0.0.0.0 & # 39;, port = 80, debug = false)

Ceci exécute une bouteille rudimentaire de serveur, à l'écoute des connexions http. Voici le relais sur GPIO20 et le serveur attend une requête "/ moment / 20", à quel point il bascule GPIO vers le haut pendant une demi-seconde et déclenche la porte de garage. Pour l'exécuter automatiquement, je l'ai enregistré dans /usr/local/bin/gpio-flask.py, puis j'ai défini un service systemd sur /lib/systemd/system/gpio-flask.service:

[Unit]



Description = service de bouteilles GPIO
After = multi -user.target

[Service]
Type = single
ExecStart = / usr / bin / python / usr/local/bin/gpio-flask.py
Redémarrer = toujours

[Install]
WantedBy = multi-user.target

Comptez systemctl pour activer et démarrer le service qui nous met dans les affaires. Une dernière pièce du puzzle: construisons une page de contrôle sur notre serveur PXE.




& lt;! DOCTYPE html & gt;
& Lt; html & gt;
& Lt; corps & gt;
& lt; div style = "text-align: center" & Gt;
& lt; méthode de formulaire = "post" & gt;
& lt; type d'entrée = "submit" Nom = "GDO" valeur = "Cycle Garage" style = "padding: 25px 15px;" & Gt;
& Lt; / forme & gt;

& Lt;? php
si ($ _SERVER['REQUEST_METHOD'] === & # 39; POST & # 39;) 
si ($ _POST[["GDO"]) 
$ curl_handle = curl_init ();
curl_setopt ($ curl_handle, CURLOPT_URL, & # 39; http: // garage / moment / 20 & # 39;);
curl_exec ($ curl_handle);
// Exécuter la demande
curl_close ($ curl_handle);


? & Gt;
& Lt; / corps & gt;
& Lt; / html & gt;

Nous développerons davantage ce script PHP à l’avenir, mais pour l’instant, il a deux caractéristiques. Le premier construit et affiche la page d'interface – juste un gros bouton intitulé "cycle garage". La deuxième partie du script ne fonctionne que lorsqu'une demande POST est reçue. Si la demande contient la valeur "GDO", il utilise curl pour lancer la commande à notre Raspberry Pi et ouvrir la porte du garage. Cela a été un long chemin, mais ça marche finalement. Un bouton sur un site Web ouvre la porte du garage. Laissez-moi profiter de ma petite victoire pour un moment …

Maintenant que nous avons déjoué l'ouvre-porte de garage, nous pouvons maintenant travailler sur l'enregistrement de données et le contrôle de CVC. Jusque-là, bon piratage!

Pourquoi les devis d'électricien sont-ils aussi élevés ? Cliquer sur ce bouton pour comprendre les calculs !



Le électricité du logement doit répondre à la norme NF C 15-150. Hors de question, par exemple, de doubler à outrance le nombre de prises sur le circuit de commercialisation. Pour augmenter le nombre de lignes, il faut placer des boîtiers de dérivation. n