Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   TBruteForce - Version 0.5a [Update: 28.04.2008] (https://www.delphipraxis.net/52211-tbruteforce-version-0-5a-%5Bupdate-28-04-2008%5D.html)

jfheins 29. Aug 2005 18:27

Re: TBruteForce - Version 0.1.1 Beta
 
Zitat:

Zitat von Meflin
athlon xp 2400+ mit 2,4 GHz

Falsch ! :mrgreen:

Desweiteren finde ich keine Demo mit einer Superspeed-Option ... :gruebel:

Meflin 29. Aug 2005 18:32

Re: TBruteForce - Version 0.1.1 Beta
 
Zitat:

Zitat von jfheins
Zitat:

Zitat von Meflin
athlon xp 2400+ mit 2,4 GHz

Falsch ! :mrgreen:

Desweiteren finde ich keine Demo mit einer Superspeed-Option ... :gruebel:

nicht falsch, der ist so getaktet ;) sollte ich die falsche demo hochgeladen haben :gruebel:

edit: ich habe :shock: jetzt sollte sie es aber sein...


phXql 29. Aug 2005 19:32

Re: TBruteForce - Version 0.1.1 Beta
 
Liste der Anhänge anzeigen (Anzahl: 1)
oO... das ist ein XP 3000+. wieso is dat bei dir so schnell und bei mir so langsam?

Meflin 29. Aug 2005 20:11

Re: TBruteForce - Version 0.1.1 Beta
 
Zitat:

Zitat von phXql
oO... das ist ein XP 3000+. wieso is dat bei dir so schnell und bei mir so langsam?

vielleicht weil ich beim test meinem prozess echtzei verpasst habe :mrgreen: versuchs mal, kann zwar kurz das bild einfrieren, aber es sollte durchaus gehen... dann dürftest du noch schneller sein ;)


Meflin 30. Aug 2005 16:04

Re: TBruteForce - Version 0.1.2 Beta
 
Neue Version 0.1.2 Beta released
  • Bugfix: das Problem, das das OnLastThreadFinished Event öfter ausgeführt wird sollte behoben sein
  • Bugfix: Kleine Unsauberheit beim Progresscounter behoben
  • Bugfix: OnProgressChangeTolerance war etwas zu tolerant
  • Neu: eine Exception wurde ergänzt

Download im Anhang

Die Demo wurde aktualisiert.
Download im Anhang

vlees91 30. Aug 2005 17:21

Re: TBruteForce - Version 0.1.2 Beta
 
bei mir macht er anscheinend auch doppelte. das sehe ich daran dass ich als zeichenfolge 0123456789 genommen habe
und die anzahl möglichkeiten ist meiner meinung nach 10 hoch 7
(10 mögliche zahlen, 7 stellen), aber ich habe jetzt 11097221 keys also 1097221 zu viel
woran liegt das

PS: mein pc macht 95051.95762 möglichkeiten pro sekunde

Meflin 30. Aug 2005 18:45

Re: TBruteForce - Version 0.1.2 Beta
 
Zitat:

Zitat von vlees91
bei mir macht er anscheinend auch doppelte. das sehe ich daran dass ich als zeichenfolge 0123456789 genommen habe
und die anzahl möglichkeiten ist meiner meinung nach 10 hoch 7
(10 mögliche zahlen, 7 stellen), aber ich habe jetzt 11097221 keys also 1097221 zu viel
woran liegt das

OK, Bug gefunden, es werden schon die richtigen Keys erzeugt, nur der Counter ist Buggy. Eigentlich dachte ich schon, dass der Bug existiert, nur allein er trat bei mir nie auf...
In der nächsten Version wirds gefixt sein, thx an vlees der nachgerechnet hat :zwinker:


MisterNiceGuy 30. Sep 2005 19:47

Re: TBruteForce - Version 0.1.2 Beta
 
Was mal ganz schön wäre, wenn du noch eine Textdatei bereitstellen könntest, die von a-z,von A-Z,0-9 alle Wörter mit einer Länge von 1-10 Buchstaben enthält. Weil mit nem 1 GHz PC ist das schwer zu realisieren ;)

Meflin 30. Sep 2005 19:54

Re: TBruteForce - Version 0.1.2 Beta
 
Zitat:

Zitat von MisterNiceGuy
Was mal ganz schön wäre, wenn du noch eine Textdatei bereitstellen könntest, die von a-z,von A-Z,0-9 alle Wörter mit einer Länge von 1-10 Buchstaben enthält. Weil mit nem 1 GHz PC ist das schwer zu realisieren ;)

Prinzipiell ist das nicht soo schwer, nur weist du wie groß das wird? das dürften ein paar GB werden... und wie soll ich die bereitstellen?


MisterNiceGuy 30. Sep 2005 20:10

Re: TBruteForce - Version 0.1.2 Beta
 
meinste? Gibts ne Methode um zu berechnen, wieviele Strings erstellt werden können?
Vielleicht hast du dir ja auch schonmal die Frage gestellt :)

Edit: Was hastn für ne Uploadgeschwindigkeit? :mrgreen:

Meflin 3. Okt 2005 16:35

Re: TBruteForce - Version 0.1.3 Beta RC 1
 
03.10.2005: Version 0.1.3 Beta RC 1 und aktualisierte Demo released
  • Bugfix: Komponente zählt jetzt richtig
  • Bugfix: Memory Leak entfernt
  • Performance: Callback Funktion OnProgressChange geht jetzt nicht mehr so auf die Performance

Download im Anhang

Neue Demoanwendung:
Download im Anhang

Meflin 5. Okt 2005 15:05

Re: TBruteForce - Version 0.1.3 RC 2
 
peinlich peinlich... noch ein Bug gefunden

05.10.2005: Version 0.1.3 Beta RC 2 und aktualisierte Demo released
  • Minibugfix beim OnProgressChangeEvent gefixt

Download im Anhang

Demoanwendung wie immer im Anhang

Meflin 9. Mai 2006 17:56

Re: TBruteForce - Version 0.1.3 RC 2
 
tata... es ist so weit, ich weiß ihr konntet es alle kaum erwarten, hier ist das heisersehnte neue Release :mrgreen:

09.05.2006: Version 0.3b und aktualisierte Demo released
  • Neu: Wahl zwischen iterativem und rekurivem Algorithmus
  • Neu: TMaxThreads property
  • Neu: OnThreadStart Event
  • Neu: KeyList jetzt direkt in TBruteForce implementiert, keine 2 Komponenten mehr
  • TThreadStatus nicht mehr hardgecodet
  • Und alles, was ich inzwischen vergessen habe :(
es hat sich viel geändert, die neue Komponente ist nun zu alten Versionen nicht mehr kompatibel! Und eben da sich so viel geändert hat hoffe ich auf rege Testbeteiligung, da sich nun auch wieder ganz neue Möglichkeiten für Bugs ergeben haben :roll:

TMaxThreads
legt fest, wie viele Threads die Komponente maximal gleichzeitig verwendet. Wie immer bedeutet 0 hier unbegrenzt

OnThreadStart
wird immer dann ausgeführt, wenn ein Thread gestartet wird

BruteForce.KeyList
hier werden nun die erzeugten Keys abgelegt, die seperate Komponente TKeyList ist direkt in der Klasse TBruteForce eingebunden

Algorithm
Wahl zwischen bfIterative und bfRecursive, also iterativem und rekursivem Algorithmus

TThreadStatus
nicht mehr hardgecodet, es gibt bis jetzt tsActive, tsComputing, tsFinished, tsSuspended

Kann sein dass ich noch ein paar Änderungen vergessen habe, das letzte Release ist lange her ;)


Download der Komponente im ersten Post im Anhang
Die Demoanwendung gibts da ebenfalls im Anhang


bei Zeiten muss ich dann mal eben diesen ersten Post aktualisieren, stimmt auch nicht mehr alles so ganz, und die Übersicht leidet :stupid:


Meflin 13. Jul 2006 19:06

Re: TBruteForce - Version 0.3b final
 
Soderle.

Hiermit wird die Entwicklung an dieser Version der Komponente endgültig eingestellt!

