$ pip install zteb
$ zteb unwrapNedelcho Petrov and me, being the great friends that we are, were brainstorming ideas for Tony's (Anton Karakochev) birthday present at the very last moment. Inbetween of trying to find a rather unique and satisfying present and entertaining ourselves, as, did I say, great friends, we considered everything from a set of fresh winter tyres to mount a car onto to some bitcoins (or infinitesimal fractions thereof) to be locked for good as a nice (?) investment for the next twenty years. I thought about this for a while on my own, but concluded that even though such an investment could probably be sufficient to buy a new car, it would be a shame if there are no tyres to mount it on. I took the idea a bit further (or behind) and decided to lock a simple birthday card in an electronic time capsule of some sort, so it could only be read after three days. This would make for some present and prevent Tony from realising what kind of friends he has, or at least in our presence.
ZTEB provides a simple command line interface to create a sort of electronic time capsules, the content of which can only be retrieved after a specified amount of time. The functionality is based on the paper Time-lock puzzles and timed-release Crypto by Rivest, Shamir and Wagner and relies on encrypting the contents of the capsule and only exposing information on how to retrieve the encryption key with significant computational effort. In case our current beliefs on complexity classes (P/NP) and prime number factorization techniques are correct, a fixed amount of iterations is required to solve the puzzle. The time it takes to perform a single iteration, however, can vary greatly between various machines and algorithm implementations, the average naturally decreasing as more powerful CPUs are produced. This implementation can create a capsule which takes approximately the specified amount of time to open on the current machine, running the same operating system, running the current code, on the same Python interpreter, using the same...
Usage: zteb wrap [OPTIONS] CARD OUTPUT
Wrap an electronic birthday-card.
Options:
-w, --wrapper-text PATH Optional path to file containing wrapper text. This
is shown while unwrapping the card.
-d, --duration DELTA Desired amount of time for the unwrapping to take
in the format of pandas.Timedelta.
--help Show this message and exit.
Example
$ zteb wrap amazing-capsule-contents.txt capsule.zteb -d 13:37:00Usage: zteb unwrap [OPTIONS]
Unwrap an electronic birthday-card.
Options:
-c, --card PATH Path to a wrapped birthday-card. If not specified,
the built-incard for Tony's birthday is being
unwrapped.
-o, --output-file PATH Path to file to store card message to.
-s, --silent Suppress all stdout output.
--help Show this message and exit.
Example
$ zteb unwrap -c capsule.zteb