So, ich hab mein Passwort wieder 
 
das fertige Skript:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
TrueCrypt - brute force
Nützlich wenn man ein zusammengesetztes Password benutzt, man die Einzelteile
noch kennt, aber nicht mehr weiß wie die Reihenfolge ist ;)
Kann auch statt TrueCrypt jedes andere Kommandozeilen Programm benutzten.
WICHTIG:
    Der Pfad und die Parameter zum TrueCrypt Kommandozeilen Programm müßen
    angepasst werden!!!
used the combine method by Fritz Cizmarov alias Dookie
"""
__author__      = "Jens Diemer (http://www.jensdiemer.de)"
__url__         = "http://www.python-forum.de/topic-1812.html"
__license__     = "GNU General Public License (GPL)"
import sys, subprocess, time
class BruteForcer:
    def __init__(self, words, minlen, maxlen, command):
        # Anzahl der Kombinationen ermitteln
        count = self.count(words, minlen, maxlen)
        start_time = time_threshold = int(time.time())
        for pos, bin in enumerate(self.combine2(words, minlen, maxlen)):
            bin = "".join(bin)
            current_time = int(time.time())
            if current_time > time_threshold:
                elapsed = float(current_time-start_time)    # Vergangene Zeit
                estimated = elapsed / pos+1 * count         # Geschäzte Zeit
                if estimated>60:
                    time_info = "%.1f/%.1fmin" % (elapsed/60, estimated/60)
                else:
                    time_info = "%.0f/%.1fsec" % (elapsed, estimated)
                sys.stdout.write("\r")
                sys.stdout.write(
                    "tested %i password from %i - %s          " % (
                        pos+1, count, time_info
                    )
                )
                time_threshold = current_time
            returncode = self.cmd(command % bin)
            if returncode == 0:
                print
                print "Richtige Password gefunden!!!"
                print ">>>%s<<<" % bin
                sys.exit()
    def count(self, iterable, minlen, maxlen):
        """ Liefert die Anzahl der Kombinationen zurück """
        count = 0
        l = len(iterable)
        for n in xrange(minlen, maxlen+1):
            count += l ** n
        return count
    def combine2(self, iterable, minlen, maxlen):
        """
        Erzeugt alle Kombinationen der Elemente in iterable
        mit der Länge von >minlen< bin >maxlen<
        """
        for n in xrange(minlen, maxlen+1):
            for bin in self.combine(iterable, n):
                yield bin
        raise StopIteration
    def combine(self, iterable, n):
        """
        Erzeugt alle Kombinationen der Elemente in iterable mit der Länge n
        """
        iters = [iter(iterable) for i in xrange(n)] # Liste mit Iteratoren
        liste = [it.next() for it in iters]         # Liste mit 1. Kombination
        while True:
            yield tuple(liste) # Wichtig weil liste mutable ist !!!
            for i in xrange(n-1,-1,-1): # Stellen weiterschalten
                try:
                    liste[i] = iters[i].next()
                    break # alles OK, kein Ueberlauf, naechstes Wort bereit
                except StopIteration: # Ueberlauf
                    iters[i] = iter(iterable)  # Iterator zuruecksetzen
                    liste[i] = iters[i].next() # Stelle zuruecksetzen
                    continue # weiter mit naechster Stelle
            else: # alle Stellen hatten einen Ueberlauf
                raise StopIteration # Stop, alle Kombinationen sind durch
    def cmd(self, command):
        """
        Führt den Befehl in der shell aus und liefert den Rückgabecode zurück
        """
        # stderr auch lesen:
        process = subprocess.Popen(
            command, shell=True,
            #~ stdout=subprocess.PIPE, stderr=subprocess.PIPE
        )
        # warten, bis der gestartete Prozess zu Ende ist
        process.wait()
        # die Standardausgabe des Prozesses ausgeben
        #~ print process.stdout.read()
        # die Fehlerausgabe (sofern vorhanden) anzeigen
        #~ print process.stderr.read()
        # den Rückgabewert des Prozesses ausgeben
        # ist 0 wenn das Programm problemlos durchgelaufen ist
        return process.returncode
BruteForcer(
    words = [
        "syllable","part","lot","component","fragment","brick"
    ],
    minlen = 2,
    maxlen = 3,
    command = (
        "E:\\TrueCrypt\\TrueCrypt.exe /auto /beep /quit /silent"
        " /password %s"
        " /keyfile D:\\keyfile.dat"
        " /volume D:\\volumenfile.tc"
    )
)
Vielleicht kann es jemand gebrauchen 

 Zumindest hab ich auf der Suche nach einem Brute Force Tool für TrueCrypt einige Postings in Foren gefunden, die auch sowas suchen 
EDIT: Das Skript ist nun in meinem SVN:
http://pylucid.net:8080/pylucid/browser ... ueCrypt.py
bzw.
http://svn.pylucid.net/pylucid/CodeSnip ... ueCrypt.py