Windows 95/98 screen save password decoder.
Coder Xavier - Klaphek (C) 1998

files included : - ss95deco.exe 
                 - ss95deco.txt   (Dit bestand)
                 - ss95deco.cpp   De source code.

- Wat doet ss95deco
ss95deco decodeert het windows 95/98 screen saver wachtwoord. Dit wachtwoord
staat gecodeert opgeslagen in de registry.

- Hoe roep ik het aan ?
ss95deco                      : gebruikt c:\windows\user.dat als input.
ss95deco export.reg           : gebruikt export.reg als input.
ss95deco h:\userXXX\user.dat  : gebruikt h:\userXXX\user.dat als input.


- Waarom nog een windows 95/98 screen saver decoder ?
De bestaande screensaver decoders die ik gevonden had decodeerden niet
alle character tussen de 31 en 127 goed. Verder decodeerden ze maar tot een
maximale passwoord lengte van 14 characters. Een andere decoder had zelfs
meerdere files nodig om de gecodeerde string uit de registry te halen.

Aangezien er een groot aantal mensen zijn die hun inlogwachtwoord hetzelfde
hebben als hun screensaver wachtwoord kan deze tool handig zijn bij het
achterhalen hiervan.


- Hoe werkt het ?
Windows 95/98 slaat het gecodeerde wachtwoord op in de registry:
\HKEY_CURRENT_USER\Control Panel\desktop\SCREENSAVE_DATA
Wachtwoorden die bestaan uit characters >31 en <127 worden gedecodeert,
mocht het programma de character niet herkennen zet het er <?> voor in
de plaats. De maximale password lengte die herkent wordt door dit programma
is 18. Ook de stukjes registry door regedit geexporteerd worden ondersteund,
dit bied dus de mogelijkheid om dit snel op te slaan en dan later de boel
te decoderen..

- Decoderen.
De windows representeerd ieder character door twee characters in de
gecodeerde string. Elk character heeft een vaste waarde op een bepaalde plek
zo zal als het eerste character een 'a' is dit altijd door dezelfde twee
characters in de string gerepresenteerd worden, onafhankelijk van de lengte van
het wachtwoord en de volgende characters. Ik heb geen algoritme kunnen
ontdekken representatie en de plaats van het character. Hierdoor werd ik
genoodzaakt dit op te lossen met tabellen. In dit programma zitten dus
18 tabellen die de charcters tussen 31 en 127 representeren met steeds 2
characters. Dit is dus het grootste gedeelte van de code.


- Gevonden bugs mbt de screensaver in OSR2
1 Wachtwoorden worden allemaal door windows in Uppercase gezet, hierdoor
  neemt het aantal mogelijke coderingen drastisch af.
2 Elk charachter in de wachtwoord string wordt gerepresenteerd door telkens
  2 characters in de gecodeerde string. Met als laatste 2 characters  '00'
  om de gecodeerde string af te sluiten. Dit heeft dus als nadeel dat de lengte
  van het wachtwoord rechtstreeks af te leiden is uit de gecodeerde string.
3 Als je een wachtwoord insteld langer dan 14 characters denkt windows dat je
  geen wachtwoord ingesteld hebt en zal dus het op een toets drukken in de
  screen saver niet om het wachtwoord vragen maar gewoon de screensaver
  afsluiten. (MAJOR BUG)
4 Verder zit er nog een buffer overflow in, als je een wachtwoord instelt
  dat langer is dan 19 character dan gaat windows op zijn gezicht. Je krijgt
  geen blauw scherm, maar gewoon een error melding. Helaas werkt daarna het
  geheel niet meer goed en ben je gedwongen windows opnieuw op te starten.

Ik mag hopen dat deze bugs er in windows 98 uit gehaald zijn.
