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.
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.
[video: http://youtu.be/teGSzvNhoNg]
- Mest læste i 2014: Snagende Nets-ansatte, YouSee-brøler og hjemmebrygget NemID
- Hack: Rejsekort-feature tillader check ind trods flere NFC-kort i pungen
- Kort-hacker indgår officielt samarbejde med Rejsekort A/S
- Sådan opdagede pendler problemet med rejsekortets ‘NFC-parathed’
- Rejsekort trækker i land på app-løfte
- Betalingseksperter: Apple bliver tvunget til at bide til NFC-bollen
- Denne artikel
- Datalog overhaler det offentlige med egenudviklet NemID-klient: "Vi skal have flere øjne på protokollen"
- DIKU-studerende: Så let er Rejsekortet at hacke
- emailE-mail
- linkKopier link

...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.
Fortsæt din læsning
- Sortér efter chevron_right
- Trådet debat
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?
- more_vert
- insert_linkKopier link
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?
- more_vert
- insert_linkKopier link
Det skal være et stykke hardware, hvor du ikke kan fuske med data! (tænk bare på SIM-kortet) Mange har rooted deres telefoner.Jeg har svært ved at forstå rejsekortideen
- more_vert
- insert_linkKopier link
@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.
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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). :-)
- more_vert
- insert_linkKopier link
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 ?
- more_vert
- insert_linkKopier link
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)
- more_vert
- insert_linkKopier link
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.Hvor mange linier kode har du løseligt skrevet for at lave denne app?
REST Service på Google App Engine fylder små 170 liniers kode.
- more_vert
- insert_linkKopier link
God pointe! Jeg gætter på at du kan kode i Objective C mod Cocoa Touch?Når jeg spørger, så er det naturligvis fordi, at det kunne være interessant med din app på andre platforme også.
- more_vert
- insert_linkKopier link
Det ville da vist være omsonst at udvikle en app til iOS al den stund, at der vist ikke er et NFC-API til iOS.Jeg gætter på at du kan kode i Objective C mod Cocoa Touch?
- more_vert
- insert_linkKopier link
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)
- more_vert
- insert_linkKopier link
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)
- more_vert
- insert_linkKopier link
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..(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)
Direkte NFC-adgang er nødvendig (måske ekstern læser til staklerne uden kompatibel NFC-chip).
- more_vert
- insert_linkKopier link
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 :-/
- more_vert
- insert_linkKopier link
Er der nogen der gider poste et link til appen i Google Play?
https://play.google.com/store/apps/details?id=com.bangbits.rejsekortscanner
Og den dur desværre ikke sammen med min mobil. :(
Jeg efterlyste sådan en app i november måned: http://mink.zone237.dk/2013/11/rejsekort-app.html men der er næppe nogen der læser min blog. :)
- more_vert
- insert_linkKopier link
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
- more_vert
- insert_linkKopier link
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?
- more_vert
- insert_linkKopier link
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?»Jeg er selv pendler og ret afhængig af at kunne se, hvad der sker.
- more_vert
- insert_linkKopier link
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.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?
- more_vert
- insert_linkKopier link
Det kommer vel an på, hvor ofte en pendler pendler. Ved 2-zoners-rejser er prisen for periodekort for voksen pr dag 12,-kr. For rejsekort 15,-kr. pr rejse (12,-kr. uden for myldretid).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
- more_vert
- insert_linkKopier link
.. 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..
- more_vert
- insert_linkKopier link
Den ligger der, så han har lagt den ud, så ingen opfordring til at 'lægge'(ikke ligge) den ud er nødvendig.. ligger Appen ud i den internationale Play Store
- more_vert
- insert_linkKopier link
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!
- more_vert
- insert_linkKopier link
Så er der vel ikke langt til en app, der kan manipulere med data på rejsekoret?
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
Bjørn Wahlsten har tidligere udtalt, at informationen på kortet er den gældende. Ellers er det jo også lidt svært for kontrolløren at set, om din rejsehjemmel (Rejsekortet) er gyldig (ind-checket).Det hjælper ikke ret meget: Du er ikke checket ind eller ud, med mindre en scanner har data om dette.
- more_vert
- insert_linkKopier link
Kan huskede jeg læste om en metode for nogle år siden.. Edit:Det hjælper ikke ret meget: Du er ikke checket ind eller ud, med mindre en scanner har data om dette.</p>
<p>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.
http://ing.dk/artikel/studerende-jeg-kan-snyde-rejsekort-uden-hacke-kortets-hjerte-106569Han har hacket de nøgler, som beskytter oplysninger om de seneste rejser og kortets saldo. Dem kan han kopiere ud af kortet inklusive den digitale signaturfil, som krypterer saldoen. Når han har foretaget én rejse, tager han simpelthen kortet hjem til computeren og indlæser en tidligere version af filen med den gamle saldo, som ikke er fratrukket rejsens pris.
- more_vert
- insert_linkKopier link
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.Kan huskede jeg læste om en metode for nogle år siden..
- more_vert
- insert_linkKopier link
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.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.
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.
- more_vert
- insert_linkKopier link
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
Jeg håber da godt nok at det er 'eller lignende'. Udviklingen af rejsekortet begyndte i 2005 og MD5 har været betragtet som 'ikke sikker nok' siden 1995.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.
- more_vert
- insert_linkKopier link
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
Med mindre der er sket nogle ændringer, så er checksummen baseret på en 16 bit truncation af DES-CBC-MAC
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
Sidst jeg så Philip havde han ikke hue på ;-) Spøg til side, Hue ser spændende ud: http://meethue.com/Se fx Phillips Hue hvor der er åbnet op for protokollen til kommunikation med broen
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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?
- more_vert
- insert_linkKopier link
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...
- more_vert
- insert_linkKopier link
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)
- more_vert
- insert_linkKopier link
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.
- more_vert
- insert_linkKopier link
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?
- more_vert
- insert_linkKopier link
Disse app's screen scraper rejsekorts hjemmeside. Det har visse ulemper, bl.a. vil det holde op med at virke så snart Rejsekort A/S piller i deres design, ligesom der typisk går 20-30 min. før du kan se din rejseaktivitet på deres hjemmeside.Hermed er Caspers app ikke den eneste (som han reklamerer med)... eller overser jeg noget?
- more_vert
- insert_linkKopier link