Privat person udvikler Android-app, der afkoder data direkte fra dit rejsekort

Din aktuelle saldo, og om du er tjekket ind, er blot nogle af de data, en ny app, som en Version2-læser har lavet, kan aflæse direkte fra dit rejsekort.

Pendler og efter eget udsagn aktiv Version2-læser Casper Bang har begået Android-app'en Rejsekort Scanner, som han har lagt på Google Play. Hvis ellers telefonen understøtter det, kan app'en scanne et rejsekort og blandt andet fortælle, hvad den aktuelle saldo er på kortet, samt om der er tjekket ind.

Casper Bang har skrevet en blog om projektet, som blandt andet har involveret reverse engineering af data på rejsekortet, der i udgangspunktet ikke ligger i et menneskeligt forståeligt format. Der er stadig mange data på rejsekortet, som Casper Bang ikke har tolket, skriver han og vurderer, at han med den nuværende app tolker 10-15 pct. af dataene. Og hvis der er nok interesse omkring app'en, vil han formentlig fortsætte arbejdet.

»Jeg er selv pendler og ret afhængig af at kunne se, hvad der sker. Så lavede jeg en app, som jeg tænkte, folk lige så godt kunne få noget ud af,« siger Casper Bang til Version2.

Han fik inspirationen fra det oprindelige reverse engineering-arbejde, datalog Christian Panton lavede i forhold til rejsekortet, da han var studerende. Panton har for nylig gjort sig bemærket på Version2 med sin alternative NemID-klient, der kører uden java.

Læs også: Datalog overhaler det offentlige med egenudviklet NemID-klient: "Vi skal have flere øjne på protokollen"

Casper Bangs Rejsekort Scanner ligger nu frit tilgængelig på Google Play, hvor den kan downloades og anvendes på enheder med NFC af NXP-typen, som har Mifare-understøttelse. Det er den teknologi, som rejsekortet også anvender. Det er eksempelvis Nexus 7 fra 2012, men ikke Nexus 7 fra 2013.

Rejsekort Scanner indebærer et element af crowdsourcing. For i udgangspunktet er det kun muligt at se, at der er tjekket ud eller ind, men ikke hvor det er foregået. Men Casper Bang har opdaget, at standerne har id-numre knyttet til en station. Og hvis app-brugeren giver tilladelse til det, så kan telefonens gps-koordinater kombineres med et netop overstået tjek ind eller tjek ud.

Via et opslag over et REST-interface trækker app'en stationer i nærheden af sin position ned, hvorefter brugeren kan vælge den rigtige station. Oplysningerne - altså station og id-nummer - bliver herefter parret i skyen. Så når en bruger slår et eksisterende id op, kan det matches med den rigtige station, hvilket bliver synligt på rejseoversigten, som app'en læser fra kortet..

I blogindlægget lister Casper Bang fire punkter ved rejsekortet, der har motiveret ham til at lave Rejsekort Scanner:

  • Kontrolafgift på grund af uobserveret fejl under tjek ind. Det kan være svært at høre (selvom de nu har lavet lyden om) og se (du får to sekunder), hvorvidt der tjekkes korrekt ind.

  • Tvivl om, hvorvidt man har husket at tjekke ind eller genindtjekke ved omskiftning.

  • Manglende tjek ud pga. tjekck in-stander fejlagtigt brugt i stedet. Standerne ligner hinanden på en prik og lyser med samme blå farve, så det er ikke usandsynligt, at man komme til at bytte rundt på dem.

  • Generel uvidenhed omkring saldo, depositum mv. De, der ikke har automatisk optankning eller bare gerne vil følge med, skal konsultere en stander og lave en såkaldt 0-rejse (tjek ind efterfulgt af tjek ud) og skynde sig at bemærke den saldo, der står på displayet. Det er lidt som at gå rundt med en pengepung, uden at du kan se, om der er nogen penge i eller ej.

Version2 har rettet henvendelse til Rejsekort A/S angående app’en og bringer en eventuel opfølgning i den forbindelse, når vi får svar.

Casper Bang har lagt en video på Youtube, der demonstrerer scannersoftwaren, som Version2 i øvrigt også har testet med succes.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk

Følg forløbet

Kommentarer (45)

Joe Sørensen

Først en NemID klient uden Java applet. Så en offline rejsekort scanner.

