Reactor startup
π§ Challenge Text¶
Hi, trainee,
normally, this task would be assigned to a senior worker, but none are available now, so your mission will be to start the shut-down reactor at the Granite Peak Nuclear as quickly as possible β by following the startup checklist and entering the sequence step by step. However, we have a big problem: the standard items (e.g., "primary circuit leak test") have somehow been renamed to nonsense by some cat-holic. Only the first item, Initiate Control Circuits, and the last one, Phase the Power Plant, remain unchanged.
The radiation situation at Granite Peak Nuclear remains normal.
Stay grounded!
Interface for starting sequence is at http://gpn.powergrid.tcc/
π Hints Text¶
1. Hint
All services in powergrid.tcc domain are accessible via VPN only.2. Hint
Donβt worry, the reactor has built-in safeguards, so in case of an incorrect sequence it will automatically shut down again.3. Hint
Some simple automation with a script would be quite handy (doing it manually is feasible, but would be a gargantuan task).π¨ Solution¶
Semmi-automated script using playwright
import asyncio
from playwright.async_api import async_playwright
# Example data to loop through
command_list = [
'Initiate Control Circuits',
'Deploy Whisker Sensor Array',
'Initiate Cuddle-Heat Exchanger',
'Prime Catnap Capacitor Bank',
'Prime Yarn-Ball Cooling Fans',
'Calibrate Scratch-Post Stabilizer',
'Enable Laser Pointer Control Panel',
'Trigger Kibble Fuel Injector',
'Ignite Catnip Combustion Chamber',
'Initiate Snuggle Containment Field',
'Mobilize Paw-Kneading Rhythm Generator',
'Enable Fur-Static Charge Collector',
'Calibrate Milk Valve Regulator',
'Enable Cuddle-Grid Synchronizer',
'Deploy Nap-Time Auto-Shutdown Relay',
'Trigger Paw-Print Main Breaker',
'Deploy Grooming Station',
'Initiate Meow Frequency Modulator',
'Tune Purr Resonance Chamber',
'Engage Harmony Purr Amplifier',
'Prime Purr Frequency Equalizer',
'Check Purr-to-Volt Converter Coils',
'Phase the Power Plant'
]
async def fill_form_and_read(page, command: str):
print(f"Filling form with: {command}")
# Fill in form fields (adjust selectors as needed)
await page.fill('input[name="command"]', command)
# await page.fill('input[name="email"]', data["email"])
# Submit the form (adjust selector as needed)
await page.click('button[type="submit"]')
# Wait for navigation or response
await page.wait_for_load_state("networkidle")
# Read and print content from resulting page (adjust selector as needed)
content = await page.text_content('body')
print("Page content after form submit:")
print(content[:500]) # Show first 500 characters
# Optional: go back or reload form page
await page.goto("http://gpn.powergrid.tcc") # Replace with actual form URL
async def main():
async with async_playwright() as p:
browser = await p.firefox.launch(headless=False) # Set to True to run in headless mode
context = await browser.new_context()
page = await context.new_page()
# Load the form page
await page.goto("http://gpn.powergrid.tcc") # Replace with your form URL
for command in command_list:
await fill_form_and_read(page, command)
await browser.close()
asyncio.run(main())