In ausführlichen Tests sind mir keine weiteren Fehler begegnet, die Komponente dürfte also recht stabil laufen ;) Allerdings wird es eine Nachfolgeversion geben, die allerdings auf einer völlig anderen Architektur beruht, die, ihr werdet es euch schon gedacht haben, natürlich viel besser ist als die jetzige :mrgreen:

Wann ich es bei dieser neuen Version zu einem Release bringe kann ich allerdings noch nicht wirklich abschätzen.

Hiermit wird jedenfalls die Version 0.3b als Final erklärt, es wird keine weitere geben!

Den Anfangspost habe ich bei der Gelegenheit auch noch gleich neu gestaltet ;)

greetz


fLaSh11 13. Jul 2006 20:22

Re: TBruteForce - Version 0.3b final
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hätte da noch was an der Demo auszusetzen (das Bild ist wohl selbsterklärend... Weis wurde der eine Teil, da die ListBox beim Klick auf View Keys wohl überfordert wurde^^)

Meflin 14. Jul 2006 14:35

Re: TBruteForce - Version 0.3b final
 
Zitat:

Zitat von fLaSh11
ich hätte da noch was an der Demo auszusetzen (das Bild ist wohl selbsterklärend...

so selbsterklärend ist das nicht... interresant wäre ja wie du den Fehler produziert hast (also ich meine die Fortschrittsangabe). Dass dein RAM die Anzeige der Passwörter nicht packt... naja, da kann ja meine Demo nichts dafür :mrgreen:


mOfl 25. Nov 2007 01:22

Re: TBruteForce - Version 0.3b final
 
Ich oute mich jetzt mal als leidenschaftlicher Threads-von-anno-Klondyke-Ausgraber, aber das beweist ja, dass dieses gute Werk auch heute noch Beachtung findet =)

Ich brauche für eine kleine Anwendung eine multithreadingfähige Bruteforce-Komponente - TBruteForce hört sich da recht gut an. Nur leider scheitere ich an einem schier unbedeutenden Punkt...

Installation
1. Dateien entpacken
2. Die TBruteForce.dpk Datei in Delphi öffnen
3. Das Package compilieren (dazu zuerst den Bibliothekspfad ergänzen)
4. Das Package installieren
5. Datei > Alles schließen

:( Entpacken schaff ich noch souverän, dpk in Delphi öffnen mach ich auch noch, als hätt ich mein Leben lang nichts anderes gemacht, aber wie und wo ergänze ich den Bibliothekspfad? Ich öffne die Datei also, klicke OK bei der Meldung, dass die *.res-Datei neu erzeugt wurde und dann hab ich da das kleine Fensterchen mit "Contains" und "Requires", wo ich auf Compile drücken kann. Wenn ich das einfach so mach, kommt natürlich ein Fehler - ich hab ja den ollen Bibliothekspfad nicht ergänzt, weil ich natürlich nicht weiß, was das ist und wo ich es eintrage :)

Ich tät mich ganz arg freuen, wenn einer kurz Zeit finden würde, mir die Welt der Bibliothekspfade näher zu bringen =)

Grüße Dani

rawsoul 25. Nov 2007 01:50

Re: TBruteForce - Version 0.3b final
 
Das geschieht über Tools -> Optionen -> Bibliotheken. Dort kannst du Directorys angeben, in diesem Falle den Source Ordner.

mOfl 25. Nov 2007 20:30

Re: TBruteForce - Version 0.3b final
 
