maanantai 18. joulukuuta 2017

KELA-kortin viivakoodin hakkerointi

Pitkästä aikaa tunsin lapsellista ja primitiivistä hakkeroinnin iloa, kun sain "hakkeroitua" KELA-kortin viivakoodin :-) Hakkerietiikalle uskollisena jaan koko tarinan ja ohjeet tässä kaikelle kansalle.

Eräänä iltana lukiota käyvä tyttäreni valitteli minulle että hän on hukannut KELA-korttinsa. Sitä tarvitsee koulun ruokalassa todistaakseen oikeutensa maksuttomaan ruokailuun. Aiemmin viivakoodinlukijalle oli kuulemma voinut näyttää opettajan jakamaa paperilappua johon oli tulostettu joku "yleinen" koodi, mutta viime aikoina ruokalan henkilökunta oli alkanut kyselemään opiskelijoilta KELA-korttia. Luokkakaverin kortin lainaamistakin oli harrastettu, mutta siihenkin ruokalan henkilökunta oli alkanut puuttua, eikä se tuntunut oikein rehelliseltä muutenkaan.


Pikkusiskon korttiakaan tytär ei halunnut lainata, koska se tuntui vielä epärehellisemmältä, eikä hän halunnut ottaa vastuuta siitä jos hukkaa vielä jonkun muunkin kortin kuin omansa. No, todennäköisesti tyttären oma kortti on jossakin hyvääkin paremmassa tallessa kotona, mutta ei oikein jaksa alkaa kääntämään koko taloa ylösalaisin yhden KELA-kortin takia.

Mikä siis neuvoksi? Päätin että tulostan tyttären KELA-kortissa olevan viivakoodin Eurooppalaisen sairaanhoitokortin taakse, joka tyttärelläni sattuu olemaan tallessa. Siinä on samat tiedot viivakoodia ja sairausvakuutustietoja lukuun ottamatta. Sairausvakuutustiedot ovat KELA-kortissa sairaaloita ja farmaseutteja varten. Niistä esim. apteekissa tarkistetaan onko potilaalla tietynlainen lääkärin lausunto joka oikeuttaa tiettyihin lääkekorvauksiin.




KELA-kortin taustapuolella on tosiaan viivakoodi. Ensiksi tarvitsi selvittää mitä tietoa siinä on. KELAN sivuilla kerrotaan, että "Sairausvakuutustiedot sisältävän kortin tunnistaa siitä, että kortin kääntöpuolella on henkilötunnuksen sisältävä viivakoodi ja sen alla merkintä KELA tai FPA." Hyvä. Eli KELAn mukaan viivakoodissa ei pitäisi oleman muuta kuin henkilötunnus.

Viivakoodeja voi luoda ilmaiseksi netissä. Viivakoodin luomiseksi tarvitsee tietää koodin tyyppi, eli millä tavoin data on koodattu viivoiksi. Koodeja on kymmeniä eri tyyppejä erilaisiin tarkoituksiin. Osa viivakoodeista voi sisältää vain numeroita, toiset myös tekstiä ja erikoismerkkejä. Mitä pitempi ja monipuolisempi sisältö viivakoodissa on, sitä monimutkaisempi koodaus. Viivakoodeja on yksiulotteisia ja kaksiulotteisia. Tavallisia viivakoodien tyyppejä, joihin törmää arjessa ovat esimerkiksi kauppojen käyttämät EAN sekä kirjastojen käyttämä ISBN. Junalipuissa on omantyyppisensä kaksiulotteinen viivakoodi eli QR-koodi, samoin lentolipussa. Kun laitat Googlen kuvahakuun "barcode types", saat aavistuksen siitä kuinka valtavasti erilaisia viivakoodityyppejä erilaisiin tarkoituksiin on olemassa.

Selvittääkseni mitä tyyppiä KELA-kortin viivakoodi on, sen luin toisen tyttären KELA-kortista puhelimeni sovelluksella nimeltään QR Profi. On muuten melkoisen kätevä appis, olen käyttänyt sitä töissä laitteiden IMEI-koodien lukemiseen. QR Profi kertoi: KELA-kortin viivakoodi on tyyppiä CODE-39.

Seuraavaksi syötin viivakoodigeneraattorille koodin tyypiksi CODE-39, sisällöksi henkilötunnuksen ja painoin Make Barcode. Tarkastin huolella näyttikö ruudulla oleva koodi samalta kuin kortissa - MELKEIN! Ensi katsomalta koodit näyttivät samoilta mutta loppupäässä oli pieni eroavaisuus. Sitten vain hieromaan optioita... eka yritys tärppäsi; poistin option "includecheck" joka lienee jonkinlainen tarkistusmerkki.




Loppu olikin sitten helppoa eli syötin koodin sisällöksi vanhemman tyttären henkilötunnuksen, loin koodin, talletin sen vektorigrafiikaksi (png), skaalasin sen järkevään kokoon upottamalla kuvan tyhjään word-dokumenttiin ja tulostin sen. Hyvällä lasertulostimella sen olisi saanut pienempään kokoon hyvällä laadulla mutta jätin vähän isommaksi kun mustesuihkari ei pysty mahdottomiin.

Leikkasin koodin paperista ja liimasin sen kontaktimuovin avulla sairaanhoitokortin taakse. Valmis! Pyysin tytärtä kertomaan heti toimiiko viritys koulun ruokalassa. Seuraavana päivänä tuli viesti joka sai iskän naaman virneeseen: toimii :-)



Nälkä kasvaa syödessä: seuraavassa postauksessa hakkeroidaankin sitten ajokortin viivakoodi...
EDIT: Ajokortin viivakoodi on samaa CODE-39 -tyyppiä kuin kelakortissakin, ei tästä sen isompaa postausta saa aikaiseksi. Ajokortin viivakoodille on kyllä vaikeampi keksiä mitään hyötykäyttöä. Kela-kortin viivakoodikaan ei tahdo enää kaikissa apteekeissa kelvata, haluaisivat nähdä itse kortin. Tähän on tosin helppo ratkaisu. Riittää että omat henkkarit on mukana. Sekä alaikäisten että täysi-ikäisten omaisten valtuutuksella voi hoitaa toisten puolesta mitä asiaa tahansa. Suomi.fi -portaalissa puolesta-asiointivaltuutuksen tekeminen on helppoa.

Avainsanat: KELA, kela-kortti, viivakoodi, henkilötunnus, sosiaaliturvatunnus, syntymäaika, eurooppalainen sairaanhoitokortti puolesta-asiointi