Onlinetickets der Deutschen Bahn (Teil 2)

Ein paar Formatänderungen und viele neue Samples. Was hat sich seit dem letzten Mal getan?

  • EC/Kreditkartennummern werden nun auch im Ticket mit *** maskiert (seit 02/2012). Ausnahme: Personalausweisnummern, die ja u.a. das Geburtsdatum enthält.
    Witziges Detail: Die EC-Kartennummer wird auf 2 Stellen am Ende maskiert: ******78, aber im 0080ID-Block stehen weiterhin die letzten 4 Ziffern im Klartext.
  • Seit 04/2012 gibt es ein zusätzliches Feld mit maschinenlesbarer Trennung aus Vorname und Name.
  • Einige (sehr wenige) Tickets haben einen 0080VU Block mit 39-40 Byte Binärdaten und bisher weiß anscheinend noch keiner was so drin ist.

Spielen mit den Tickets macht jetzt mehr Spaß, denn zxing kann nun Aztek-Barcodes in den meisten Fällen decodieren, folglich gibt’s das kurze Script parsepdfs.sh, das aus einem Verzeichnis voller Onlineticket-PDFs lauter Dateien mit den Binärinhalten der Barcodes erstellen kann, die sich dann mit onlineticket.py ansehen lassen.
Außerdem habe ich das Programm ein wenig überarbeitet, sodass es nun deutlich robuster ist.

Aus den öffentlich zugänglichen Onlinetickets habe ich dann mal die Seriennummern extrahiert und gegen die Zeitachse aufgetragen.
Jetzt wissen wir also wieviel Onlinetickets die Bahn so verkauft. In 2010 hat der Zähler 100 Millionen erreicht und wurden dann wohl zurückgesetzt (roter Graph), wär das nicht passiert wäre der blaue Graph bei rausgekommen.


