Hintergrund: https://itooktheredpill.irgendwo.org/2010/onlinetickets-der-bahn/
2010 war das Format der Tickets weitgehend unbekannt und dieser proof of concept Parser ist hauptsächlich durch reverse engineering entstanden.
Im Laufe der Jahre sind weitere Quellen hinzugekommen (siehe #4):
configure
-Skript mit dem Parameter
--enable-build-doc=yes
aufgerufen werden (und dann make
), um die
Dokumentation zusätzlich zu der libdbuic2vdvbc.a
zu erstellen. Außerdem sind
viele Beispiele und auch Beispieldaten enthalten.Das Skript muss nicht gesondert installiert werden.
parsepdfs.sh
extrahiert dekodiert den Barcode aus PDF Dateien.
Es benötigt poppler-utils
and imagemagick
um die Bilder aus den PDFs zu
extrahieren, sowie eine funktionierende Java-Installation um den Barcode
mithilfe von zxing zu dekodieren.
Die Signaturprüfung ist optional und hat folgende Abhängigkeiten:
python3-pyasn1
(Dekodierung der Signatur)python3-pycryptodome
(Verifizierung der DSA Signatur).Public-keys der bekannten Ticketanbieter müssen zunächst heruntergeladen werden:
python3 download_keys.py
Das Skript verarbeitet die im Barcode kodierten Daten, diese müssen also zunächst aus dem Ticket extrahiert werden. Wenn man das PDF des Tickets hat geht dies sehr leicht mit:
./parsepdfs.sh *.pdf
Nun sollte man für jedes PDF eine .txt
Datei mit den Daten des Barcodes
erhalten haben, die man nun an das Skript füttern kann:
python3 onlineticket.py *.txt
Sollte das Skript mit einem Ticket nicht klarkommen, bitte einen Bug öffnen
und mir die Barcode-Daten (.txt
Datei) zukommen lassen.