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

11. marts 2014 kl. 06:2945
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.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

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.

Artiklen fortsætter efter annoncen

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.

Remote video URL

45 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
44
12. marts 2014 kl. 13:08

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?

40
11. marts 2014 kl. 21:09

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?

45
14. marts 2014 kl. 12:25

@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.

41
11. marts 2014 kl. 21:20

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.

37
11. marts 2014 kl. 17:13

Hvis denne app letter uden at blive skudt ned af Rejsekort A/S, så kunne en Bluetooth læser måske være løsningen for andre mobiltelefoner (hvis den er billig nok). :-)

34
11. marts 2014 kl. 16:21

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 ?

32
11. marts 2014 kl. 15:19

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)

39
11. marts 2014 kl. 20:36

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

Java-delen på Android fylder lidt over 3000 linier (damn, det har alligevel taget om sig). Nu er det jo Java, og som du nok ved, er Java ikke det optimale sprog at arbejde med bytes/bits i, og ej heller at skrive asynkron kode i.

REST Service på Google App Engine fylder små 170 liniers kode.

36
11. marts 2014 kl. 17:06

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)

33
11. marts 2014 kl. 15:34

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)

38
11. marts 2014 kl. 20:13

(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).

30
11. marts 2014 kl. 13:49

Er der nogen der gider poste et link til appen i Google Play? Jeg kan hverken fremsøge den på mine mobiler eller på butikken online :-/

27
11. marts 2014 kl. 11:45

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
21
11. marts 2014 kl. 11:04

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?

18
11. marts 2014 kl. 10:30

»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?

25
11. marts 2014 kl. 11:34

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.

13
11. marts 2014 kl. 09:34

.. ligger Appen ud i den internationale Play Store så alle os der er trætte af Googles geo-blocking også kan få glæde af den..

11
11. marts 2014 kl. 09:21

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!

10
11. marts 2014 kl. 09:06

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

14
11. marts 2014 kl. 09:50

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.

19
11. marts 2014 kl. 10:36

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.

24
11. marts 2014 kl. 11:30

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.

29
11. marts 2014 kl. 11:53

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.

6
11. marts 2014 kl. 08:29

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.

9
11. marts 2014 kl. 08:47

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.

3
11. marts 2014 kl. 08:26

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.

2
11. marts 2014 kl. 08:14

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?

12
11. marts 2014 kl. 09:33

Hvad bliver det næste?

Prøv bare at tænke hvad vi ikke kunne have fået af smarte apps, og smarte kombinationer af ting, hvis nu kode og data var åben...

1
11. marts 2014 kl. 06:45

Sjovt og kreativt påfund. Held og lykke

5
11. marts 2014 kl. 08:27

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)

8
11. marts 2014 kl. 08:38

Her er en tabel over hvilke telefoner der kan læse hvad:http://www.shop4nfc.com/nfc-compatibility-chart

Listen skal nok tages med et gran salt, jeg kunne forestille mig at det var en af de ting de kunne finde på at ændre imellem forskellige versioner af samme telefon.

4
11. marts 2014 kl. 08:27

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?