Hm, tut mir leid, dass ich so unwissend bin, aber was genau muss ich da ändern? Tools -> Umgebungsoptionen -> Bibliothek und dann hab ich da Bibliothekspfad, BPL-Ausgabeverzeichnis, DCP-Ausgabeverzeichnis und Suchpfad. Ich schätze, ich muss bei "Bibliothekspfad" was hinzufügen, oder? Also klick ich auf ... und füge da ein Verzeichnis hinzu, aber welches? Was ist der Source Ordner? Der mit der BruteForce.pas oder der Ordner Programme\Delphi 7\Source? Sowohl bei dem einen, als auch beim anderen kommt beim anschließenden Klick auf "Compile" der [Fehler] BruteForce.pas(141): Ungültige Compileranweisung: 'REGION'. :(

rollstuhlfahrer 30. Nov 2007 14:17

Re: TBruteForce - Version 0.3b final
 
mich würds auch mal interessieren, was ich tun muss, um die Fehler:

[Fehler] BruteForce.pas(141): Ungültige Compileranweisung: 'REGION'
[Fehler] BruteForce.pas(474): Ungültige Compileranweisung: 'ENDREGION'
[Fehler] BruteForce.pas(479): Ungültige Compileranweisung: 'REGION'
[Fehler] BruteForce.pas(601): Ungültige Compileranweisung: 'ENDREGION'

wegzubekommen

rollstuhlfahrer

phreax 30. Nov 2007 14:36

Re: TBruteForce - Version 0.3b final
 
Einfach die enstpechenden
Delphi-Quellcode:
{$REGION 'XXX'}
{$ENDREGION}
rauslöschen, das sind imho bloß codefolding Anweisungen, die von älteren Delphi Versionen nicht unterstützt werden.

Grüße phreax

rollstuhlfahrer 30. Nov 2007 16:03

Re: TBruteForce - Version 0.3b final
 
ich hab da mal ein paar Rechenexempel gemacht und dabei gesehen:

Ein Programm, dass nur aus TBruteForce und ein paar Labels/Edits besteht verbraucht 408 MB Arbeitsspeicher, wenn der BruteForce (Start: 1; Ende: 4) eine Liste mit allen Groß/Klein-Buchstaben und Zahlen machen soll. Errechnet hat das Programm 58 MB allein die Strings in der Keylist. Auf langsamen, hauptspeicherarmen Rechnern sollte das nicht gestartet werden (~7 sec zum erstellen)

rollstuhlfahrer

Meflin 30. Nov 2007 16:45

Re: TBruteForce - Version 0.3b final
 
Zitat:

Zitat von rollstuhlfahrer
Errechnet hat das Programm 58 MB allein die Strings in der Keylist. Auf langsamen, hauptspeicherarmen Rechnern sollte das nicht gestartet werden (~7 sec zum erstellen)

Völlig richtig, Problem ist bekannt ;)

Möglicherweise werde ich, wenn es meine Freiziet einmal wieder zulassen sollte, eine Komponente mit einem anderen Verfahren, dass zur Berechnung kaum RAM benötigt, basteln, aber im Moment gibts da keine Hoffnung.

Trotzdem freue ich mich dass dieses Ding hier immernoch Beachtung findet - So toll ists ja nun eigentlich auch wieder nicht :stupid:


rollstuhlfahrer 30. Nov 2007 19:29

Re: TBruteForce - Version 0.3b final
 
ich hab die Komponente jetzt umgeschrieben, dass sie bei jedem neu erzeugtem Key eine CallBack-Routine aufruft...
Ungetestet, bin aber der Meinung, dass sie noch nicht ganz funktioniert

rollstuhlfahrer

mOfl 4. Dez 2007 19:54

Re: TBruteForce - Version 0.3b final
 
Naja, ist schon bisschen schräg, dass eine Bruteforce-Komponente so viel RAM verfrisst... sollte ja eigentlich die CPU belasten, nicht den RAM :) aber liegt halt daran, dass mit den "Worten" nichts angefangen wird. Wenn man mit jedem Wort eine Überprüfung durchführt, etwa für ein Passwort, und es danach löscht, hält sich der Arbeitsspeicherverbrauch in Grenzen.

Aber so... naja, mal anpassen :)

Meflin 5. Dez 2007 11:44

Re: TBruteForce - Version 0.3b final
 
Zitat:

Zitat von mOfl
aber liegt halt daran, dass mit den "Worten" nichts angefangen wird. Wenn man mit jedem Wort eine Überprüfung durchführt, etwa für ein Passwort, und es danach löscht, hält sich der Arbeitsspeicherverbrauch in Grenzen.

Die Komponente hindert den Programmierer ja nicht daran genau selbiges zu tun, ganz im Gegenteil, die Funktionalität dafür ist ja bereits integriert :stupid:


mOfl 10. Dez 2007 21:53

Re: TBruteForce - Version 0.3b final
 
