Aztec-Code
NFC-Tag
Deutschlandticket
1234567890123
Max Mustermann
12/27

Keine Lust mehr auf Plastikkarten und schlechte ÖPNV-Apps?

Die föderale Struktur in Deutschland führt dazu, dass der ÖPNV dezentral organisiert ist. Die Folge ist eine unglaubliche Anzahl an schlechten ÖPNV-Apps. Eine Lösung dafür bietet Apple Wallet, leider unterstützen aber nur die wenigsten ÖPNV-Apps eine solche Integration. Das Projekt ÖPNV-Wallet legt die privaten APIs der Verkehrsverbünde offen und implementiert eine eigene Apple-Wallet-Integration – und das alles Open Source.

1

Bei ÖPNV-Wallet registrieren

Für die Nutzung ist ein Konto notwendig, weil die Ticket-Daten (z.B. für das Deutschlandticket) direkt über deine Verkehrsverbund-Kontos beschafft werden müssen (siehe Schritt 2). ÖPNV-Wallet verwendet ausschließlich "Mit Apple anmelden" und will so wenig Daten wie möglich von dir. Es wird zudem die Nutzung von "E-Mail-Adresse verbergen" empfohlen, damit deine private E-Mail-Adresse geheim bleibt.

2

Zugangsdaten der Verkehrsverbünde hinterlegen

Leider stellen die wenigsten Verkehrsverbünde Ticket-Daten über öffentliche APIs zur Verfügung. Aus diesem Grund benötigt ÖPNV-Wallet die Zugangsdaten deiner Verkehrsverbund-Kontos, um die Ticket-Daten über reverse-engineerte APIs zu beschaffen. Deine Zugangsdaten werden verschlüsselt gespeichert und nur du hast den Secret-Key (AES-256-Schlüssel).

3

Tickets auswählen und in Apple Wallet hinzufügen

ÖPNV-Wallet stellt dir für jedes unterstützte Ticket einen "Hinzufügen zu Apple Wallet"-Button zur Verfügung. Klickst du darauf, kannst du das ÖPNV-Ticket in Apple Wallet hinzufügen. Bei Abo-Tickets (z.B. Deutschlandticket) erhältst du zukünftig vor Ablauf des Tickets eine E-Mail mit einem Link zur Eingabe des Secret-Keys, damit das Ticket in Apple Wallet aktualisiert werden kann.

Warum?

Ich komme ursprünglich aus Mannheim, habe dort studiert und war deswegen häufig mit dem ÖPNV unterwegs. Durch einen Rahmenvertrag zwischen meiner Hochschule und der Rhein-Neckar-Verkehr-GmbH (Verkehrsunternehmen, gehört zum Verkehrsverbund Rhein-Neckar) erhielt ich das Deutschlandticket zu einem besonders günstigen Preis. Allerdings war ich dadurch an die IT-Lösung der Rhein-Neckar-Verkehr-GmbH gebunden. Insgesamt existieren 4 offizielle Apps für meine Region (Stand 20.01.2025, Apple App Store):

  • rnv Start.Info (3,0 Sterne bei 1286 Bewertungen)
  • rnv/VRN Handy-Ticket (1,6 Sterne bei 295 Bewertungen)
  • VRN Ticket (3,0 Sterne bei 382 Bewertungen)
  • myVRN (4,2 Sterne bei 1388)

Nachdem im Rahmen einer Ticketkontrolle mein Deutschlandticket plötzlich aus der rnv/VRN Handy-Ticket App verschwunden war, erhielt ich vom Support am nächsten Tag folgende Antwort:

Bitte loggen Sie sich einmal aus und wieder ein. Das Problem sollte damit behoben sein. Manchmal hängt der automatische Abgleich schlicht. Bei über 200.000 Kunden kann das leider vorkommen.

Die Fassungslosigkeit über den letzten Satz gepaart mit dem Wunsch von einheitlichen IT-Lösungen waren schließlich der Startschuss für dieses Projekt im Rahmen meiner Master-Thesis.

