Programm um "Wörter" zu kombinieren.

_ziLLa_

Ensign
Registriert
Sep. 2004
Beiträge
203
Erstmal ich weiß nicht ob das hier überhaupt das richtige Forum dafür is aber ich Versuchs mal,

ich hab nämlich folgendes Problem, und zwar ich habe einige Private Dateien die mir sehr am Herzen liegen mit Winrar verschlüsselt (keine Sorge ich suche kein Brute force Programm) und habe das Passwort so halb vergessen :( .

Ich gehe nämlich bei allen Pw die ich verwende nach dem glichen Prinzip vor ich hab so fünf ausdrücke wie (nur ein Beispiel)

"Baum" "Pferd" "12345" "Test" "Stuhl"

aus denen setzte ich dann immer meine Pw zusammen,

zb für mein email fach "BaumStuhlBaum".

Nun weiß ich nur nicht mehr welche Kombination ich für dieses Winrar Archiv verwendet habe. Ich weiß aber das es Maximal 7 dieser "Begriffe" waren.
Macht so ca 80000 Möglichkeiten is ja eigentlich nen Witz wenn ich sie jetzt einfach alle ausprobieren würde.

Aber nun das Problem ich brauche irgendein Programm das mir eine Liste aller Möglichkeiten erstellt. Und da finde ich einfach nichts hat nicht jemand von euch ne Idee?

Ich wär für jede Hilfe dankbar.
 
Irgendwie wage ich zu bezweifeln, dass es ein derartiges Programm gibt.
Allerdings ist es kein wirklich großer Aufwand, ein solches zu programmieren.
Nur irgendwie wäre es deutlich einfacher, wenn das Programm diese dann auch gleich testen würde... Und dann wirds schwerer :rolleyes:
 
Zuletzt bearbeitet:
Doch, das müsste recht einfach funktionieren.

Außerdem, es sind "nur" 5040 Möglichkeiten bei 7 verschiedenen Begriffen (wenn du insg. nur 7 verschiedene hast und alle 7 verwendet hast): 7! = 7 * 6 * 5 * 4 * 3 * 2 * 1 = 5040

Kannst du programmieren? Wenn ja, dann mach dir erst einmal ein Programm, welches alle Möglichkeiten, Zeile für Zeile, in eine Datei schreibt.

Danach googelst du nach dem Tool "UnRARit" (und ggf. nach einer Anleitung dafür) und verwendest die von deinem Programm erstellte Datei als Passwort-Datei, damit müsstest du das Archiv recht schnell geknackt haben.
 
Es gibt 7^7 = 823.543 Möglichkeiten (sofern maximal 7 Stellen), weil das gleiche Wort mehrmals vorkommen darf. "7!" würde voraussetzen, dass jedes Wort exakt einmal vorkommen muss. Ein Wort darf aber mehrmals vorkommen (siehe Beispiel). Genaugenommen sind es sogar noch mehr Möglichkeiten, da das Passwort ja auch kürzer als 7 Elemente sein darf ;)
 
Zuletzt bearbeitet:
Du hast Recht. Ich hab das im Beispiel nicht bemerkt, dass sich Wörter auch wiederholen dürfen. Und wenn sich die Auswahl auch nicht auf jene Wörter einschränken lässt, die bestimmt im Passwort vorkommen, werden es auch noch einmal um einige mehr.

So, Programm ist fertig, Benutzung auf eigene Gefahr! ;)

Funktioniert wesentlich besser, schneller und speicherschonender, als ich es mir anfangs gedacht hätte. :)

EDIT:
>>> Link zur neuesten Version <<<
 

Anhänge

  • 2008-03-25_063552.png
    2008-03-25_063552.png
    12,3 KB · Aufrufe: 1.276
  • GenerateVariations.7z
    7,5 KB · Aufrufe: 1.074
Zuletzt bearbeitet:
Ich weiß nicht wie ich sagen soll wie dankbar ich bin, deshalb schrieb ichs einfach :D. Aber das Programm funtzt ohne Probleme.
(außer das die höchst grenze der maximalen Wörter einer Kombination gleich der Anzahl der Wörter die mein eingibt is lässt sich aber einfach umgehen wenn man ein Wort einfach dann mehrmals eingibt war in meinem Fall auch nicht von Interesse also nich schlagen *gg*;))

