Sådan aflæser du stregkoden på sygesikringskortet
Gæsteindlæg skrevet af Casper Schneidereit for 1 decade siden | Se alle indlægI dette indlæg vil jeg forklare, hvordan det lykkedes mig at finde frem til 5 personers fulde CPR nummer via internettet og lidt teknisk indsigt i sygesikringskortet.
Problemet opstår, når et autentisk sygesikringskort bliver fotograferet, og billedet efterfølgende bliver trykt i en avis eller udgivet på nettet. Da fotografen ikke er dum, bliver CPR nummeret naturligvis sløret. Men det er desværre ikke nok, da stregkoden også indeholder det fulde CPR nummer.
Prøv at se nedenstående billede jeg har fundet (de røde felter har jeg sat ind):
Som du kan se er "de sidste 4" cifre i CPR nummeret samt noget af adressen sløret. Problemet er, at det stadigvæk er muligt at trække hele CPR nummeret ud via dette billede (hvis jeg ikke havde sat de røde bokse for).
Stregkoden der er i bunden indeholder (som tidligere nævnt) også CPR nummeret. Stregkoden er "skrevet i" Code 128 og kan aflæses sådan her:
Du læser fra venstre mod højre. Der er 4 tykkelser af streger, og du skal læse både hvide og sorte streger.
De første 6 streger er "start" angivelse (statisk)
De næste 6 streger er "dagen".
De næste 6 streger er "måneden".
De næste 6 streger er "året".
De næste 6 streger er første 2 cifre af "de sidste 4".
De næste 6 streger er sidste 2 cifre af "de sidste 4"
De næste 6 streger er en "checksum" (dynamisk)
De sidste 7 streger er "slut" angivelse. (statisk)
Stregkoden slutter og starter altid med en sort streg. Hvis du har forstået det rigtigt, så skulle du gerne aflæse de første 6 streger på dit sygesikringskort som følgende værdi 211232, hvilket er lig med Start Code C (se den fulde tabel her).
Med checksum feltet kan du sikre dig, at CPR nummeret er aflæst korrekt. Du finder information om, hvordan checksummen er beregnet på wikipedia.
Via nogle simple Google søgninger, kan du finde en masse forskellige fotograferede sygesikringskort. Mange er dummy/Anders And kort, men flere er også autentiske. Selvom opløsningen og kvaliteten er svingende, kan du med Photoshop i hånden nemt udlede om en streg er tykkelse 1,2,3 eller 4.
Jeg har lavet et lille værktøj, der kan danne en stregkode udfra et CPR nr og finde værdien af en række aflæste streger.
Overstående værktøj er ikke fuldstændig gennemtestet. Finder du en fejl, så smid en kommentar. Du kan også benytte nedenstående tabel, til at finde værdien af en række streger.
Eksempler på afkodning udfra diverse artikler
Det er lykkedes mig at finde frem til CPR nummer + navn + adresse, udfra billederne i artiklerne herunder. CPR nummer og checksum har passet sammen. Komisk at det ene billede netop benyttes i forbindelse med en artikel om identitetstyveri :-). Endnu en gang har jeg indsat de røde bokse.
Kode (PHP) til at danne stregkode
<?php
define("hoejde_i_px", 100);
define("min_bredde_i_px", 4);
$data = array('start'=>211232, // Vægtet 105
0=>212222,
1=>222122,
2=>222221,
3=>121223,
4=>121322,
5=>131222,
6=>122213,
7=>122312,
8=>132212,
9=>221213,
10=>221312,
11=>231212,
12=>112232,
13=>122132,
14=>122231,
15=>113222,
16=>123122,
17=>123221,
18=>223211,
19=>221132,
20=>221231,
21=>213212,
22=>223112,
23=>312131,
24=>311222,
25=>311222,
26=>321221,
27=>312212,
28=>322112,
29=>322211,
30=>212123,
31=>212321,
32=>232121,
33=>111323,
34=>131123,
35=>131321,
36=>112313,
37=>132113,
38=>132311,
39=>211313,
40=>231113,
41=>231311,
42=>112133,
43=>112331,
44=>132131,
45=>113123,
46=>113321,
47=>133121,
48=>313121,
49=>211331,
50=>231131,
51=>213113,
52=>213311,
53=>213131,
54=>311123,
55=>311321,
56=>331121,
57=>312113,
58=>312311,
59=>332111,
60=>314111,
61=>221411,
62=>431111,
63=>111224,
64=>111422,
65=>121124,
66=>121421,
67=>141122,
68=>141221,
69=>112214,
70=>112412,
71=>122114,
72=>122411,
73=>142112,
74=>142211,
75=>241211,
76=>221114,
77=>413111,
78=>241112,
79=>134111,
80=>111242,
81=>121142,
82=>121241,
83=>114212,
84=>124112,
85=>124211,
86=>411212,
87=>421112,
88=>421211,
89=>212141,
90=>214121,
91=>412121,
92=>111143,
93=>111341,
94=>131141,
95=>114113,
96=>114311,
97=>411113,
98=>411311,
99=>113141,
100=>114131,
101=>311141,
102=>411131,
'stop'=>2331112); // Vægtet 106
function _tegn_barcode($nummer) {
global $data;
$t = (string) $data[$nummer];
$antal_tegn = strlen($t);
$farve = 'sort';
$html.='<!-- '.$t.' -->'."\n";
for($i=0;$i<$antal_tegn;$i++) {
$bredde = min_bredde_i_px*$t{$i};
$html.='<div style="width:'.($bredde).'px; height: '.
hoejde_i_px.'px;" class="barcode '.$farve.'"><!-'.$t.'-></div>'."\n";
$farve == 'sort' ? $farve='hvid' : $farve = 'sort';
$bredde_total += $bredde;
}
$html.='<!-- /// '.$t.' /// -->'."\n";
return $html;
}
function cpr($d,$m,$a,$s1,$s2) {
$checksum = (105 + 1*$d + 2*$m + 3*$a + 4*$s1 + 5*$s2) % 103;
$html.= _tegn_barcode('start');
$html.= _tegn_barcode($d);
$html.= _tegn_barcode($m);
$html.= _tegn_barcode($a);
$html.= _tegn_barcode($s1);
$html.= _tegn_barcode($s2);
$html.= _tegn_barcode($checksum);
$html.= _tegn_barcode('stop');
return $html;
}
?>
Har du lyst til at hjælpe os? Kunne du lide indlægget, så ville vi blive oprigtig glad, hvis du delte dette indlæg med dit netværk.
|
» Se andre indlæg her.
Kommentarer til indlæg
Altså Casper... Hvis bare alle nørder var som dig! Så ville verden sgu være et sjovere sted :-)
Casper, hvordan har den egentlig genereret stregkoden?
og hvorfor har du valgt at lave stregkoden med HTML og CSS ? I stedet for at genere et billede? :)
Fantastisk godt indlæg med en skræmmende pointe.
Tog lige en billedesøgning på "sygesikringsbevis" på Google, og straks kom nogle dårligt maskerede plastikkort frem, hvor stregkoden stadig var læselig.
Det tog, som du ganske rigtigt skriver, ganske få sekunder at finde et validt CPR-nummer.
Skræmmende, ganske enkelt skræmmende. :o)
Man må håbe, at nogle journalister følger med her...
Har aldrig forstået pointen med, at benytte et billed af et rigtig sygesikringskort, dog med sløret informationer. Man kan i dag lave billeder, som ligner et ægte, men så er alle sikret imod misbrug... Men det skal åbenbart være "the real deal"...
Godt indlæg. Fint beskrevet.
Men hvad er frygten for et offentligt kendt cpr nummer baseret på?
Identitesttyveri?
Rosenstand @ Ja, det er utroligt hvad man kan få ud af en fredag eftermiddag :-)!
Asgeir @ Jeg har tilføjet koden der laver stregkoden. Det var bare den nemmeste måde, at lave et tool der kunne demonstrerer pointen :-).
John Nielsen @ Ja. Det er faktisk ret skræmmende. Specielt når der er så meget tillid til, at CPR nr. er en hundredprocent sikker identifikation af en person.
Morten @ Ja, eller finde nogle 999999-9999 kort på Google.
Jesper @ Prøv at se her http://bit.ly/vRZ4hE
Meget interessant. Du går og roder med nogle spændende ting for tiden :)
Man behøver ikke engang anstrenge sig, for at læse stregkoden på et sløret sygesikringskort. En simpel barcode scanner app installeret på en smartphone læser en stregkode på et sygesikringskort helt fint.
Bjarke @ Jeg prøvede lige et der var rimelig sløret (fra en netartikel), her måtte min App. give op. Men manuelt kunne jeg godt udlede CPR nr. Det tog under 10 min, der skulle dog et par aflæsninger til.
Imponerende og skræmmende på én gang :-) Hvordan kommer du dog på sådanne ideer?
Det er en længere historie. Jeg læste en artikel, hvor der var et foto af sygesikringskort, uden sløret stregkode. Så kom jeg til at tænke på, at jeg har oplevet biblioteker kunne scanne stregkoden, og få mit CPR nr. Slutteligt kunne jeg huske en artikel, hvor jeg havde læst om netop stregkoder, og specielt den som benyttes på sygesikringskortet. Udfra det valgte jeg at undersøge det lidt nærmere.
Interessant blog indlæg, jeg tror du har ret i at det er nemt at finde folks cpr numre på denne måde, det er enlig ret skræmmende
tak for et gennemarbejdet indlæg
Mvh Morten
Det er sgu meget godt tænkt. :)
Det vil jeg da lige prøve at lege lidt med..
Prøvede lige at google "sygesikringskort", og fandt nogle som jeg kunne scanne med min "barcode Scanner app" på min HTC, og den kunne udlæse CPR nummeret på de fleste.. skræmmende.
Der er var lidt om misbrug af CPR nummer på JP i går - http://jp.dk/indland/article2662336.ece
Tak for tippet Nils. De er i hvert fald opmærksomme på mit indlæg. Så må vi se om det ender ud i noget. Selv synes jeg det er en oplagt historie, men kritikken / problemet er jo i høj grad medierne selv, og så skriver pennen åbenbart ikke så stærkt :-). Så sent som i forgårs skrev jeg til Berlingske chefredaktør, omkring et billede der afslørede en persons cpr nummer. Jeg fik ingen response på mailen, men det er da blevet fjernet fra artiklen kan jeg se. De har dog ikke fjernet billedet fra nettet, som også er indekseret i Google Billedesøgning.
http://www.b.dk/nationalt/100.000-cpr-numre-maaske-sendt-i-aabne-breve
Så er den gal med politiken igen. De har endda brugt det samme billede som du allerede har nævnt.
http://politiken.dk/tjek/ECE1506868/datalog-advarer-fremmede-kan-nemt-gaette-dit-cpr-nummer/
Det er simpelthen genialt udtænkt. Jeg ville ønske, at landets journalister vidste bare halvt så meget om internettet, som du gør - og orkede at interessere sig for det. Det ville virkeligt klæde aviserne at citere din artikel.
Jeg ringede til Politiken igen i morges, som sagde de ville fjerne billedet. Politiken tror åbenbart ikke det kan lade sig gøre at finde frem til Nils og hans CPR nummer. På 7 min lykkedes det, og der gik ikke mange minutter fra jeg havde ringet til Nils, til at billedet var væk fra nettet.
... de fjernede nemlig ikke billede da jeg kontaktede dem :-). Det skete først da den Nils ringede ind.
Så skete der da noget, da det kom i Version 2. Underligt at de større dagblade ikke finder det interessant..
Ja det har også undret mig. De har relativt tit tema med ID tyveri m.m. Men off the record har jeg fået at vide, at det kunne være "uetisk", da de var bange for det ville blive "misbrugt af kriminelle".
Well, så er der mange ting de burde stoppe med. Kriminelle udnytter alt, per definition. Det skal netop bringes, for at stoppe det.
Og hvad med alle de udsendelser hvor de viser tricks med pengeautomater ? osv osv osv.
Det irriterer dem kun, at de ikke selv fandt på historien. Typisk journalister
Hej Casper
Tak for opkaldet og hjælpen. Jeg har nu, uden de store problemer, fået fjernet billederne fra både hjemmeside og server (knock under wood).
Mvh. Nils
Super indlæg!
Jeg sidder selv og roder lidt med sygesikringsbeviset i anden sammen hæng og det er ikke stregkoden der er interessant for mig. Men dejligt lige at lærer noget mere :)
Og lidt meget skrammende, så lidt folk tænker over hvor og hvordan de flasher deres ID"er :(
Sørme om ikke den er gal igen...
http://ekstrabladet.dk/vrangen/article1723174.ece
De har du sløret stregkoden efter de blev gjort opmærksom på dit blogindlæg :O)
Jeg skulle lige til at skrive det samme. De har været hurtige må man sige.
Det var hurtig reaktion :-).
Det er i øvrigt stadigvæk interessant, at journalister synes det er en god historie når kommunen/private virksomheder laver fejl, der afføder blottede CPR numre. Men når det er aviser/medierne selv laver selvsamme fejl, så er det ikke værd at skrive om.
Din lille stregkodegenerator sparede mig lige for en ekstra tur til døgnposten i supermarkedet.
Udover en tilsendt kode skal man scanne sit sundhedskort, som jeg ikke havde fået med. Googlede "sundhedskort stregkode" på min smartphone, fandt din side, genererede min stregkode og scannede den fra skærmen og vupti, gik lågen til boksen op :-) Takker
Ikke så underligt der ofte opstår ID tyveri når dette er så forholdvis tilgængeligt.
Det er sku sørgeligt de ikke kan opfinde noget der fungerer bedre end det
Interessant artikel - prøvede lige, at lave samme program i VBA til Excel, og det er forbavsende let :-)
Men, jeg tror nu, at "risikoen" for at få spredt sit CPR-nummer er ganske lille - det er ikke CPR-nummeret i sig selv, der er farligt, at få spredt, men alle "følgeoplysningerne", som f.eks. adgangskoder, bankkonti og den slags...
Tænk bare på vores alle sammens folkesanger, Kim larsen, som allerede for snart 40 år siden udgav et album, hvor netop hans CPR-nummer var titlen på albummet.
Et andet eksempel på, at det er vildt overdrevent er, at der faktisk kun er 2 personer, der har fået udskiftet deres CPR-nummer i forbindelse med identitetstyveri - og, i begge tilfælde efter personernes egen anmodning, fordi de sikkert selv følte behov for det, og ikke fordi myndighederne fandt det nødvendigt.
Mit eget CPR-nummer har såment flydt rundt på Internettet siden 2001, i forbindelse med, at en uddannelsesinstitution "offentliggjorde" en afhandling, jeg havde lavet - uden, at jeg, hverken, har oplevet problemer på den bekostning, eller ligger søvnløs over det :-)
Det er ikke så meget selve CPR-nummeret, der er problemet, men folks egen sløseri og mangel på sikkerhed i forbindelse med CPR-nummeret, der er problemet - men, det er jo meget lettere, at give det offentlige skylden.
Men, når det nuværende system udløber i 2057, så kommer der nok noget helt andet - og, mit gæt er noget "biometrisk", som ansigtstræk, øjeiris, fingeraftryk eller måske endda en DNA-ID...
Det er da fuldstændig inkompetent de ikke har mere styr på det i dette herrens år da
God blog ellers!
Mvh
Lone
Det er sku underligt de ikke kan opfinde noget der fungerer bedre end det, men ja igen. der er meget som er besynderligt