9 Gedanken zu “Onlinetickets der Deutschen Bahn (Teil 2)

  1. Chris schreibt:

    Danke für die Script und Update! Ich sehe, dass mein ZXing Fix hilfreich war! :)

    Ich hab die erste zwei Neuigkeiten auch in meiner Sammlung gesehen, aber ich nutze normalerweise meine Bahncard als Ausweis, und am Ende stehen vier Ziffern unmaskiert.

    Ich hab nie den 0080VU Block gesehen, aber ich hab seit Mai keine von meinen Fahrkarten geprüft..

    Aber damals hatte ich Ihre Script ein kleines bisschen weiterentwickelt, um den Touch&Travel 1180AI Block zu lesen. Es gibt nicht so viel drin, aber die Vorgangs-Nr ist einfach “12345678”…

  2. Chris schreibt:

    BTW, ich hab noch ein Wert für das erste Feld in 0080BL.

    Fast alle meine Fahrkarten haben dort “18” drin, und ein paar mit “03”. Ich denke, dass die mit “03” waren von der Webseite gekauft, und alle mit “18” von der Android App.

  3. Slav schreibt:

    Thank You for all presented information.
    I have 1 question: in same Aztec barcodes from RRMV, the U_TLAY section allways empty, but exists section “RAWJSN” like this:

    RAWJSN
    01
    0346
    {view:”tview1″,SNM:”Frankfurt (Main) Hauptbahnhof”,TNM:”Frankfurt (Main) Hauptbahnhof”,SNM:”Frankfurt (Main) Hauptbahnhof”,FTG:”5000″,TTG:”5000″,VTG:”5090″,GN:”Gruppentageskarte 5Pers”,NU:”1617152″,TF:”Gute Fahrt!”,SID:”3000010″,DID:”3000010″,PT:”15,00″,PS:”4″,FTR:”50001″,date:”13.12.12″,time:”11:02″,UB:true,dlb:”bis”,EXP:”1″,C:”0″}?

    What is this? and where to find documentation?
    Thanks.

  4. Hagen Fritsch schreibt:

    Interesting. I haven’t seen this before. I’d doubt though that there’ll be any documentation. This is most likely a proprietary specification for the ticket. But at least the JSON format is easily readable. Would be great to see more samples though and find out what the *TG, NU, *ID fields mean.

  5. Daniel Marschall schreibt:

    Hallo Herr Fritsch,

    ich habe ein paar ganz frische Tickets vom Okt2014 entschlüsselt
    und habe einige neue Felder im 0080BL entdeckt.

    Das Feld 031 hat den Wert “13.10.2014” und sollte wohl “Gültig von” sein. Das Feld 032 hat den Wert “14.10.2014” und sollte wohl “Gültig bis” sein. Je nachdem, ob man am Morgen oder gegen Abend wegfährt, können die Felder den selben Wert haben, sind aber analog mit valid_from und valid_till . Als ich am Morgen gefahren bin, hatte das Ticket eine Gültigkeit von 1 Tag. Bei einer Fahrt gegen Abend (obwohl die Fahrt um 21:43 zu Ende war, hatte es eine Gültigkeit von 2 Tagen).

    Des Weiteren gibt es die Felder 035 und 036. Bei der Fahrt von Heidelberg HBf nach Frankenberg(Eder) waren die Werte 035=”156″ und 036=”104″ und bei der Rückfahrt (separat gebucht) waren die Werte genau vertauscht. Möglicherweise bekommen die Bahnhöfe nun auch eine ID-Nummer? Geht man davon aus, dass 035 der Startbahnhof ist und 036 der Zielbahnhof ist, dann würde 104 für Frankenberg(Eder) stehen und 156 für Heidelberg HBf.

  6. Daniel Marschall schreibt:

    Hier noch ein paar Hinweise/Ausnahmen auf TBD0:

    TBD0=00: VORLÄUFIGE WELTMEISTER BAHNCARD 25 (Ticket von 2011)

    TBD0=05: Heidelberg nach Rheine+City hin und zurück, mittels Bahncard und Sparpreis. War aber kein Facebook Ticket, sondern von bahn.de . Dazubestellt wurde die Bahncard25. (Ticket von 2011)

  7. Simon schreibt:

    @Hagen and Slav: regarding the RMV tickets. RMV is the regional public transport company (Rhein Main Verkehrsverbund). It marks out zones for the towns in the operating area, so called Tarifgebiete. So my guess is FTG=”from Tarifgebiet”, TTG=”to Tarifgebiet” and VTG=”via Tarifgebiet” – yeah, nice language mixture there. You can find all the TGs in this PDF: http://www.rmv.de/linkableblob/de/67494-70882/data/uebersichtskarte_tarifgebiete.pdf – and you won’t be surprised to find Frankfurt is 5000. When you buy a day-ticket (Tageskarte), you get additional access to the airport – that’s why VTG 5090. Some more guesses at fields:
    SNM = Stationsname
    PT = Price of Ticket
    PS = Preisstufe
    FTR = not sure, but from my tickets I think this may be a number of the station where the ticket is bought. It would make sense that Frankfurt Hbf is “number 1” of TG 5000. My tickets, bought in Darmstadt, always start with 40…
    Cheers,
    Simon

  8. Simon schreibt:

    Ich hätte möglicherweise noch zwei neue Werte für den BahnCard-Typ (Byte 11) im OT_0080BL-Block:
    27 = “Einsteiger BahnCard 25 ‘für dich'” (3 Monate, Abo-frei)
    39 = “Einsteiger BahnCard 25 ‘für mich'” (3 Monate, Abo!)
    Quelle: eigene vorliegende vorläufige BahnCards im Online-Ticket-Format

  9. Zweisystemer schreibt:

    Auch wenn der Beitrag schon etwas älter ist, an der Stelle vielleicht noch eine Information zu einem bisher unbehandelten NVP im 0080BL – Record:
    Das NVP S008 taucht immer mal wieder auf. Wenn man z.B. von Remchingen nach Ettlingen Stadt bucht, steht im S008 der Wert 406.
    Nach einigem kombinieren bin ich nun darauf gekommen, dass im S008 die Kennung einer evtl. zusätzlich genutzten nichtbundeseigenen Eisenbahn (kurz NE) eingetragen ist.
    Das wäre im Falle 406 die Albtalbahn.

    Theoretisch müsste das S008 – NVP auch auftauchen, wenn man z.B. eine Relation von Menzingen oder Odenheim bucht, da auch in diesem Fall eine NE Bahn benutzt wird. In diesem Fall müsste S008 den Wert 421 haben, wenn mich nicht alles täuscht, ist das die Nummer der BMO (Bruchsal – Menzingen – Odenheim) – Bahn.

    Viele Grüße,
    Zweisystemer

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *