Freitag, 11. Januar 2013

Word Passwort per Bruteforce herausfinden

In den letzten Posts habe ich ja schon Grundlegendes zum Einbinden von Word in C# erklärt, eine Methode angegeben um ein Word Passwort automatisiert zu prüfen sowie einen Passwortgenerator vorgestellt.
Hier möchte ich nun diese Dinge kombinieren und ein Programm vorstellen, welches durch Ausprobieren aller Möglichkeiten Word Passwörter herausfinden kann. Die Passwörter werden mit dem Passwortgenerator erstellt und das Programm versucht dann, mit diesen das Word Dokument zu öffnen.
Der Code sollte eigentlich selbsterklärend sein in Verbindung mit den vorigen Posts. Zugegeben, das Programm ist ziemlich langsam, wer Tricks kennt um die Performance zu verbessern darf das gerne hier tun!
            Object oMissing = System.Reflection.Missing.Value;

            bool Found = false;

            PasswordGenerator Generator = new PasswordGenerator(true, true, true, 1, 2);
            Thread.Sleep(1000);
            string pw = Generator.Dequeue();

            Word.Application WordApp = new Word.Application();
            Word.Document ExistingDocument;

            while (pw != "" && !Found)
            {
                try
                {
                    ExistingDocument = WordApp.Documents.Open(Dateiname, oMissing, false, oMissing, pw);
                    Found = true;
                    WordApp.Quit();
                    MessageBox.Show("Das Passwort lautet: " + pw);
                }
                catch (System.Runtime.InteropServices.COMException ex)
                {
                }
                pw = Generator.Dequeue();
            }

            if (!Found)
                MessageBox.Show("Kein passendes Passwort gefunden.");
        }