Python’s random uses a Mersenne Twister, while C++’s std::rand() depends on the compiler.
The same code works unchanged from 2015 to 2025 (thanks to Python’s stability).You just need to know the seed.
Didn't C++ get
std::mersenne_twister_engine in 2011 (that doc says it came with C++11 if I'm reading it correctly)? I'm not super familiar with C++ though, so maybe this isn't what I think it is? Of course, that's assuming that, even if C++ was used, that it wasn't an older version without the Mersenne Twister option available, etc...
Also, while I agree that since 2015 (or earlier) Python's RNG has been stable/idempotent (AFAIK, again I only have a passing familiarity Python as well), it's not like it has
never changed... It wasn't even using Mersenne Twister prior to 2003:
...and in 2014 the default seed was changed (made more robust/complex):
https://github.com/python/cpython/issues/65669 ... Which of course didn't impact
seeded randoms, but is still something (albeit minor) to consider...
All I mean to say is that I'm often tempted to try and figure-out the seed(s) used to generate the puzzle keys, as I think you've spent quite a lot of time doing... But every time I think about it, I have to remind myself that we just don't know enough / have enough data about where to start... Which version of which language was used, and which RNG (standard or cryptographic, Mersenne Twister or something else, etc) was used, or whether the rand was seeded once, before the loop with a static seed (like I tend to do, which I think is kind-of a common C# pattern) or again on every loop with a dynamically changing seed (the way the code you posted was), not to mention the seed's exact value itself, and who knows what other factors...
Anyway, if you or anyone has more thoughts on this, please do share if you're willing... Obviously, cracking the 'secret' to all the remaining puzzles at once would be the Holy Grail of this whole thing

I'm just not holding out any hope for it, and I think nomachine has also long-since abandoned this route too...