Solution de masterglob pour Evil Plant

misc protocole industriel

11 janvier 2025

Table des matières

Analyse

La description parle du protocole OPC-UA. Nous pouvons donc déjà simplement tester s’il est possible de se connecter sur le serveur fourni dans le docker sur le port indiqué (4841).

Ce protocole peut être utilisé pour chiffrer/signer tous les échanges, et peut nécessiter des authentifications pour se connecter. Heureusement, le serveur ici accepte les connexions anonymes et permet la lecture des données.

Solution

Le plus simple est d’utiliser un client OPC-UA pour observer les données du serveur et en déduire les mix… J’ai utilisé UA Expert (avec le port donné dans la description) :

  • On crée une nouvelle connexion (avec le préfixe normalisé par OPC-UA): opc.tcp://localhost:4841 ou opc.tcp://192.168.1.248:4841 par exemple (accès depuis Windows à un Docker qui tourne dans une VM)
  • Une fois connecté, on peut voir différentes variables. Apparemment, les variables “Vxx” désignent les valves (on n’en a pas vraiment besoin…), et les variables Exx semblent désigner les compteurs de quantité de liquide restant dans chaque cuve.
  • Le programme montre l’ordre des tanks utilisés (1 & 3 puis 7 & 11 et…), il suffit donc de relever la quantité de liquide qui est retirée lors de chaque étape pour connaitre la valeur à utiliser. (On peut d’ailleurs constater que chaque cuve n’est utilisée qu’une seule fois, ce qui rend la tâche plutôt simple)
  • Il suffit (avec UAExpert) de glisser par exemple E1 et E3 depuis la fenêtre de gauche dans la fenêtre “DataAcess View”, et les données sont affichées en Direct. Dès qu’elles changent, il suffit de calculer la différence.
  • Pour ne rien faire à la main, j’ai mis tout ça dans un tableur, et avec CONCAT, DECHEX et MINUSCULE (ouais, piège…) la solution apparaît toute seule.