April 6th, 2010

Zoals eerder geconcludeerd, is het niet echt een optie om de ‘brute force’ techniek te gebruiken voor het kraken van mijn probleem zipje. Door het een en ander eens op een rijtje te zetten heb ik wel een nieuw en hopelijk beter idee; bij het begin beginnen. Een groot probleem oplossen, werkt (over het algemeen) het best door het op te delen in zijn kleinste stukjes en die één voor één aan te pakken.

Voor het gemak ga ik uit van de volgende gegevens:

  • Ik heb gebruik gemaakt van een voor mij bekend wachtwoord, altijd makkelijk.
  • In dat wachtwoord heb ik een type fout gemaakt.
  • Het wachtwoord is (maximaal) 16 karakters lang.

Een meevallertje; bij natellen bleek mijn wachtwoord 16 karakters lang. Voor de volledigheid; als ik uit ga van 35 mogelijke karakters op 16 verschillende posities, dan kom ik op 5,070942774902497e+24 of

5.070.942.774.902.497.000.000.000

wachtwoord mogelijkheden. Wat dan weer zo’n 1,607985406e+14 of

160.798.540.600.000

jaar zou gaan duren om te ontcijferen. Scheelt, maar niet genoeg.

Goed, terug naar de basis! Een stap naar de oplossing van dit probleem is de definitie van een ‘type fout’. Als ik daarvoor wat meer naar het wachtwoord kijk, kan ik uitgaan van het volgende:

  • Het wachtwoord bestaat uit klinkers en medeklinkers (4 om 4 of 4 om 5, afhankelijk van welk wachtwoord ik gebruikt heb)
  • Alle karakters kunnen zowel onderkast (kleine letter) als hoofdletter zijn.
  • De klinkers zijn eventueel vervangen door hun cijfer representatie (’4′ voor ‘a’ of ’3′ voor ‘e’, etc.)
  • …of door bijbehorend lees/letterteken (‘#’ voor ’3′/’e’ of ‘$’ voor ’4′/’a', etc.)

In de eerste instantie verwacht ik, dat ik op het verkeerde moment op ‘shift’ heb gedruk of mij heb vergist in het vervangen van een klinker door zijn cijfer representatie en/of bijbehorende lees/letterteken.
Dus als mijn normale wachtwoord ‘Aapj3′ zou zijn, kan dit evt. ook ‘aAPJ#’ zijn geworden. Deze aanname brengt met zich mee dat alle verwachte letters in ieder geval op de juiste plaats staan en dat de combinaties bestaan uit variaties op type fouten per letter; 4 voor een klinker (bijvoorbeeld ‘e’, ‘E’, ’3′ of ‘#’) en 2 voor een medeklinker (bijvoorbeeld ‘m’ of ‘M’).

Andere problemen zijn dat de ‘a’ vrij dicht bij de ‘Caps lock’ ligt en de letter zelf evt. komt te vervallen (een foute die ik regelmatig maak), ook is het mogelijk dat er een letter in de nabijheid is gebruikt, zoals bijvoorbeeld de ‘o’ in plaats van de ‘p’. Ten slotte beschik ik ook nog eens over een toetsenbord waarvan de ‘m’ nog wel eens kuren vertoont. Voor het gemak laat ik deze opties achterwege. Zo hou ik nog iets over voor stap 3.

De hamvraag is nu natuurlijk hoeveel wachtwoord mogelijkheden er met bovenstaande informatie en uitgangspunten overblijven? Wel, de lange wachtwoorden ga ik toch niet meer gebruiken, dus hier zijn ze, het betreft de volledige namen van mijn 2 oudste dochters, hoe voorspelbaar. In hun gangbare vorm zijn de wachtwoorden als volgt:

  • #mm4Tru1tj3M4ri4 (Emma Truitje Maria) Het wachtwoord dat ik hoogstwaarschijnlijk gebruikt heb.
  • M1l4#v4S0f13 (Mila Eva Sofie) kleine kans, maar mogelijk. Ik begin nu natuurlijk overal aan te twijfelen.

Ik gok er op dat het aantal mogelijkheden gelijk is aan het product van het aantal opties per letter. Dit wordt dan:

e m m a t r u i t j e m a r i a
4×2×2×4×2×2×2×4×2×2×4×2×4×2×4×4 = 8.388.608
of
m i l a e v a s o f i e
2×4×2×4×4×2×4×2×4×2×4×4 = 524.288

Valt dat even mee, dat is nog te overzien! Mijn Cracker applicatie kon binnen 1 à 2 uur 373 miljoen wachtwoorden genereren (zie vorig artikel), dus de 8 miljoen variaties moeten geen probleem vormen . En mocht het toch niet één van bovenstaande wachtwoorden zijn, dan heb ik nog een aantal wachtwoorden die ik wel eens gebruik en waar ik dezelfde methode op los kan laten. Overigens laat ik mijn Cracker applicatie t/m 8 letterige wachtwoorden genereren, om die ook eens lost te laten op mijn zipje. Voor de lol. En omdat ik deze wachtwoordenlijst vast nog wel eens kan gebruiken.

Er vanuitgaande dat het genereren en controleren van één wachtwoord 1 seconde duurt. Dan ben ik hier ongeveer 97 dagen mee bezig. Die seconde is vrij ruim, al zijn 97 dagen (mits de applicatie 24 per dag draait) al wel te overzien.
Ik ga maar eens aan de slag met een applicatie voor het genereren van de variaties en dan kom ik in de volgende stap nog eens terug op de snelheid van oplossen. Later!

Tags: , , , , , ,