mirror of
https://git.eta.st/eta/rsp6-decoder.git
synced 2024-12-25 01:17:45 +00:00
eta
775e560d10
commit the package anyway, even though it's technically generated
I had to do crimes to get it to work (changing the realloc function), and I'd like the crimes to be checked in to source control for future eta :p
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!
Languages
JavaScript
41%
Rust
38.8%
HTML
16.3%
Common Lisp
2.1%
Python
1.8%