Solution de lrstx pour Color Plant 1/2

misc protocole industriel

4 mai 2024

C’est la petite entrée dans le monde modbus. On cherche le token, et le README nous indique que les registres 0 à 31 nous donne le token du joueur.

On choisit de le résoudre en python, et la doc de pyModbusTCP indique une ouverture de la communication par ModbusClient() et une lecture des registres par read_holding_registers(). On n’oublie pas d’ouvrir le navigateur sur l’interface avec le token avant de couper la communication. Le code est donc :

#!/usr/bin/env python3

import os

# pip install pyModbusTCP
from pyModbusTCP.client import ModbusClient
c = ModbusClient(host="localhost", port=4502, unit_id=1, auto_open=True)

regs = c.read_holding_registers(0, 32)
if regs:
    print(regs)
    token = ''.join([ chr(r) for r in regs])
    os.system(f'firefox http://localhost:8000/{token}')
    input('Press any key to stop')
else:
    print("read error")

Et le navigateur affiche:

flag1

Premier flag : FCSC{266350f412840c932b29bb095394d318c17c844f70c05f49c9998a8e614be531}