Principe:
Accéler au système SCADA (virtuel) d'une usine, et utiliser un protocole OT (ModBus) pour manipuler des produits
Le challenge
Partie 1, Accéder au SCADA
Les octets sont alors à transcrire en ASCII. Le sleep est une astuce, très moche, pour garder la connexion ouverte car j'ignorai (à la lecture du contexte du challenge) si l'interface SCADA se coupe en cas de fermeture de la connexion TCP
Le token varie au fil du temps, et il faudra donc réutiliser notre code Python pour en récupérer d'autres et résoudre la seconde partie du challenge
Partie 2, pilotage
Faire joujou
N'ayant pas réussi à écrire plusieurs "coils register", j'ai choisi de n'en écrire qu'un à la fois
En pratique, les accès en lecture ne m'ont peu servis: je ne les ai utilisés que pour lire la quantité de Rouge ou de Bleu ou de Vert écoulée. Surveiller une seule des couleurs en ayant correctement piloté les débits de vannes avant suffit.
Le système étant virtuel, il n'est pas "parfait": si vous ouvrez une vanne avec un débit de 4 alors que le tanker de mélange M est rempli à 98/100, alors l'interface virtuelle coupera immédiatement les vannes (car 98+4 = 102 >100) alors qu'en vrai, le capteur ne couperait la vanne qu'à M=100
Mon plan est de d'abord remplir (16 68 16) soit un total de 100, de vider la cuve de mélange, puis de la remplir avec (16 58 26) et de la vider de nouveau, menant à un total de (32 126 42).
Exécution du plan
Je passe sous silence les nombreux essais die & retry pour arriver à ce résultat! L'essentiel est de bien surveiller l'état des conteneurs de couleur, pour comprendre ce qu'il se passe.
Comme vous le verrez
dans le code (cf ZIP),
j'ai dû ralentir le flux de Vert sur la fin, à cause du comportement irréaliste du simulateur
(qui bloque à 98/100 si le débit est de 4 au lieu de bloquer à 100)
De plus, comme le total de couleurs est de 200, que la capacité maximale du mélangeur est de 100
et que l'automate de sécurité vite le mélangeur quand il est plein, je me suis servi des
actions automatiques de cet automate de sécurité pour vider le mélangeur!
En vrai, ne faites pas ça, les arrêts d'urgence ne sont pas des features à utiliser