Tut sie? Hm, irgendwie verstehe ich die Komponente nicht... wo kann ich denn auf das aktuelle Element zugreifen? Wenn mit jeder Kombination ein Vorgang ausgeführt wird, der ungefähr 400ms dauert, dann sollte das ja nicht im Bruteforcealgorithmus geschehen, sondern anhand des aktuellen Elements soll ein neuer Thread erzeugt werden, der diesen Vorgang ausführt und sich danach selbst beendet, und dann sollte das aktuelle Element gelöscht werden, oder? Kann man das überhaupt so realisieren? Hm, ich bin sogar für Delphi zu dumm =(

Insider2004 10. Dez 2007 22:03

Re: TBruteForce - Version 0.3b final
 
Hi Mädels!

Ich hab mir den Thread jetzt nicht duchgelesen. Aber falls es noch nicht erwähnt worden sein sollte:
Der Einsatz von Bruteforce auf einem anderen Rechner als den eigenen ist ein Straftatbestand. In Frage kommen da Computerbetrug und oder Computersabotage. Ob sich eine Vorstrafe im Lebenslauf lohnt muss jeder selbst entscheiden.
:warn:

gsh 11. Dez 2007 12:40

Re: TBruteForce - Version 0.3b final
 
Zitat:

Zitat von Insider2004
Ich hab mir den Thread jetzt nicht duchgelesen. Aber falls es noch nicht erwähnt worden sein sollte:
Der Einsatz von Bruteforce auf einem anderen Rechner als den eigenen ist ein Straftatbestand. In Frage kommen da Computerbetrug und oder Computersabotage. Ob sich eine Vorstrafe im Lebenslauf lohnt muss jeder selbst entscheiden.

Dazu kann ich jetzt nur eins sagen: LOL
Lies bitte den Thread bevor du sowas schreibst ... dann wirst du merken des die komponente hier nichts verbotenes ist.

angos 11. Dez 2007 14:27

Re: TBruteForce - Version 0.3b final
 
Zitat:

Zitat von Insider2004
Hi Mädels!

Ich hab mir den Thread jetzt nicht duchgelesen. Aber falls es noch nicht erwähnt worden sein sollte:
Der Einsatz von Bruteforce auf einem anderen Rechner als den eigenen ist ein Straftatbestand. In Frage kommen da Computerbetrug und oder Computersabotage. Ob sich eine Vorstrafe im Lebenslauf lohnt muss jeder selbst entscheiden.
:warn:

Hi,

Ich kenn mich nicht so gut im deutschen Recht aus, würde aber erstmal denken, dass diese Aussage falsch ist. Ein BrutForce-Programm welches zur Beschaffung von Informationen gedacht ist, welche nicht für dritte bestimmt sind, ist mit sicherheit illegal, ein Bruteforce-Algorithmus an sich nicht. Aber ich lasse mich gerne eines besseren belehren, aber bitte belege das dann auch mit Quellen.

Gruß
Ansgar

Larsi 11. Dez 2007 14:48

Re: TBruteForce - Version 0.3b final
 
ich hab delphi 2005 personal, hab dadpackage auch installiert und so aber beim ausführen will delphi immer irgendeine bruteforce.dcu datei oder so haben weil die in der uses liste steht!

Larsi 12. Dez 2007 13:16

Re: TBruteForce - Version 0.3b final
 
kann mir da keiner helfen; was mach ich falsch???

o0o 13. Dez 2007 12:13

Re: TBruteForce - Version 0.3b final
 
wenn du alles installiert hast gib bei deiner windows suche "bruteforce.dcu" ein und den pfad dieser datei den du dann finden wirst fuegst du der library hinzu:)

das wars;)

o0o

Meflin 13. Dez 2007 14:09

Re: TBruteForce - Version 0.3b final
 
Zitat:

Zitat von mOfl
Tut sie? Hm, irgendwie verstehe ich die Komponente nicht... wo kann ich denn auf das aktuelle Element zugreifen?

Tut sie. Ich kann dir jetzt aus dem Stegreif nicht weiterhelfen (ist doch schon ein Weilchen her dass ich die Komponente geschrieben habe) aber ich werde mir daheim nochmal die Sourcen zu Gemüte führen und mich dann hier nochmal melden ;)
Zitat:

kann mir da keiner helfen; was mach ich falsch???
Du musst das Package kompilieren und das Verzeichnis zu deinem Bibliothekspfad hinzufügen.


Meflin 28. Apr 2008 12:10

Re: TBruteForce - Version 0.5a [Update: 28.04.208]
 
Es ist soweit. Hier kommt die komplett überarbeitete neue Version...

28.04.2008: Version 0.5a "Pandora" released

Diese neue Version hat absolut nichts mehr mit der Version 0.3b gemeinsam - sprich alle Beiträge in diesem thread vor diesem sind hiermit hinfällig :mrgreen: Ich habe die Klasse von Grund auf neu programmiert!

Download: im Anhang [6,39 KB]


Über TBruteForce
Die aktuelle Version verbraucht an sich kaum Arbeitsspeicher (es sei denn der Programmierer entscheidet sich dazu, die erzeugten Kombinationen in irgendeiner Form zwischenzuspeichern). Das bedeutet, dass für die Performance des Vorgangs (abgesehen von der Effektivität des Codes) allein die Prozessorgeschwindigkeit verantwortlich ist.
Bei einem 2GHz Prozessor(kern) liegt die blose Geschwindigkeit bei etwa 50.000.000 Kombinationen pro Sekunde, durch das Zusammensetzen der strings zur Ausgabe verringert sich die Geschwindigkeit auf etwa 2.000.000 Kombinationen pro Sekunde (hier besteht eindeutig Optimierungsbedarf ;) ). Lässt man sich jetzt noch alle Kombinationen sichtbar ausgeben, beispielsweise in einer Konsole, so verringert sich die Geschwindigkeit weiter auf ca. 20.000 Kombinationen pro Sekunde.
So, ich hoffe nun hast Du eine ungefähre Vorstellung in welchen Geschwindigkeitsbereichen man sich mit der Klasse theoretisch und in der Praxis bewegen kann.



Verwendung

Um die Klasse in Betrieb zu nehmen, ist nichts weiter nötig, als die Unit BruteForce.pas in das Projektverzeichnis zu kopieren und in die uses der fraglichen Unit aufzunehmen.
Delphi-Quellcode:
uses
  BruteForce;
Um mit einem einfachen Beispiel zu beginnen: Wir wollen Kombinationen mit 5 Zeichen Länge erzeugen, der Zeichenvorrat soll dabei das Alphabet in Kleinbuchstaben sein. Oder anders ausgedrückt wir wollen alle Kombinationen von aaaaa, aaaab, aaaac, ... bis zzzzx, zzzzy, zzzzz bilden.
Delphi-Quellcode:
var
  BruteForce: TBruteForce;
begin
  // Instanzierung
  BruteForce := TBruteForce.Create;

  // Wir wollen 5 Stellen kombinieren, sg. "Nodes"
  BruteForce.NodeCount := 5;

  // Zeichenvorrat setzen, AlphaLowerCase ist eine Konstante die von der Unit bereitgestellt wird
  // Als ElementList erwartet die Klasse ein array of string. BFConstToDynArray wandelt ein
  // statisches array of string in ein dynamisches array of string um.
  BruteForce.ElementList := BFConstToDynArray(AlphaLowerCase);

  // Soderle. Bereits jetzt enthält BruteForce.Value die erste Kombinationen, in diesem Fall aaaaa.
  // Also müssen wir die gleich ausgeben.
  DoSomething(BruteForce.Value);

  // Jetzt gehts ans eigentliche BruteForcen, wir bilden die Kombinationen
  // BruteForce.NextValue bildet die nächste Kombinationen und gibt das Ergebnis als string zurück
  while not BruteForce.Finished do begin
    DoSomething(BruteForce.NextValue);
  end;

  // Wuppdi - jetzt sind wir schon fertig ;)
Wie viele Kombinationen die Klasse erzeugen wird lässt sich über
Delphi-Quellcode:
BruteForce.ToDo
auslesen.


Jetzt ist es aber so, dass man jedem Node seinen eigenen Zeichenvorrat zuweisen kann. D.h. wir könnten beispielsweise auch Kombinationen der länge 5 erzeugen, bei denen die letzten beiden Zeichen Ziffern sind. Das ginge so:
Delphi-Quellcode:
var
  BruteForce: TBruteForce;
begin
  BruteForce := TBruteForce.Create;
  BruteForce.NodeCount := 5;
  BruteForce.ElementList := BFConstToDynArray(AlphaLowerCase);
  // Jetzt kommts ;)
  BruteForce.Nodes[0].ElementList := BFConstToDynArray(Numeric);
  BruteForce.Nodes[1].ElementList := BFConstToDynArray(Numeric);

  DoSomething(BruteForce.Value);

  while not BruteForce.Finished do begin
    DoSomething(BruteForce.NextValue);
  end;
Dieser Code würde alle Kombinationen von aaa00, aaa01,... bis zzz99 ausgeben. Jetzt wunderst Du dich vielleicht, wieso wir den Zeichenvorrat der Nodes 0 und 1 ändern und nicht den der Nodes 3 und 4 (die Zahlen sollen ja rechts hin). Nunja, je weiter ein Node links steht, desto höherwertiger ist er. Deshalb wird der Node, der in der Ausgabe die "rechteste" Stelle repräsentiert über den Index 0 angesprochen. Puh, ich hoffe das ist einigermasen verständlich :stupid:
Code:
Wort a a a 0 0
Node 4 3 2 1 0

To Do

Bei der Version 0.5a handelt es sich um ein experimentelles Release. Es sind noch kaum Fehlerbehandlungsroutinen eingebaut! Bis jetzt ist es auch so, dass NodeCount unbedingt vor ElementList gesetzt werden muss (ein Henne-Ei-Problem für das ich bis jetzt keine überzeugende Lösung gefunden habe).
Einbauen will ich noch eine Speichern/Laden Funktion, die Möglichkeit, den BruteForce-Vorgang in beliebig viele Pakete aufzuteilen (Multithreading, Parallel Computing), sowie eine Ausgabe der Kombinationen wahlweise als array of string (bzw. TBFElementList). Ich habe auch schon mit dem Gedanken gespielt, beliebige Dinge kombinierbar zu machen (beispielsweise Integer, Objekte, etc). Aber ich bin mir nicht sicher, ob sich der Aufwand lohnen würde.

Ich würde mich freuen, wenn von euch noch Vorschläge und Anregungen kämen, wie man die Komponente noch erweitern könnte
;)

Download der Klasse im ersten Post im Anhang
Eine Demo mit der neuen Klasse gibt es in kürze.

Diamondback2007 28. Apr 2008 16:23

Re: TBruteForce - Version 0.5a [Update: 28.04.2008]
 
ja das klappt ja alles schon ganz gut :)
allerdings wie du schon geasgt hast sind vor allem die teilbarkeit der aufgaben und das laden und speichern sehr wichtig.
das hat das ganze auch für mich attraktiv gemacht :)
die verwendung ist sehr gut und einfach gelungen.
wie kann man denn die konstaten für das alphabet kombinieren? kann man die arrays irgendwie addieren?

also wenn du das kombinieren noch etwas optimierst und den oben genannten kram einbaust hat sich das neuschreiben auf jeden fall gelohnt.

gruß

Meflin 29. Apr 2008 08:05

Re: TBruteForce - Version 0.5a [Update: 28.04.2008]
 
Zitat:

Zitat von Diamondback2007
allerdings wie du schon geasgt hast sind vor allem die teilbarkeit der aufgaben und das laden und speichern sehr wichtig.

Das sollte auf jeden Fall machbar sein. Nur fürchte ich wird das nochmal ein größerer Act :stupid:

Zitat:

die verwendung ist sehr gut und einfach gelungen.
Das freut mich - so soll es sein :)

Zitat:

wie kann man denn die konstaten für das alphabet kombinieren? kann man die arrays irgendwie addieren?
Nicht ala ArrayA + ArrayB. Bis jetzt ist da eine self-made-Funktion nötig, aber ich kann natürlich eine in die Unit integrieren.

Zitat:

also wenn du das kombinieren noch etwas optimierst
Leichter gesagt als getan :(

QuickAndDirty 29. Apr 2008 09:03

Re: TBruteForce - Version 0.5a [Update: 28.04.2008]
 
Das beste in dem Thread ist noch das Kommentar von Insider2004...lol
Nicht das BruteForce ein allgemein übliches verfahren für zig
Standard Probleme der Informatik wäre(Handlungsreisender, Volumen mit unterschiedlichen Packeten Optimal befüllen, etc.)
Und dann Heist der auch noch "Insider"....Ich schmeiß mich weg.

Diamondback2007 29. Apr 2008 13:29

Re: TBruteForce - Version 0.5a [Update: 28.04.2008]
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von Diamondback2007
allerdings wie du schon geasgt hast sind vor allem die teilbarkeit der aufgaben und das laden und speichern sehr wichtig.

Das sollte auf jeden Fall machbar sein. Nur fürchte ich wird das nochmal ein größerer Act :stupid:

na dann hau mal rein ;) ich denke, das wichtigste ist das prinzip wie du speicherst. ich weiß jetzt nicht so genau wie du deine strings zusammensetzt, aber wenn du das einigermaßen geschickt machst, sollte es eigentlich möglich sein das hinzubekommen.
wenn du allerdings bei einem bestimmten string anfangen kannst zu rechen, ist das aufteilen auf mehrere pcs natürlich schon praktisch fertig. :)

Zitat:

Zitat von Meflin
Zitat:

Zitat von Diamondback2007
wie kann man denn die konstaten für das alphabet kombinieren? kann man die arrays irgendwie addieren?

Nicht ala ArrayA + ArrayB. Bis jetzt ist da eine self-made-Funktion nötig, aber ich kann natürlich eine in die Unit integrieren.

ja, ich denke das wäre recht praktisch für die unit.

Zitat:

Zitat von Meflin
Zitat:

Zitat von Diamondback2007
also wenn du das kombinieren noch etwas optimierst

Leichter gesagt als getan :(

im DF habe ich grade gestern etwas darüber gelesen... und zwar das wenn du in etwa
Delphi-Quellcode:
str := str + str2;
hast, dass das sehr langsam ist weil erst wieder str eingelesen wird und dann str komplett neu geschrieben wird. Da wurde irgendwas von
Delphi-Quellcode:
appendstr()
geredet... keine ahnung, kannst du dich ja mal schlau machen.
ich hab außerdem gesehen, dass du das alles immer dem Result hinzufügst. ist das genauso schnell wie bei einer lokalen variable? oder kann man das noch optimieren indem man eine lokale variable nimmt und result erst zum schluss zuweist?

gruß

EDIT:

Also wenn ich
Delphi-Quellcode:
AppendStr()
benutze bringt das bei mir etwa 100.000 bis 300.000 Kombinationen pro sekunde mehr. :)

Meflin 30. Apr 2008 08:38

Re: TBruteForce - Version 0.5a [Update: 28.04.2008]
 
Zitat:

Zitat von Diamondback2007
wenn du allerdings bei einem bestimmten string anfangen kannst zu rechen, ist das aufteilen auf mehrere pcs natürlich schon praktisch fertig.

Kann ich. Das Problem ist eher, dass Rechner A dann auch bei dem string aufhört, bei dem Rechner B weitermacht :mrgreen:

Zitat:

im DF habe ich grade gestern etwas darüber gelesen... und zwar das wenn du in etwa
Delphi-Quellcode:
str := str + str2;
hast, dass das sehr langsam ist weil erst wieder str eingelesen wird und dann str komplett neu geschrieben wird.
Nunja, in zahlreichen Tests hat sich herausgestellt, dass das so ziemlich die schnellste Variante ist :stupid:
siehe hier und hier ;)

Zitat:

Also wenn ich
Delphi-Quellcode:
AppendStr()
benutze bringt das bei mir etwa 100.000 bis 300.000 Kombinationen pro sekunde mehr. :)
Na das ist ja mal interessant. Denn bei mir ist AppendStr in etwa so implementiert (aus dem Gedächtnis):
Delphi-Quellcode:
function AppendStr(const Source: string; Dest: string): string;
begin
  Result := Dest + Source;
end;
:lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz