Hacking, som forklart til en 5-åring

Posted by Vetle Økland on Sun, Apr 2, 2017
In Lett Forklart
Tags hacking, 5-åring

Dataprogrammer er akkurat som en handleliste du leser fra topp til bunnen. Når programmet er på vare nummer 3 på listen, kan det ikke gå videre til nummer 4 før det har funnet nummer 3. Tenk deg en handleliste som går slik:

  • Egg
  • Brød
  • Smør
  • Boller
  • Brus

Da vil programmet først finne egg, så brød, deretter smør, og så videre nedover listen. Hvis det viser seg at butikken er tom boller, så vil ikke programmet kjøpe brus heller, selv om det er på listen, programmet vil gå rundt i butikken for å lete etter boller til det blir kastet ut. Så hva gjør man for å fikse dette? Man forteller programmet at hvis det ikke finner boller, så kan det kjøpe tebrød i stedet, for eksempel. Da vil handlelisten se slik ut:

  • Egg
  • Brød
  • Smør
  • Hvis det er boller i butikken, kjøp det. Hvis det ikke er boller, kjøp tebrød.
  • Brus

Da vil programmet kjøpe tebrød i stedet for boller. På denne måten er programmer veldig enkle, det er rett og slett bare en liste over ting du vil at en datamaskin skal gjøre, og hvis listen er avansert nok og plukker opp på nok feil som med bollene, så får man avanserte systemer som kjører Facebook, Google og alle programmene på datamaskinen din.

Vi kan ta for oss en litt mer avansert handleliste, der vi forteller det aller først at “hvis programmet ikke finner noe i listen, spør noen i butikken”:

  • Kjøp tingene i listen, hvis du ikke finner noe, spør den nærmeste du finner og gå til neste i listen hvis det er tomt i butikken
    • Egg
    • Brød
    • Smør

La oss si at det er egg og smør i butikken, men ikke noe brød. Da vil programmet finne egg, så vil det spør noen i butikken om hvor det kan finne brød, men det er det tomt for, og så vil det kjøpe smør. Dette virker ganske smart, da vil programmet sannsynligvis alltid finne varene så lenge de er i butikken. Men tenk deg da at butikken har brød på lager, og hvis programmet hadde spurt en ansatt, så ville den ansatte sagt at hen kan finne brød på lager for programmet. Vi bare bare sagt til programmet at det skal spør den nærmeste det finner.

Hvis vi vil hacke dette programmet så trenger vi bare å passe på at det ikke er brød på hyllene i butikken, og at vi er nærme nok programmet til en hver tid at når det spør nærmeste (som er oss) om det er mer brød i butikken, så svarer vi “nei”. På denne måten kan vi unngå at programmet får tak i brød, og vi kan gjøre akkurat det samme med hver vare.


Dette er logiske feil som er lett å gjøre når man skriver programmer, og når programmer blir mer og mer kompleks er det umulig å tenke på alle måter et program kan manipuleres på.