Jedenfalls is das Programm Sau mäßig schnell 800000 Wörter (@Flo89 hatte oben ne 0 vergessen *gg*) in ner Sekunde oder so. Nochmals aller größten dank wenn ich probiert hätte sowas zu Programmieren hätte ich wahrscheinlich doch um einiges länger daran gessen, wenn ichs überhaupt geschafft hätte.

Habs dann einfach bei unirat als Textdokument genommen und nach nur nen paar Minuten oder so hatte ich mein Pw wieder. Nochmals Riesen dank.

Aber was mir auffällt unirate probiert bei jedem Start aufs Internet zu zu greifen weiß jemand warum?

@Kamikatze Nochmal Danke, aber mich würds interessieren das Programm benutzt doch wahrscheinlich eine While - Schleife (oder For?) aber was steht da "im Prinzip" drinnen?
 
_ziLLa_ schrieb:
außer das die höchst grenze der maximalen Wörter einer Kombination gleich der Anzahl der Wörter die mein eingibt is lässt sich aber einfach umgehen wenn man ein Wort einfach dann mehrmals eingibt

Ich denke das hast du das falsch verstanden. Damit lassen sich die Anzahl der ausgewählten Elemente beeinflussen, der Inhalt der Elemente ist dabei egal. Bezieht sich also nicht darauf, wie oft ein bestimmtes Wort darin vorkommt.

Ich hätte natürlich auch doppelte Einträge filtern können, hab es mir sogar überlegt, aber es wäre ja sowas von sinnlos und unnötig. :evillol:

War eine Menge Arbeit, hab aber auf jeden Fall viel dabei gelernt. ;)

_ziLLa_ schrieb:
mich würds interessieren das Programm benutzt doch wahrscheinlich eine While - Schleife (oder For?) aber was steht da "im Prinzip" drinnen?

Vom Codeumfang sehr aufwändig und wahrscheinlich auch nicht so interessant war die Oberfläche und deren Steuerung (z.B. die Regelung der min/max-Schalter), die Verbrauchsschätzung etc. War vor allem auch eine mathematische Herausforderung bzw. mathematisches Training. ;)

Interessanter war der "Kern", den ich mir bis zum Schluss aufgehoben habe, weil ich echt nicht wusste, wie genau das jetzt funktionieren sollte, aber irgendwann hab ich dann gemerkt, dass es egtl. recht einfach ist:

2 verschiedene rekursive Funktionen - eine mit und eine ohne Wiederholung:
Code:
    private void varWithRep(int act, int max, String str) {
        for (int i = 0; i < cnt_total; i++) {
            if (act < max) {
                [U]varWithRep[/U](act + 1, max, str + strvect.get(i));
            } else {
                try {
                    bwr.write(str + strvect.get(i) + "\n");
                } catch (IOException ex) {
                    Logger.getLogger(PermutateWords.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }

    private void varNoRep(int act, int max, String str) {
        for (int i = 0; i < cnt_total; i++) {
            if (used.get(i) == false) {
                if (act < max) {
                    used.setElementAt(true, i);
                    [U]varNoRep[/U](act + 1, max, str + strvect.get(i));
                    used.setElementAt(false, i);
                } else {
                    try {
                        bwr.write(str + strvect.get(i) + "\n");
                    } catch (IOException ex) {
                        Logger.getLogger(PermutateWords.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        }
    }

Parameter:
  • act gibt die aktuelle Stelle in der Kombination an.
  • max ist die Anzahl, aus wie vielen Wörtern sich eine Kombination zusammensetzt.
  • str ist der bisher zusammengesetzte String.

Weitere außerhalb definierte Variablen:
  • cnt_total ist die Anzahl aller möglichen Wörter.
  • strvect ist der String-Vector mit den eingegebenen Zeichenketten.
  • bwr ist ein BufferedWriter zur Dateiausgabe.
  • used ist ein Boolean-Vector mit der selben Anzahl an Elementen wie der String-Vector, der für jeden String auf der Position i speichert, ob der String an einer vorherigen Stelle schon verwendet wurde.
 
Zuletzt bearbeitet:
Hey, das Programm ist wirklich gelungen ;)
Zwei Dinge sind mir aber aufgefallen:
Zum einen Hat das Fenster keinen Eintrag in der Taskleiste, zum anderen stimmen die Anzahl der Möglichkeiten und die Dateigröße, die im Dialogfenster nach klick auf "Generate" ausgegeben werden, nicht mehr bei extrem vielen Möglichkeiten (zum Beispiel bei 26 Buchstaben und 1 bis 26 Wörtern).
 
Zuletzt bearbeitet:
Ja, zum Berechnen der Möglichkeiten musste ich zwischenzeitlich mit der BigInteger-Klasse rechnen, weil für die Berechnung der Fakultät jeder Datentyp sehr schnell viel zu klein wird. Kannte diese vorher übrigens noch gar nicht... ;)

Das Endergebnis wird dann wieder in ein long gespeichert (dachte, dass long hier leicht reichen würde :freak:), hier ist dann auch der Fehler...

Das mit der Taskleiste ist kein Fehler, sondern das Fenster ist nur ein JDialog. Ich mach das bei kleinen Programmen immer so, einfach weil es am einfachsten funktioniert und ich mich mittlerweile daran gewöhnt habe.

Aber danke fürs Feedback. *michandiearbeitmach* :)

EDIT:
So, die Größen- und Möglichkeitenberechnung stimmt nun auch für sehr große Zahlen, viel Spaß beim bestätigen mit "Ja". :D

EDIT 2:
Den Link zur neuesten Version findet ihr hier.
 

Anhänge

  • GenerateVariations.7z
    7,7 KB · Aufrufe: 366
Zuletzt bearbeitet:
Zitat von _ziLLa_
außer das die höchst grenze der maximalen Wörter einer Kombination gleich der Anzahl der Wörter die mein eingibt is lässt sich aber einfach umgehen wenn man ein Wort einfach dann mehrmals eingibt

Ich denke das hast du das falsch verstanden. Damit lassen sich die Anzahl der ausgewählten Elemente beeinflussen, der Inhalt der Elemente ist dabei egal. Bezieht sich also nicht darauf, wie oft ein bestimmtes Wort darin vorkommt.

Ich hätte natürlich auch doppelte Einträge filtern können, hab es mir sogar überlegt, aber es wäre ja sowas von sinnlos und unnötig.

ich weiß jetzt nicht ob wir aneinander vorbei reden aber ich meine "Achtung Beispiel Alarm"

wenn ich "Baum" und "Haus" eingebe und die Einstellungen auf mit Wiederholung, Kombination bestehend aus min1 und max2 stelle(geht ja nicht drüber) bekomme ich die Ergebnisse

Baum
Haus
Baum Baum
Baum Haus
HausBaum
HausHaus

aber es gibt keine Möglichkeit auch Kombinationen aus 3 Wörtern zubekommen da man nicht das max auf 3 stellen kann. Das meinte ich.

Durch den Quelltext bin ich noch nicht durchgestiegen (vlt liegts an der Urzeit *gg*)

Haste eigentlich ne eigene Website? Würde gern noch andere deiner Programme kennen lernen.


@Flo89 habs grade ausprobiert musste aber nach nen paar GB aufhören Festplatte voll und dann als ich die liste öffnen wollte im Text Editor. Die Datei ist zu groß für den Editor. *gg* hab ich auch noch nicht erlebt.
 
Jetzt versteh ich das Problem.

Ja da hast du Recht, das geht (noch) nicht.

Das wären dann Auswahlen einer Teilmultimenge und bisher werden nur Variationen ohne Wiederholung und Variationen mit Wiederholung unterstützt.

Wäre aber dennoch irgendwie reizvoll, das Programm dahingehend mal zu erweitern... wenn mir mal langweilig ist und ich Zeit habe. :D

EDIT:
Webseite hab ich keine, aber weitere Programme waren die hier:

EDIT 2:
Was ich oben geschrieben hab ist natürlich Unfug.
Ist natürlich keine Auswahl einer Teilmultimenge, ist ja nicht einmal eine Auswahl.

Sind weiterhin ganz gewöhnliche Variationen mit und ohne Wiederholung, nur dass die Maximal-Einschränkung nur bei der Variation ohne Wiederholung gelten darf.

Update:
Mit der neuen Version geht's jetzt. ;)

EDIT:
Den Link zur neuesten Version findet ihr hier.
 

Anhänge

  • GenerateVariations.7z
    8 KB · Aufrufe: 353
Zuletzt bearbeitet:
Hallo

habe auch mein passwort vergessen und wollte das programm benutzen doch leider
geht es nicht

ich benutze nur bestimmte wörter und zahlen doch weiß de reihen folge leider nicht mehr

wenn einer mir sagen könnte wie es geht wäre echt super

danke schon mal in vorraus

mfg
 
Habe das Programm gerade ausprobiert und es funktioniert nach wie vor.

Definiere "doch leider geht es nicht" bitte etwas genauer.

Hast du denn Java installiert?
 
hallo ja java ist instaliert

hardware sonyvaio vgn aw11z/b

betreibssystem windows 7

java version aktuell

starte das programm doch läuft garnichts

werde das mal auf einen anderen rechner testen

wenn es nicht gehen sollte melde ich mich nochmal

mfg
Ergänzung ()

hallo Kamikatze mit xp hat es gefunzt hast ein super programm geschrieben

doch leider habe ich mehr als 1200 möglichkeiten für das ganze

nach 400 versuchen habe ich es aufgeben gibt es eine möglichkeit es mit winrar zu verbinden

es sind schon sehr wichtige daten für mich

wenn du einen tip ausser alles einzugeben hast wäre klasse


mfg
 
hey :)

ich wollte fragen ob du den Quellcode schicken kannst oder mir eine version mit zeilenumbruch geben könntest :)



mfg TIE
 
Zuletzt bearbeitet:
Oh, mein Notepad++ zeigt die Zeilenumbrüche an, Windows-Notepad nicht. Aber bittesehr, GPL'd. :)

EDIT:
Den Link zur neuesten Version findet ihr hier.
 

Anhänge

  • permutatewords.zip
    17,8 KB · Aufrufe: 271
Zuletzt bearbeitet:
Hallo,

das Programm ist wirklich super aber ich bräuchte die verschiedenen Ergebnisse der Kombinationen getrennt mit Komma und darauf folgendem Leerzeichen.

Also: Haus Baum Auto

Haus, Baum, Auto, Haus Baum, Haus Auto, Baum Auto, usw...

Außerdem sollte wenn das Programm schon die Kombination: "Baum Auto" gebracht hat NICHT extra noch die Kombination "Auto Baum" kommen.

Gibt es da eine Möglichkeit? Ich bin was Programmierung angeht wirklich völlig unbeholfen und für jede Hilfe dankbar...


mfg
 
Update 30.04.2010:
+ manuell festlegbare Trennzeichen ([CR] = "\r", [LF] = "\n", mit [CR][LF] werden Zeilenumbrüche nun auch im Windows Notepad angezeigt)
+ neben Anordnungen (Variationen) mit/ohne Wiederholungen werden nun auch Auswahlen (Kombinationen) ohne WH unterstützt
+ Clear-Button, um alle Einträge zu entfernen
* Code-Verbesserungen/-Einsparungen
* Autoren-Dialog entfernt
* Programm umbenannt
- Fehler bei der Bereichsüberprüfung der ausgewählten Werte, wenn bei leerer Liste auf ohne Wiederholung umgeschaltet wird, behoben

Update 01.05.2010:
Version 1.0:
+ Auswahlen mit Wiederholung
* Look and Feel angepasst und GUI überarbeitet

EDIT:
Den Link zur neuesten Version findet ihr hier.
 

Anhänge

  • Combinator.zip
    21,7 KB · Aufrufe: 316
  • Combinator Source.zip
    19,5 KB · Aufrufe: 219
  • 2010-04-30_001810.png
    2010-04-30_001810.png
    21,7 KB · Aufrufe: 457
  • Combinator_v1.0.png
    Combinator_v1.0.png
    22,6 KB · Aufrufe: 415
  • Combinator_v1.0.zip
    33,5 KB · Aufrufe: 325
  • Combinator_v1.0_Source.zip
    19,6 KB · Aufrufe: 222
Zuletzt bearbeitet:
Zurück
Oben