mirror of
https://git.eta.st/eta/rsp6-decoder.git
synced 2024-11-23 18:15:41 +00:00
.idea | ||
rsp6-webshite | ||
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
decode.py | ||
keys.json | ||
LICENSE | ||
README.md | ||
rsp6-decoder-rs.iml | ||
spec.ods | ||
spec.pdf |
rsp6-decoder
This is a set of tools to decode UK National Rail electronic ticket barcodes, specifically RSP6 format, as explained in the blog post "Reversing UK mobile rail tickets".
If you're interested in a working demo, check out the hosted version at eta.st/tickets/.
What's in this repo?
- This repo is primarily a Rust crate that can decode these tickets, given a scanned barcode string (starting with
06...
). Look at thedecode_ticket
function for the main entry point. - A website that embeds the crate for demo purposes (powering the hosted version) is inside
rsp6-webshite/
.- This will require compiling the main crate for WASM using
wasm-pack build --features wasm
. - If you get errors decoding at runtime, you might need to replace references to
wbindgen_realloc
inpkg/rsp6_decoder_bg.js
withundefined
. It's unclear why this happens.
- This will require compiling the main crate for WASM using
spec.pdf
has a janky table showing what all the fields in a decoded ticket look like.spec.ods
is the janky spreadsheet that was used to make this.
keys.json
has a copy of all the ticket public keys, as of 2023-01.decode.py
was a hacky Python script to make these from some binary plist I found at some point. You can ignore it.
License
This is all MIT. Please go forth and use it to make your own ticket stuff!