Sunday, March 2, 2014

Rejsekort Scanner

Unusual to this blog, the following entry is in danish due to the topic being the national transit ticketing system in Denmark, also known as Rejsekort.

Læs også nyere indlæg om emnet i form af Opfølgning op launch samt Rejsekort Scanner i samarbejde med Rejsekort A/S.

Rejsekort Scanner

Som det eneste program af sin art, lader Rejsekort Scanner dig aflæse dit Rejsekort direkte og øjeblikkeligt blive informeret omkring check-in status, saldo, rejsehistorik mm. Der er altså hverken behov for data-forbindelse eller kompliceret opsætning!

App'en er fungerer med Rejsekort Personligt, Anonymt samt Flex. Man skal bare have en smartphone med NFC der understøtter Mifare Classic smartcards.





Rejsekort Scanner er en uofficiel app uden adgang til Rejskort A/S' officielle systemer, og programmet kender derfor heller ikke alle placeringen for begivenheder udover dem der er fundet manuelt. Hvis du ønsker at opdatere denne liste kan du slå "Download placeringer" til i indstillingerne, som vil konsultere en central database for at hente evt. nye placeringer.


Hvis du ønsker aktivt at hjælpe med at indsamle disse placeringer, kan du yderligere aktivere "Geo-locate placeringer", som vil forsøge at finde stationsnavne tæt på hvor du er såfremt du netop har checket ind eller ud, og bede dig vælge den aktuelle station. Efterfølgende vil app'en indsende den nye stations-information til en central server (Google App Engine), således at placeringen kan deles med andre. Jeg sætter naturligvis pris på hvis folk vil hjælpe med til at høste disse placeringer, da det vil øge brugbarheden af app'en.



Prøv app'en ved at besøge Google Play Store.

Hvorfor blev Rejsekort Scanner til?

Som udgangspunkt savner jeg ikke de gamle klippekort. Men Rejsekort systemet synes desværre at excellere i uigennemskuelighed for den rejsende. Som en af de første pendlere med Rejsekort har jeg siden november 2011 oplevet:
  • Kontrolafgift p.g.a. uobserveret fejl under check-ind. Det kan være svært at høre (selv om de nu har lavet lyden om) og se (du får 2 sekunder) hvorvidt der checkes korrekt ind. Derudover synes Rejsekort standerne ikke at implementere anti-kollision særlig godt, så hvis du har mere end ét NFC kort i din pengepung f.eks. et medarbejdekort, så bliver standeren meget hurtigt forvirret. Prøv til sammenligning at checke denne video, hvor jeg har lagt mit medarbejderkort inde imellem 2 rejsekort, hvor G4S terminalen ingen problemer har med at udvælge dem én efter én. Eller denne video, hvor min billige Kina NFC læser med min egen driver, ej heller har de store problemer med at håndtere flere kort samtidigt.
  • Tvivl om hvorvidt man har husket at checke ind, eller gen-indchecke ved omskiftning. Eftersom man ingen kvittering har, er man ene og alene ladt i stikken til ens kortidshukommelse. S-togs revisorer har iøvrigt svært ved at se check-ind fra regional-tog og omvendt!
  • Manglende check-ud p.g.a. check-in stander fejlagtig brugt istedet. Standerne ligner hinanden på en prik og lyser samme blå farve, så det er ikke usandsynligt at man komme til at bytte rundt på dem (hvorfor i alverden har man ikke lavet én stander både med check-ind og check-ud, når de nu alligevel placeres i par og ligner hinanden?). Hvis man benytter en check-ind stander istedet for check-ud stander, får man ingen fejl-lyd så det gælder om at vælge rigtigt efter en lang arbejdsdag. Ifølge Rejsekort A/S' regler, hvis man glemmer at checke ud 3 gange inden for et år, kan man få sit kort indraget! Lad mig afsløre, at dette kun tog mig 144 dage!
  • Generel uvidenhed omkring saldo, depositum mv. For dém der ikke har automatisk optankning, eller bare gerne vil følge med, skal man konsultere en stander og lave en såkaldt 0-rejse (check-ind efterfuldt af check-ud) og skynde sig at bemærke den saldo der står i displayet. Det er lidt som at gå rundt med en pengepung, uden at du kan se om der er nogen penge i eller ej. Hvis Rejsekort A/S istedet havde forhandlet en aftale med Nets og altid trak pengende med det samme, ville det være 10 gange mere gennemskueligt for kunderne. Der er selvf. et problem med offline standere, men kunne de så ikke i det mindre bruge en unik ID som man kunne bruge til at sammenholde info fra deres hjemmeside med info fra sin bank?
Mange af overstående problemer skyldes simpelthen mangel på en kvittering. Desværre er det ikke nok blot at konsultere Rejsekortets hjemmeside, da systemet er asynkront og først viser begivenheder 20-30 minutter senere.
Rejsekort Scanner var derfor oprindeligt mit eget forsøg på at afkode Rejsekortet, der jo indeholder den øjeblikkelige sandhed - som også togrevisorer kan se når de kontrollerer de rejsende. Eftersom det lykkedes, i alt fald delvist, besluttede jeg mig for at frigive app'en så andre også kan få glæde af den indtil Rejsekort A/S kommer med en officiel version. Da app'en repræsenterer et ikke helt trivielt stykke arbejde i min iøvrigt begrænsede fritid, tillader jeg mig at smide et lille reklame-banner på app'en der skal motivere mig til at holde den ved lige.

Hvorfor virker den ikke på min mobil?

NFC er beklageligvis ikke bare NFC, idét der findes forskellige hardware standarder og software protokoller. NFC er bl.a. defineret via ISO/IEC-14443 og ISO/IEC-18092 der er moduleret på frekvensbåndet 13.56 MHz. Der findes mange konkrete produkter der bygger på denne hardware standard, bl.a. Broadcom Topaz, NXP Mifare/NTAG203/DESFire, Sony FeliCa mf. Udover en forskel på memory størrelse, er der også forskelle i funktionalitet via den overlæggende protokol.

Rejsekortet er baseret på NXP's Mifare (Classic 4K/S70) der indeholder proproitære overbygninger til autorisation og kryptering. Det betyder desværre, at kun NFC chips fra NXP er i stand til at kommunikere med rejsekortet. De første Android telefoner med NFC support, var bestykket med NXP's PN544 og sidenhen PN65N. Desværre er mange nyere Android telefoner istedet bestykket med Broadcoms BCM20793, hvilket betyder at Rejsekort Scanner ikke virker med samtlige Android telefoner der findes derude.

Følgende mobiltelefoner har ikke Mifare support, og virker derfor ikke med Rejsekort Scanner:
  • Google Galaxy Nexus
  • Google Nexus 4
  • Google Nexus 5
  • Google Nexus 7, version 2 (2013)
  • Google Nexus 10
  • Samsung Galaxy SII
  • Samsung Galaxy S4
  • Samsung Galaxy S4 Mini
  • Samsung Galaxy Ace 3
  • Samsung Galaxy Express 2
  • Samsung Galaxy Mega
  • Samsung Galaxy Note 3
  • LG G2
  • LG Optimus L7 II
  • HUAWEI Honor 2 (u9508)

Følgende mobiltelefoner har Mifare support, og virker derfor med Rejsekort Scanner:
  • Google Nexus S
  • Google Nexus 7 (2012)
  • Samsung Galaxy SIII/S3/SG3
  • Samsung Galaxy Note
  • Samsung Galaxy Note 2
  • HTC One
  • HTC One X
  • HTC One X+
  • HTC One XL
  • HTC Evo 4G
  • Motorola Droid Incredible 4G
  • Motorola Droid Razr
  • Motorola Moto X
  • Sony Xperia
  • Sony Z1 compact 
  • Acer Liquid E1/Express/Glow
  • Asus Padfone 2


Hvis app'en ikke virker på din smartphone fordi enheden mangler den fornødne hardware support, undlad venligst at give negativ feedback, da det reelt ikke er programmets skyld! Jeg hører dog gerne fra dig, således at jeg kan opdatere listen. :) Jeg efterstræber at lade Google Play udelukke muligheden for at installere programmet på smartphones der ikke har Mifare support, men dette er desværre noget af en opgave, da der p.t. er 5300 forskellige Android modeller med NFC support hvor jeg kun kender en brøkdel af dem.


Det er p.t. ukendt hvorvidt de kommende flagskibe, henholdsvis HTC's "The All New One" og Samsung's Galaxy S5, får Mifare support enten ved at benytte en nyere Broadcom NFC chip med support for dette (vil kræve licensering fra NXP) eller en NXP NFC chip (den ældre 544 eller nyere 547 chip).

Ansvarsfraskrivelse

Den obligatoriske disclaimer jeg er nødt til at have med for at beskytte mig selv lidt:
  • Bemærk at der her er tale om en uofficiel app, der ikke er leveret af Rejsekort A/S. Det kan derfor ikke udelukkes at app'en viser noget forkert, ligesom den næppe kan bruges som gyldig kvittering overfor togrevisorer.
  • Jeg er ikke ansvarlig for evt. kontrolafgift eller depositum-tilbageholdelse som følge af manglende check-in/check-ud.
  • På intet tidspunkt bliver der indsendt personlig information der kan identificere dig eller dit rejsekort.
  • App'en hverken forsøger, eller er i stand til (p.g.a manglende nøgler), at skrive data tilbage på rejsekortet og kan derfor ikke gøre nogen skade.

Konklusion

Der er stadig mange data på Rejsekortet som jeg ikke kan tolke. P.t. forstår jeg måske et sted imellem 10-15% af kortets egentlige indhold. Hvis der er nok interesse omkring app'en, vil jeg formeentligt fortsætte arbejdet. Det kunne bl.a. være interesant at lede efter data for rabat-trin, trafikselskab, rejseklasse, antal personer mv.

Det er nærlæggende at tilføje features der aktivt gør brug af disse informationer, f.eks. til at forudsige og alarmere når der skal checkes ud (de eksisterende GPS baserede programmer holder ikke i praksis), vise rest-tid for rejse-gyldighed, registersamkørsel mod Rejsekorts hjemmeside mv.

Det var lidt en streg i regningen, da det gik op for mig, hvor mange af de nyere smartphones der ikke har Mifare Classic support, da det udelukker mange Android brugere fra at bruge app'en. Et gæt er at over 50% af Android brugere på forhånd er udelukket, og det er en procentsats der formeentligt vil stige over tid. Jeg håber naturligvis at nyere smartphones med Mifare Classic support stadig vil melde deres ankomst, for det er næppe sandsynligt at Rejsekort A/S begynder at bruge et format uden kryptering (jeg mener at have set i aktindsigt dokumenterne, at de vil bruge Mifare DESFire i 2015 når Rejsekort version 5 skal rulles ud).

Jeg har ikke haft nogen kontakt med Rejsekort A/S, men hvorfor de ikke selv for længst er kommet med en app kan undre. De har ellers luftet ideen diverse steder, bl.a. her. Jeg kan kun gisne om, at de ikke har synes det var besværet værd. I det mindste kunne de have offentliggjort læse-nøglerne og format-beskrivelse, så andre kunne løse dette problem for dem, uden som jeg, at måtte ty til skrøbelig reverse-engineering.

Skulle man være intereseret i de mere tekniske detaljer bag projektet, kan jeg kun sige... stay tuned. Jeg skal lige overveje fordele/ulemper ved at udlevere for mange detaljer, da jeg ikke som sådan ønsker et udestående med Rejsekort A/S. Men lad mig bare afsløre at det involverede en frygtelig masse kort dumps, nogle special-skrevne analyse værktøj og ikke mindst tekst-markers i så mange forskellige farver som muligt! :)



Post a Comment