5-10 Frienemies

Jeres blogmeister/moster har påskeferie, så det bliver en kort udgave denne gang.
Der blev nævnt en hel del matematik: Marshall Penfield skulle undervise i spektralteori for ikke-hermiteske matricer. Der var brug for hans “Deep current set theory”. Kodeskriften på muren var en Vigenere kode. Spilteori om en duel med tre personer. Der var uden tvivl matematik i algoritmen til at klone mobiltelefoner. Der var masser af data mining.
Identifikation af mobiltelefoner
Når mobilopkald skal sendes og modtages, er der brug for, at telefonen “identificerer sig” på nettet. I de amerikanske system sker det ved, at hver telefon har et ESN-nummer (Electronic Security Number) og en MIN (Mobile Identification Number). I Europa – på GSM-nettet – er der et IMEI nummer (International Mobile Equipment Identification), som står i telefonen bag batteriet. Det bruges, som navnet indikerer, til at identificere telefonen (så man f.eks. kan finde stjålne telefoner) og ikke brugeren. Brugeren har et nummer knyttet til SIM-kortet, et IMSI (International Mobile Subscriber Identification). Disse tal har et checkciffer – et ekstra ciffer-, som dels sikrer, at man ikke kan opfinde nye numre selv – man skal kende checksumreglerne – og dels,at man kan finde fejl, hvis et ciffer er sendt med en fejl (en primitiv kodningsalgoritme – der er meget bedre fejlkorrigerende algoritmer, men ikke mere om det nu).

For IMEI er reglerne:

IMEI-nummeret har 15 cifre (det ene er checkciffer). De valideres ved Luhn algoritmen, som er som følger: Start helt fra højre i tallet – checkcifret er længst til højre. Tag hvert andet ciffer og gang det med 2. Læg cifrene i disse fordoblede tal sammen med de oprindelige cifre. Nu skal resultatet være deleligt med 10 – ende på 0.

Eksempel:

 Tallet er 49927398716 (ikke et IMEI, men det er princippet, det gælder)

Nu fordobles hvert andet: (1×2) = 2, (8×2) = 16, (3×2) = 6, (2×2) = 4, (9×2) = 18

Og vi lægger sammen: 6 + (2) + 7 + (1+6) + 9 + (6) + 7 + (4) + 9 + (1+8) + 4 = 70

Det ender på 0, så tallet er ok.

Man kan ikke bruge algoritmen til at rekonstruere et tal, man har lavet en enkelt fejl i, da man gør det samme ved hvert andet ciffer. Mere avancerede checksum algoritmer findes. Se tidligere på bloggen om fejlkorrigerende koder. Og om CPR-numre.

Det bruger ofte at regne “modulo et helt tal”. Altså at lave division med rest, og gemme resten. Det er rigtig smart. En gammel anvendelse er, at hvis 9 går op i summen af cifrene i et tal, så går 9 op i tallet selv. (Det er en god opgave at finde ud af, hvorfor det virker – og husk, det er i ti-talssystemet).

Man kan faktisk godt klone mobiltelefoner, som de gør i serien. Det er meget nemt at google sig til info om den slags, men det får I ikke opskrifter på her – der skal også bruges noget ekstra kode, så vidt jeg kan se. Så hold øje med mystiske opkald fra din telefon.

 

This entry was posted in Blog. Bookmark the permalink.