Hvad bliver det næste? En 2-faktor autentificering af NemID fra mobiltelefon ved hjælp af Rejsekort i stedet for papkort?

Eller kopiere rejsekortet til telefon, så man kan vise telefonen til standeren i stedet for kortet?

Kim Rasmussen

Nu har jeg ikke selv Android eller rejsekort, men jeg kan se hvorfor Casper Bang har fået ideen. Denne App har da manglet siden rejsekortet blev lanceret.

Jeg håber ikke at rejsekortet sætter sig imod denne App. Det er set på Windows Phone platformen at virksomheder har sat sig imod Apps, som bygger på deres data.

Jeg håber at der bliver taget godt imod App'en, den vil hjælpe dem med rejsekort, og måske også bringe nogle fejl frem i lyset.

Jarle Knudsen

Når man søger på Rejsekort, får man også føgende:
- Mit Rejsekort (Jesper Rasmussen)
- Mine rejser (Flemming Bregnvig)
- Rejsestatus (Shooka Web)
- Danish Travel Card Status (Cr-Apps)

Hermed er Caspers app ikke den eneste (som han reklamerer med)... eller overser jeg noget?

Dennis Krøger

Ja, fantastisk idé, desværre er der efterhånden kun Broadcom-baserede NFC moduler i nye telefoner, og de er af en eller anden grund ikke Mifare kompatible (eller, de kan læse ID nummeret, men ikke kort data), på trods af at det er samme frekvens og næsten samme protokol. Jeg går ud fra at det er noget rettigheds halløj (Mifare er NXPs brsnd/teknologi)

Troels Christensen

Jeg syntes sku det er flovt af Rejsekort A/S, at en privat person, hjemme ved "køkkenbordet" kan urette dette, når man tænker på hvor mange millioner de har fået og hvad de kan tilbyde.

Henrik Mygind

Hvis man tænker over det, er det jo sådan IT udvikles. Hvis en mand laver et hobbyprojekt er der kun ham til at tage beslutninger. Hvis det gøres i firma X skal designeren, kodekarlen, testeren, marketing, u-name-it ind over...
Efter min mening er det derfor en god ide at lave åbne API'er der kan give hobbyfolk adgang til systemerne. Se fx Phillips Hue hvor der er åbnet op for protokollen til kommunikation med broen. Det åbner op mange sjove applikationer (både gode og dårlige).
Men det er bestemt ikke fordi det er software til forbrugeren rejsekortet bruger deres penge på - for der er jeg enig: det er kun det aller mest skrabede de giver folk forbrugeren info om.

Rasmus Rask

Ser interessant ud. Enkel og funktionel. Er du SIKKER på den er kompatibel med Rejsekort? ;-)

Jeg tror lige jeg downloader app'en, før Rejsekortet tisser i den kop kaffe!

Torben Mogensen Blogger

Så er der vel ikke langt til en app, der kan manipulere med data på rejsekoret?

Det hjælper ikke ret meget: Du er ikke checket ind eller ud, med mindre en scanner har data om dette.

Da nogle scannere er offline, vil billetkontrol dog skulle ske direkte på kortet, så man kan måske narre kontrollen til at tro, at kortet har været scannet ind på en offline scanner (f.eks. i en bus). Men jeg er ikke sikker på, at det vil virke: Det er ikke utænkeligt, at noget at det data, som Casper Bang ikke har afkodet endnu, er en MD5 checksum (eller lignende) af indtjekningsdata, som bliver checket ved billetkontrol. Så med mindre man kan efterligne denne checksum, så vil det blive opdaget. Man kan sagtens forestille sig, at Rejsekortet AS har gjort uendeligt meget mere for at forhindre snyd, end de har gjort for sikre en god brugeroplevelse. Og en krypteret checksum er en ret oplagt foranstaltning.

Kristian Klausen
Thomas Larsen

»Jeg er selv pendler og ret afhængig af at kunne se, hvad der sker.

Det er selvfølgelig lidt ved siden af men jeg er lidt nysgerrig efter at vide hvad der får en pendler til frivilligt at melde sig ind i klubben af rejsekortbrugere der skal bippe kortet igennem hver dag i stedet for at købe et månedskort som man bare skal have i lommen? Der må jo være mange der tænker som Casper Bang når 2 mio. danskere har meldt sig ind i klubben?

Casper Bang

Kan huskede jeg læste om en metode for nogle år siden..


Det er Rejsekortets asynkrone natur der er dets svaghed. Det kan sagtens lade sig gøre at snyde, men det meste vil blive opdaget af Rejsekort A/S' backend-system, så det er en stakket frisk. Der er iøvrigt ikke stort anderledes end at fabrikere falske klippekort mv. og må derfor svare til dokumentfalsk.

Kristian Larsen

Så man kan konkludere at HTC og Sony mobiler med NFC support i udgangspunktet burde virke mens det er lidt tilfældigt med andre, og slet ikke i nyere Samsung mobiler?
Eller læser jeg listen over NFC læsere forkert?

Michael Thomsen

Det kan sagtens lade sig gøre at snyde, men det meste vil blive opdaget af Rejsekort A/S' backend-system, så det er en stakket frisk.


Ja, i teorien; men hvis Rejsekortets backend minder blot lidt om den hollandske implementering (og jeg har ingen grund til at tro andet), så virker den del af backendsystemet ikke. Søg tilbage på v2 og du vil finde artikler som beskriver det.

Men selvom det er muligt at snyde er det ikke ensbetydende med at man skal gøre det.

PS: Den mest brugbare app-tilføjelse er mulighed for check-ud, så man kan gøre det derhjemme når man har glemt det på stationen.

Erik Jensen

Det er selvfølgelig lidt ved siden af men jeg er lidt nysgerrig efter at vide hvad der får en pendler til frivilligt at melde sig ind i klubben af rejsekortbrugere der skal bippe kortet igennem hver dag i stedet for at købe et månedskort som man bare skal have i lommen?


Ja, nok lidt off-topic. Men for mit vedkommende er det lavere priser end månedskort, da jeg har et par hjemmearbejdsdage om måneden, samt at jeg ikke skal forudbetale over 3000 kr hver måned, men kan nøjes med 300 kr i små bidder i løbet af måneden. Der ud over rart, at jeg ikke skal huske at forny mit kort hver måned, og at jeg slipper for at planlægge min ferie/pendlerkorts udløb, så de to ting passer sammen.
Appen ved jeg ikke rigtig, hvad jeg skal bruge til. Måske til at se, om jeg har husket at checke ind, men har endnu ikke glemt det, så tror ikke jeg vil bruge det i praksis. Den virker nu heller ikke til min telefon, men det er ikke umiddelbartn noget stort tab.

Leif Neland

Som der står på https://play.google.com/store/apps/details?id=com.bangbits.rejsekortscanner

App'en er fungerer med Rejsekort Personligt, Anonymt samt Flex. Man skal blot have en smartphone med NFC der understøtter Mifare smartcards. DETTE EKSKLUDERER DESVÆRRE FØLGENDE POPULÆRE MODELLER:

  • Google Nexus 4/Nexus 5/Nexus 7, version 2/Nexus 10
  • Samsung Galaxy S4/S4 Mini/S3 Mini/Ace 3/Express 2/Mega/Note 3
  • LG G2/Optimus L7 II
Simon Krogholt Christiansen

PS: Den mest brugbare app-tilføjelse er mulighed for check-ud, så man kan gøre det derhjemme når man har glemt det på stationen.

Jeg har haft samme tanke selv (en app der gjorde det muligt at checke ud hjemmefra når man har glemt det), men det åbner op for misbrug. Man ville kunne rejse langt med rejsekortet, og når man var nået frem lade som om man "havde glemt" at checke ud, og "checke ud" via. mobilen fra en helt anden station... Så dén feature får man nok ikke rejsekortet til at acceptere.

Jesper Lund Stocholm Blogger

Super fedt initiativ, Casper,

Hvor mange linier kode har du løseligt skrevet for at lave denne app?

Når jeg spørger, så er det naturligvis fordi, at det kunne være interessant med din app på andre platforme også.

:o)

Claus Jacobsen

Ja det er et kanon initiativ, men som han også skriver, så er det desværre afhængig af den NFC chip der sidder i enheden hvilket gør det noget mere besværligt. (men hvis man kunne få overbevist rejsekortets ledelse om at et API ville være en særdeles effektiv løsning til at afhjælpe nogle af alle deres udfordringer, så kunne det selvfølgelig opveje rigtigt meget. Det med at HW skal specifikt passe sammen, er som regel en ret stor dealbreaker for vid udbredelse)

Mikael Ibsen

men vel ikke noget, nogen kan undre sig over - der er heldigvis flere kvikke hoveder, end man regner med, de skal ofte bare inspireres / provokeres tilstrækkeligt. Og Rejsekortet selv - hvorfor er de ikke forlængst kommet med noget brugbart ? De har jo alle informationerne. Jo, det er vel nok, fordi de har mere end rigeligt at se til med at holde næsen ovenvande, fejlene nede - og taksterne på så megen afstand af kaos, som de nu kan finde ud af.

Det mest interessante bliver imidlertid, om Rejsekortet vil medvirke positivt til den videre udvikling af App'en ved fx. at offentliggøre fere relevate dele af datastrukturen, eller om men vil reagere på samme måde, som da CPR-numrene blev afsløret i al sin ynkelige mangelfuldhed - og sagsøge eller politianmelde Casper Bang for at kigge ind i noget, som man ikke synes, han skal kigge ind i.

Man kan jo også ændre datastrukturen, så app'en bliver uanvendelig - der er mange måder at genere sine faste - og afhængige - kunder på.

Vi får nok meget snart fundet ud af, hvordan Rejsekortets administratorer skal rubriceres i fremtiden: Friske eller fjendske ?

Claus Jacobsen

Hvis man skal tolke Carstens egne udsagn i den anden artikel. Lyder det "svagt positivt" :)(og det er selvfølgelig længe inden der er gået politik i situationen. Det kan sagtens ske endnu)

Peter Kyllesbeck

(men hvis man kunne få overbevist rejsekortets ledelse om at et API ville være en særdeles effektiv løsning til at afhjælpe nogle af alle deres udfordringer, så kunne det selvfølgelig opveje rigtigt meget. Det med at HW skal specifikt passe sammen, er som regel en ret stor dealbreaker for vid udbredelse)


Men det vil så være en adgang til status med forsinkelse, da alle busser er off-line.
Igen er aktuel status kun på kortet, back-end-systemet halter efter, og så er en API ikke meget bevendt for at se om man fik checket-ud, f. eks..

Direkte NFC-adgang er nødvendig (måske ekstern læser til staklerne uden kompatibel NFC-chip).

Martin Veicherts

Jeg har svært ved at forstå rejsekortideen. Hvorfor ikke bare identificere enhver station/busstoppested med nogle stregkodebilleder, - både store og små. Så scanner du startdestinationen ind på din telefon når du starter og slutdestinationen ind når du afslutter, og prisen udregnes. Det eneste teknologi der behøves er din telefon, - og app'en?

Martin Veicherts

OK jeg var vist lidt for hurtig, for man kunne selvfølgelig snyde ved at have et billede af stregkoden med fra nabostationen. Men måske kunne man så kombinere det med en unik telefonid som aflæstes, - som fx en mac adresse? Og så behøvede man slet ikke stregkoden.

Jens Rasmussen

Det kunne vaere sjovt at proeve med mit hollandske rejsekort, som det danske jo er baseret paa. Desvaerre kan jeg ikke installere appen, da den kun er tilgaengelig i den danske store. Kan du evt. lave den tilgaengelig i andre lande, eller kan man finde apk'en et sted?

Martin Veicherts

@Peter - telefoner har (formodentlig?) en macadresse som vel ikke er ligetil at "ændre", selv som root. Derudover ville det formentlig kun forsøges udnyttet af meget få og mon ikke man - med en passende dataanalyse - ville kunne udpege de personer efter et stykke tids misbrug. Når man tillader en (iøvrigt helt ublu) bødestørrelse på 750.- pr. snydetur, så vil det jo være ganske risikabelt at blive afsløret efter x antal snydeture.

Log ind eller opret en konto for at skrive kommentarer

Pressemeddelelser

Affecto Denmark reaches highest Microsoft Partner level

Affecto Denmark, a leading provider of data-driven solutions, has reached the highest level in the Microsoft partner ecosystem: Managed Partner.
22. jun 13:45

Innovate your business with Affecto's IoT Explorer Kit

Are you unsure if Internet of Things fits your business strategy?
31. maj 2017

Big Data Lake Summit: Fast and Trusted Insights

If you want to outpace, outsmart and outperform your competition in a digital world, you need trusted data that can be turned into actionable business insights at speed.
24. apr 2017