Roshambo
drand
Roshambo | drand | |
---|---|---|
1 | 7 | |
3 | 705 | |
- | 1.3% | |
- | 6.0 | |
over 8 years ago | 2 days ago | |
C | Go | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Roshambo
-
Randar: A Minecraft exploit that uses LLL lattice reduction to crack server RNG
- It plays randomly for the first 998 turns (https://github.com/MrValdez/Roshambo/blob/master/rsb-iocaine...): this line is "if (*turn < trials - 2) return libra ? callback() : random() % 3;", and "libra" is initalized to (int) NULL, i.e. zero, on every invocation.
- In the last 2 turns, it uses `find_goodkarma` to comb through the stack to find where the variables that match its history and the opponents' history are stored. These the stack arrays p1hist and p2hist (https://github.com/MrValdez/Roshambo/blob/master/rsb-iocaine...)
They're easy to find because they contain 998 known values each in a ~random sequence of (0, 1, 2), and they're just upwards of the stack from the current invocation of the Psychic Friends Network.
`find_goodkarma` simply increments a pointer until the whole sequence of 998 values matches the known history.
- Then, it rewrites the history to make itself win. These lines (https://github.com/MrValdez/Roshambo/blob/master/rsb-iocaine...) never get executed, then these lines (https://github.com/MrValdez/Roshambo/blob/master/rsb-iocaine...) tally up draws so far (libra), wins (cancer) and losses (scorpio).
This line makes sure its move is the opponents' move +1 mod 3, which is the winning move: https://github.com/MrValdez/Roshambo/blob/master/rsb-iocaine...
Then, these lines repeat the same trick for the number of wins and losses. It checks whether it's p1 or p2 by comparing the addresses of the win/loss arrays, and then overwrites the wins/losses appropriately using `pizza` https://github.com/MrValdez/Roshambo/blob/master/rsb-iocaine...
in the end it returns an arbitrary value (the address of `good_hand` mod 3).
It was fun to follow but the result is kind of boring :)
drand
-
Randar: A Minecraft exploit that uses LLL lattice reduction to crack server RNG
Or, if you don't want to trust the source, https://drand.love/
-
Time-Lock Puzzles in the Random Oracle Model (2011)
If you're interested in time-lock puzzles, drand [1] achieves this but through randomness instead of computational effort.
[1] https://drand.love/
- A near infinite perfect RNG source?
-
Implications of using distributed randomness drand
drand.love
-
Any time dependent decryption software
Neatest one I've seen lately is https://drand.love/
-
TrueSlots – my project who like Slots Machine
You can also look into drand
-
Survey on Psuedo-Random Number Generation
Or https://github.com/drand/drand
What are some alternatives?
acra - Database security suite. Database proxy with field-level encryption, search through encrypted data, SQL injections prevention, intrusion detection, honeypots. Supports client-side and proxy-side ("transparent") encryption. SQL, NoSQL.
upspin - Upspin: A framework for naming everyone's everything.
randar-explanation - "Randar" is an exploit for Minecraft which uses LLL lattice reduction to crack the internal state of an incorrectly reused java.util.Random in the Minecraft server, then works backwards from that to locate other players currently loaded into the world.