Wie?

ÖPNV-Wallet nutzt Reverse-Engineering, um die von den ÖPNV-Apps verwendeten privaten APIs offenzulegen. Im Rahmen einer Man-In-The-Middle-Analyse zwischen dem Backend und der mobilen App des Verkehrsverbunds wird der Netzwerkverkehr untersucht und damit die inoffiziellen API-Endpunkte ermittelt. Mit diesen ermittelten Informationen ist es möglich, dass sich ÖPNV-Wallet als mobile App des Verkehrsverbunds ausgibt und so die Ticket-Daten beschafft. Leider bietet fast kein Verkehrsverbund eine offizielle API für Ticket-Daten an, auf die mit individuellen Autorisierungsschlüsseln sicher zugegriffen werden kann. Aus diesem Grund muss ÖPNV-Wallet leider die Zugangsdaten des Verkehrsverbunds speichern und die Ticket-Daten so abfragen, wie es die mobile App des Verkehrsverbunds auch macht. Gibt es öffentliche APIs für Ticket-Daten von einem Verkehrsverbund, nutzt ÖPNV-Wallet diese natürlich ohne den obigen Prozess.

Die Verarbeitung der Ticket-Daten von den inoffiziellen APIs ist stark von der technischen Lösung des jeweiligen Verkehrsverbunds abhängig. Für Deutschlandtickets wird z.B. häufig der VDV-KA-Standard verwendet, bei dem die Barcodes als Aztec-Codes mit binärem Inhalt ausgegeben werden. Häufig stellen die Verkehrsverbünde bei den inoffiziellen APIs aber nicht den binären Inhalt direkt zur Verfügung, sondern geben nur ein Bild eines Aztec-Codes zurück. In diesem Fall liest ÖPNV-Wallet automatisch den binären Inhalt aus dem Aztec-Code aus und arbeitet mit diesen Daten weiter. Die weiteren Informationen, wie beispielsweise der Name und das Geburtsdatum des Ticket-Inhabers, stehen bei den inoffiziellen APIs der Verkehrsverbünde normalerweise direkt zur Verfügung. Alle relevanten Informationen werden anschließend extrahiert und in einer .pkpass-Datei zusammengefasst. Diese Datei kann dann in Apple Wallet hinzugefügt werden.

Wo/Welche?

Das Projekt wurde am 01.01.2025 gestartet und befindet sich noch in der Entwicklung, die Veröffentlichung ist aktuell leider nicht absehbar (mehr dazu). Bis dahin sollen natürlich so viele Verkehrsverbünde wie möglich in ÖPNV-Wallet integriert werden. Leider stehen mir dafür aber nur begrenzte finanzielle Ressourcen und Zeit zur Verfügung. Die Software ist allerdings modular konzipiert, sodass ein neuer Verkehrsverbund häufig schon in wenigen Minuten über ein Swift Package als Plugin in ÖPNV-Wallet integriert werden kann. Aktuell werden folgende Verkehrsverbünde unterstützt:

Warnung!

Der hier angebotene Service basiert auf dem Kernprinzip, dass die Verkehrsverbünde an der Apple-Wallet-Integration nicht mitarbeiten. Das hat den Vorteil, dass durch eigene Motivation eine Lösung geschaffen wird und nicht auf das Mitwirken/Implementieren der Verkehrsverbünde gehofft werden muss. Allerdings besteht dadurch auch die Gefahr, dass durch Änderungen (z.B. an der inoffiziellen API) seitens der Verkehrsverbünde der ÖPNV-Wallet-Service nicht mehr korrekt funktioniert und angepasst werden muss. Allgemein gilt zu sagen, dass die Funktionalität von ÖPNV-Wallet unmittelbar von der IT-Infrastruktur der Verkehrsverbünde abhängig ist und daher deren Qualität und Leistungsfähigkeit nicht übersteigen kann. Gibt es Fehler auf seiten der Verkehrsverbünde, wird auch ÖPNV-Wallet nicht korrekt funktionieren.