Seite 1 von 2

Re: einfaches Brut-Force Programm Memory Error

Verfasst: Donnerstag 15. März 2012, 18:18
von nooby
Ich habe noch Mals eine Frage:)
Wenn ich das Knacken in eine Funktion packe, werden dann die Import Anweisungen ebenfalls in die Funktion geschrieben, oder geschieht dies im Hauptprogramm?

Re: einfaches Brut-Force Programm Memory Error

Verfasst: Donnerstag 15. März 2012, 18:21
von EyDu
nooby hat geschrieben:Ich habe noch Mals eine Frage:)
Wenn ich das Knacken in eine Funktion packe, werden dann die Import Anweisungen ebenfalls in die Funktion geschrieben, oder geschieht dies im Hauptprogramm?
Nein, die import-Anweisungen sollten immer ganz oben im Modul stehen. Es gibt auch Situationen, in denen ein Import in einer Funktion sinnvoll ist, das kommt aber eher selten vor.

Re: einfaches Brut-Force Programm Memory Error

Verfasst: Donnerstag 15. März 2012, 18:41
von nooby
Ich habe es jetzt ein Mal so gut wie möglich programmiert.

Code: Alles auswählen

import itertools
import time

def passwortKnacken(möglicheZeichen, passwort, zeichenAnzahl):
    while True:
        versuche = 0
        passw = itertools.product(möglicheZeichen, repeat=zeichenAnzahl)
        print(zeichenAnzahl)
        for kombination in passw:
            komb = "".join(kombination)
            versuche+=1   
            #print(komb)
            if komb == passwort:
                return komb, versuche
        zeichenAnzahl+=1


möglicheZeichen = input("Bitte gieb alle Zeichen ein, die im Passwort enthalten sind:")
passwort = input("Bitte gieb das Passwort zum testen ein:")
zeichenAnzahl = int(input("Bitte gieb die mindest Anzahl Zeichen ein:"))
startZeit = time.time()
geknackt = passwortKnacken(möglicheZeichen, passwort, zeichenAnzahl)
endZeit = time.time()
print("Das Passwort lautet", geknackt[0], "und wurde in", str(endZeit-startZeit), "Sekunden und", geknackt[1], "Versuchen geknackt.")
Aber das mit dem und dem zeichenAnzahl sieht aus wie Java bin ich nicht drausgekommen.

Re: einfaches Brut-Force Programm Memory Error

Verfasst: Donnerstag 15. März 2012, 18:53
von Hyperion
- Statt der ``while``-Schleife und dem manuellen Counter wurde Dir doch iirc schon ``itertools.count`` empfohlen. Das kannst Du darüber hinaus auch bei der Erhöhung der Zeichenanzahl nutzen.

- Ich würde den ``itertools.product``-Aufurf nicht an einen separaten Namen binden, der eigentlich nie gebraucht wird; stattdessen schreib den Ausdruck doch direkt in den Kopf der ``for``-Schleife.

- PEP8 bei den Namen sehe ich auch noch nicht.

- Ich finde deutsche Namen idR. etwas "sperrig". Englisch ist da oftmals viel kürzer :-)

- Benutzt Du Python3? Ich hoffe ja, wenn nicht, gäbs noch einiges zu meckern :mrgreen: (print, input)

- Du solltest den Rest-Code nicht auf Modulebene stehen lassen, sondern so verpacken:

Code: Alles auswählen

#!/usr/bin/env python

# imports
import ...
...

# Funktionen / Klassen
def foo():
    ...

# ganz unten dann
def main():
    # ab hier alle Aufrufe, die Du noch außerhalb der Funktion
    # stehen hast; also den Code auf Modul-Ebene!

if __name__ == "__main__":
    main()

Re: einfaches Brut-Force Programm Memory Error

Verfasst: Donnerstag 15. März 2012, 18:56
von EyDu
Einige Dinge, die aufgefallen sind:
- Umlaute in Namen sind sehr unüblich
- du setzt "versuche" bei jedem Durchlauf wieder auf 0
- Es heißt "gib" und nicht "gieb"
- "zum Testen"
- "Mindestanzahl"
- Zum Zusammensetzen von Strings solltest du die Suchmaschine deiner Wahl mal nach "String Formatting" befragen.
- "geknackt" ist ein unpassender Name. Schöner wäre zum Beispiel:

Code: Alles auswählen

passwort, versuche = passwortKnacken(möglicheZeichen, passwort, zeichenAnzahl)
Dann ist die Zeile mit der Ausgabe auch gleich übersichtlicher.

Zum "zeichenAnzahl" und Java: Schau dir mal PEP8 an, in Python ist der Style etwas anders.
Zum "ord": Schreibe "password" statt "passw". Die drei Zeichen sind an der falschen Stelle gespart.

Re: einfaches Brut-Force Programm Memory Error

Verfasst: Donnerstag 15. März 2012, 19:08
von BlackJack
@nooby: Die Rückgabe vom Passwort ist irgendwie total überflüssig weil man das der Funktion ja schon übergeben hat. Den Wert kennt man ja schon vor dem Aufruf.

Re: einfaches Brut-Force Programm Memory Error

Verfasst: Donnerstag 15. März 2012, 20:07
von nooby
@EyDu
Zum "ord": Schreibe "password" statt "passw". Die drei Zeichen sind an der falschen Stelle gespart.
:mrgreen:
Ich dachte ich muss die Funktion ord irgendwie anwenden.

ps: Nicht lachen bin erst 14.