Große String-Liste out of Memory - Hilfe?
Guten Tag
Folgendes Problem: Der Code funktioniert einwandfrei, solange die Stringliste nicht zu groß wird. Das wird sie allerdings unweigerlich, daher meine Frage - wie kann ich das umgehen: Kann sein, dass hier ein oder 2 'end' komisch sitzen, da ich eine Menge Kommentarcode grade der Übersichtlichkeit wegen gelöscht habe. Das Programm soll eine Website auf nicht-verlinkte Unter-Seiten absuchen. Mein Problem ist leider, dass bei 52 Zeichen und über 5 Stellen (ich glaube) der Cluster zu groß wird und ich selbst mit 8GB RAM out of Memory bekomme. Jetzt will ich die ganzen Möglichkeiten aber eigentlich garnicht speichern, sondern es würde mir ja reichen, sie direkt mit dem Spider abzufragen - wenn ich allerdings npw nicht in Cluster oder Result abspeichere, funktioniert der Code nichtmehr... Wenn mir da jemand helfen könnte, der da mehr versteht als ich, wäre das sehr nett:? Ich sitze schon seit Stunden dran und habs mit Freeandnil, Destroy/Create, Savetofile und Writeln versucht, um das zu umgehen, aber ich bekomms nicht hin:( Wie kann ich diese ganzen Kombinationen erstellen lassen und direkt abgreifen, ohne dass eine riesige Stringlist entsteht? Vielen Dank schonmal:thumb:
Delphi-Quellcode:
function TForm1.bruteforce (astring: string;substr: string; startlen: integer; endlen: integer):LongInt;
var spider: TSpider; i,n,x,y, z : integer; npw, Zeile: string; Txtdatei: Textfile; label step1; begin Hlplst.Clear; Cluster.Clear; Results.Clear; y:= 0; spider := TSpider.Create(Self); urls := 'www.Testwebsite.com/' ; For x:= 1 to length(substr) do begin Hlplst.Add(substr[x]); end; step1: for i := 0 to hlplst.Count -1 do begin for n := 1 to length(astring) do begin npw := hlplst.Strings[i]+astring[n]; Cluster.Add(npw); if length(npw) >= startlen then begin Results.Add(npw); // Hier beginnt nur der Spider urlk := urls + npw ; spider.Initialize(urlk); spider.CrawlNext(); Edit1.Text := Spider.LastUrl; Edit2.Text := Spider.LastHtmlTitle; If Edit2.Text = 'Vorhanden' then begin Memo4.Lines.Add (Edit1.Text); end; // Hier endet er end; end; HlpLst.Clear ; hlplst.AddStrings(Cluster); Cluster.Clear ; if length(npw) + 1 <= endlen then goto step1; hlplst.Clear; end; result := 0; Label1.Visible := False; end; end; |
AW: Große String-Liste out of Memory - Hilfe?
Also 8MB sollten nicht die Grenze sein. In Grunde sollte das locker bis paar GB gehen. Es kann sein, dass du einfach nicht mehr ausreichen zusammenhängenden Speicher hast.
TStrings besitzt die Eigenschaft Capacity. Normalerweise muss man sich um die nicht kümmern, die wird bei Bedarf automatisch erhöht. Man kann den Wert aber auch manuell setzten wenn man in etwa weiß wie viele Einträge kommen. Bei dir wären das die Menge
Delphi-Quellcode:
als Wert. Also vorher die Zahl ermitteln, noch 10% als Reserve dazugeben und gleich zu Beginn Capacity mit dem Wert setzten. Entweder kommt dann die Fehlermeldung an der Stelle oder es gibt keine Überraschungen mehr.
length(substr)
|
AW: Große String-Liste out of Memory - Hilfe?
Ich empfehle dringend, das Label rauszuschmeißen und stattdessen eine rekursiv arbeitende Funktion aufzubauen! Goto ist böse. Davon abgesehen wird
Delphi-Quellcode:
nirgendwo ersichtlich freigegeben. Das Problem ist IMO keineswegs eine zu große Stringliste sondern ein falsches Konzept. Mir ist durchaus bewusst, dass Menschen Schwierigkeiten haben, rekursiv zu denken (ebenso wie exponentiell), aber der Aufwand lohnt sich.
spider
Ergänzung: Alternativ, wenn die Rekursion unnötig oder ungeeignet ist, bietet sich vielleicht eine for- oder while-Schleife an, deren Durchlauf man mit
Delphi-Quellcode:
überspringen kann.
Continue
MfG Dalai |
AW: Große String-Liste out of Memory - Hilfe?
Diese Schleife
Delphi-Quellcode:
kann man auch so lösen
step1:
//.. if length(npw) + 1 <= endlen then goto step1;
Delphi-Quellcode:
Die repeat Schleife wird so lange wiederholt, bis (length(npw) + 1) > endlen ist.
repeat
//.. until (length(npw) + 1) > endlen; Nebeinbei. U. U. kann das missverstanden werden:
Delphi-Quellcode:
. Hier prüft Delphi
if length(npw) + 1 <= endlen
Delphi-Quellcode:
evtl. nur gegen die
endlen
Delphi-Quellcode:
.
1
|
AW: Große String-Liste out of Memory - Hilfe?
Danke erstmal für die Antworten
Zitat:
Danke für den Goto-Ersatz - ich hatte noch mit Goto programmieren gelernt und bin darin verhaftet^^ Aber mein Problem bleibt. Ich muss erneut darauf hinweisen, dass es die Stringlist (Bei unter 5 Stellen ~600MB RAM Bedarf funktioniert alles einwandfrei) ist. Ich errechne mit der Funktion unten bei 5 Stellen und 52 möglichen Zeichen 380204032 Strings - allein die Savetofile Textdatei zu öffnen braucht mindestens 10 Sekunden mit Notepad. Mehr Stellen erhöhen die Potenz. Ich bräuchte eine Möglichkeit, die Kombinationen, die in Results gespeichert werden bzw in Cluster direkt abzugreifen, um das Entstehen einer so großen Stringlist zu verhindern. Danke erneut:) €dit: Das Konzept funktioniert, ich habe den Spider mit Memofeldern getestet und die Results/Cluster-Stringlisten mit Savetofile ausgelesen. Es liegt an der riesigen Menge, die er berechnet. Wenn ich die StringLists per Freeandnil freigebe, ist mein RAM wieder völlig in Ordnung. |
AW: Große String-Liste out of Memory - Hilfe?
Es wäre auch hilfreich deine Delphi Version zu kennen (kannst du in deinem Profil eintragen) und ob du auch eine 64bit-Anwendung erzeugst, sonst kannst du auf deine 8GB Speicher eh nicht zählen ;)
BTW: Das macht die Verarbeitung künstlich langsamer
Delphi-Quellcode:
und die Controls sollten auch nicht als Zwischenspeicher misbraucht werden ;)
Edit1.Text := Spider.LastUrl;
Edit2.Text := Spider.LastHtmlTitle; |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
|
AW: Große String-Liste out of Memory - Hilfe?
Wow ihr seid ja schnell
Ich benutze Delphi 6. Mein System ist 32bit. Allein schon, dass die Cluster-Stringlist bei 5 Stellen knapp 600MB verbraucht, und ich bis 10 Zeichen gehen muss (exponentiell steigend) macht die 8GB irrelevant... Gefolgt bin ich diesem Tutorial hier, bei dem die Funktion besser erklärt ist, als ich es könnte: http://www.delphipraxis.net/attachme...delphi_131.pdf Kurz gesagt: _____a___b___c___d aa| aaa aab aac aad ab| aba abb abc abd ac| aca acb acc acd ad| ada adb adc add Linke Spalte ist die Hlplst, die Kombinationen ist die Cluster-Stringlist Aber ehrlichgesagt hab ich nicht verstanden, wo ich wann meine Cluster-Werte abgreifen kann und die Cluster-Liste wieder reseten kann, ohne dass sie wieder von vorne anfängt... Die Edit-Felder mach ich raus und frage es direkt ab - guter Hinweis. Danke nochmals^^ |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Und wenn du den Speicher stark fragmentierst, dann ist sogar schon weit vor der 32bit-Grenze von 2GB Schluss. |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
|
AW: Große String-Liste out of Memory - Hilfe?
Irgendwie erstellst du ja diese Liste, also du erstellst jeden einzelnen Eintrag und fügst diesen in die Liste.
Nun füg den Wert nicht in die Liste, sondern übergib den Wert an die Routine, die etwas damit macht |
AW: Große String-Liste out of Memory - Hilfe?
Ja das will ich ja die ganze Zeit:-D Aber wie schon 2x gesagt - ich weiß nicht, wo ich das tun muss. Für mich mit meinem einfachen Delphi-Gemüt liest sich der Code nicht so einfach:?
Delphi-Quellcode:
€dit - Und mir ist schon bewusst, dass das für euch wahrscheinlich eine blöde Frage ist.... Sorry^^
step1:
for i := 0 to hlplst.Count -1 do begin for n := 1 to length(astring) do begin npw := hlplst.Strings[i]+astring[n]; Cluster.Add(npw); //wenn ich das hier entferne, gehts nichtmehr //dann kommt nur aa bis a0, aber nicht aaa-aa0 etc //sonst hätte ich es hier abgegriffen //desweiteren loopt es dann die aa-a0 immer wieder if length(npw) >= startlen then begin Results.Add(npw); end; end; HlpLst.Clear ; hlplst.AddStrings(Cluster); Cluster.Clear ; if length(npw) + 1 <= endlen then goto step1; hlplst.Clear; end; result := 0; Label1.Visible := False; |
AW: Große String-Liste out of Memory - Hilfe?
Wenn ich das jetzt richtig verstanden habe, nimmt man die Buchstaben aus substr und fügt jeweils alle Kombinationen der Buchstaben aus astring an. Die resultierenden Kombinationen werden, so sie eine Länge von startlen bis endlen haben in die Liste result geschrieben und dem Spider übergeben.
Frage: Was passiert mit der Liste results? Die wird in deinem Code nirgendwo sonst verwendet. |
AW: Große String-Liste out of Memory - Hilfe?
Wenn ich mir das so betrachte, dann ist
Delphi-Quellcode:
die Liste, die ständig wächst.
Results
Sollten diese Werte irgendeine Relevanz haben, dann kann man diese auch direkt in eine Datei schreiben und damit den Speicher entlasten. Kommentiere zunächst mal das
Delphi-Quellcode:
aus und schau dir den Speicherverbrauch an.
Results.Add(...);
Ich weiß aber nicht, ob ich zum Thema BruteForce und Webseiten hier wirklich weiterhelfen möchte ... |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Abgesehen davon wurde dir der passende Lösungsansatz bereits in Post 3 aufgezeigt. |
AW: Große String-Liste out of Memory - Hilfe?
Okay, dann muss ich eine Pause einbauen - eine DDOS Attacke möchte ich nicht verursachen, sonst hätte ich mir die Mühe nicht gemacht und einfach LOIC runtergeladen...
Die nichtexistierenden Seiten haben keinen HTML-Titel - also es wird nichts eingetragen... Ich denke, gemeint mit der Lösung ist die For-While Schleife mit Continue? Es wäre super-nett wenn mir das jemand als Code-Beispiel aufschreiben könnte, wo mir das mit der Cluster-Listengröße weiterhilft? Wenn ich nicht mit meinem minderen Wissen schon stundenlang rumgetestet hätte, würde ich euch hier auch nicht darum bitten, mir am besten ein Lösungsbeispiel zu geben...:oops: |
AW: Große String-Liste out of Memory - Hilfe?
Ich habe mir die ganzen Antworten jetzt nicht richtig durchgelesen und so ganz verstehe ich nicht was das Ergebnis sein soll, aber es gibt den alten Spruch: kommt der Prophet nicht zum Berg, muss der Berg zum Propheten kommen (oder so in der Art). Out of Memory bedeutet nicht immer, dass zuwenig RAM allgemein da ist, sondern auch, dass es zu wenig an einem Stück da ist. Wenn also der RAM Speicher nicht ausreicht, wie wäre es wenn du die Liste direkt auf der Festplatte erstellst?
|
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Eigentlich zielte ich eher auf die Rekursion hin. Also in etwa so:
Delphi-Quellcode:
Bei solchen Rekursionen muss man zwar auf seinen Stack aufpassen, aber da der Parameter als const übergeben wird, der lokale string auf dem Heap angelegt wird und die Rekusionstiefe maximal
function TForm1.bruteforce(astring: string;substr: string; startlen: integer; endlen: integer):LongInt;
procedure CheckURL(const url: string); begin spider.Initialize(urlk); spider.CrawlNext(); Edit1.Text := Spider.LastUrl; Edit2.Text := Spider.LastHtmlTitle; If Edit2.Text = 'Vorhanden' then begin Memo4.Lines.Add (Edit1.Text); end; end; Procedure TesteString(const Basis: string); var npw: string; I: Integer; begin for I := 1 to Length(astring) do begin npw := Basis + astring[I]; if startlen <= Length(npw) then begin CheckURL(urls + npw); end; { Abbruchbedingung } if Length(npw) < endlen then begin { hier probieren wir dann ein Zeichen mehr } TesteString(npw); end; end; end; var I: Integer; begin For I := 1 to length(substr) do begin TesteString(substr[I]); end; end;
Delphi-Quellcode:
ist sollte das kein Problem werden. Diese Lösung verbraucht fast gar keinen Speicher.
endlen
|
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Erstmal vielen vielen Dank für die Mühe, mir eine konkrete Lösung hinzuschreiben :thumb: Also nachdem ich es jetzt geschafft habe, diese Prozeduren richtig zu deklarieren und TForm1 davorzumachen, musste ich es etwas drehen, weil er sonst einen Fehler gebracht hat (; erwartet aber . gefunden bei TForm1"."CheckURL): Allerdings ist noch irgendein Fehler drin?
Delphi-Quellcode:
Angesteuert hab ich es per
function TForm1.bruteforce(astring: string;substr: string; startlen: integer; endlen: integer):LongInt;
{das hier hab ich nach oben} var I: Integer; begin For I := 1 to length(substr) do begin TesteString(substr[I]); end; end; procedure TForm1.CheckURL(const url: string); begin //spider.Initialize(urlk); // spider.CrawlNext(); showmessage ('CheckURL'); Edit1.Text := Spider.LastUrl; Edit2.Text := Spider.LastHtmlTitle; If Edit2.Text = 'Vorhanden' then begin Memo4.Lines.Add (Edit1.Text); end; end; procedure TForm1.TesteString(const Basis: string); var npw: string; I: Integer; begin // Showmessage ('works'); //Message kommt for I := 1 to Length(astring) do begin npw := Basis + astring[I]; // showmessage (npw); //Message kommt nicht if startlen <= Length(npw) then begin CheckURL(urls + npw); end; { Abbruchbedingung } if Length(npw) < endlen then begin { hier probieren wir dann ein Zeichen mehr } // showmessage (npw + 'Nr.2'); //Message kommt nicht TesteString(npw); end; end; end;
Delphi-Quellcode:
- Aber bis auf die erste Nachricht kommt nichts weiter? :?
bruteforce('abcd','abcd',2,2);
|
AW: Große String-Liste out of Memory - Hilfe?
Wenn du mal genau hinsiehst, wirst du merken, daß die Prozeduren CheckURL und TesteString lokal zu der Methode bruteforce deklariert sind und nicht als Methoden von TForm1. Bei CheckURL ist das ziemlich egal, aber bei Testestring werden die an bruteforce übergebenen Parameter (astring, startlen und endlen) verwendet. In deiner Version kann es die aber nicht sehen. Die Tatsache, daß es anscheinend trotzdem compiliert, läßt vermuten, daß es noch andere Variablen dieses Namens gibt. Ob die aber immer den richtigen Inhalt haben ist eher fraglich.
|
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Solche Seiten sind ja nicht zufällig "versteckt", sondern aus einem ganz bestimmten Grund: Der Urheber möchte diese Seiten nicht veröffentlichen. Das ist sein gutes Recht, das du nicht mit deinen illegalen Methoden umgehen darfst. Mit anderen Worten: Ich möchte nicht, daß du oder sonst jemand via BruteForce die versteckten Seiten auf meinem Web-Server ausfindig macht, denn die wurden ausschließlich für ganz bestimmte Kunden abgelegt, denen ich den Link dazu freiwillig gebe. Weder dir noch sonst jemandem ist es gestattet, sich diese Seiten mittels BruteForce-Techniken oder anderen illegalen Mitteln zugänglich zu machen. Konkret: Dich und alle anderen geht der Inhalt dieser nicht veröffentlichten Seiten absolut nichts an! |
AW: Große String-Liste out of Memory - Hilfe?
Und wer bezahlt die Serverauslastung, inkl. des anfallenden Traffics, durch diesem Angriff?
|
AW: Große String-Liste out of Memory - Hilfe?
Um Seiten zu Hacken gibt es bessere Methoden.
Manchmal ist es sogar leichter als man denkt. Manche Seiten lassen dich ohne Passwort rein, du musst nur sagen: ich bin Google. Brute-Force ist ja nett, aber wer es richtig macht, der baut in seine Passwörter Sonderzeichen ein. Schon ist der Alpha-Spaß umsonst. Fortgeschrittene fangen nicht mit a und b an, sondern nutzen Wörter. Denn entweder nutzt man Wörter, Wörter mit Sonderzeichen oder macht es gleich richtig mit Kauderwelsch mit Sonderzeichen. |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Ich bin ja nicht sehr bewandert mit DDos, aber Google hat mir soeben gesagt, dass entsprechende Scripte um die 5000 Anfragen pro Sekunde generieren... Zitat:
Zitat:
Ich kann ja auch nicht irgendwelche Copyright-geschützten Werke auf solch eine Seite hochladen und sagen, dass das keine Verbreitung ist da die Seite ja nicht verlinkt war und ich den Link niemandem gegeben habe. Zitat:
So ist das allerdings viel Praktischer :-D Danke für deine Mühe - auch mit den Schleifen komme ich nun besser zurecht. Es geht ja nicht immer nur um das aktuelle Programm - was man kann, kann man. Erneut muss ich mich nochmal bedanken :!: Der Spider selbst hat nun auch Speicher gefressen, was sich allerdings mit spider.ClearspideredURLs lösen lies. |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
|
AW: Große String-Liste out of Memory - Hilfe?
Gemach.
Eine HTTP-Anfrage an einen Server zu senden, ist erstmal nicht illegal und auch noch keine Grundlage für einen kriminelle Karriere. Du (@Pogoner) musst Dir aber darüber im Klaren sein, dass Du versuchst, Zugriff auf Seiten zu erlangen, zu denen Du - aus welchem Grund auch immer - keine Adresse genannt bekamst. Allein die Tatsache, dass die Inhalte offenbar nicht weiter geschützt sind, befug Dich nicht, Dich da frei zu bedienen: Wenn ich meine Wohnungstür offen lasse, dann kann man mir zurecht vieles vorwerfen, aber Dich berechtigt es noch lange nicht, in meiner Sockenschublade zu wühlen. Solltest Du dabei Deine Software zu aggressiv vorgehen lassen und den Betrieb des Webservers stören, kann daraus tatsächlich eine unangenehme Situation für Dich erwachsen, weil man Dir dann zurecht und nachweisbar vorwerfen könnte, den Geschäftsbetrieb zu stören. Gleiches gilt, wenn Deine Software einen nennenswerte Menge an Traffic - und damit etwaige Kosten für den Betreiber - verursachen sollte. Sei Dir darüber im Klaren, dass Du auf dünnem Eis wandelst. Allerdings: Wenn man sich die Logs von populären Web-Servern mal anschaut, wird man als Admin schnell feststellen, dass hunderte, teils tausende unkontrollierte Anfragen an der Tagesordnung sind. Hier jetzt mit den Worten"kriminell" und Klage" um sich zu werfen, kann man machen, wenn einem langweilig ist - an der Realität geht es jedoch vorbei. Wenn man Inhalte für schützenswert erachtet, soll man sie mit den gängigen Mitteln schützen und nicht nur halbherzig - ist ja wie der Schlüssel unter der Fußmatte. Du hast verschiedene Lösungsansätze erhalten und das Stichwort "Datenbank" will ich noch in den Raum werfen. Wenn Deine Datenmenge zu groß wird, um sie gleichzeitig im Speicher zu halten, dann lagere sie aus auf einen Datenträger. |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Zitat:
Zitat:
|
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Für die meisten diese Attacken wird man ein müdes Lächeln vom (in diesen Dingen erfahrenen) Polizisten bekommen wenn man sowas aufnehmen will. Er weiß das solche Angriffe aus dem Ausland bzw. über Zombierechner erfolgen. Die Erfolgschancen wären nahe 0! |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Zitat:
Zitat:
Auch fange ich nicht wie in § 202b private Gespräche ab, will mir keinen Vermögensvorteil wie nach § 263a verschaffen. Und ich ich nichts runterladen. Auch das einwählen in ungesicherte WLAN-Netze ist im Übrigen legal http://www.rechtslupe.de/strafrecht/...-netzen-323014 Es mag ja sein, dass dir das garnicht passt, weil du das gerne so machst, aber solange ich deine Website nach solchen Seiten abgrasen würde ohne dass ich mit den 12 Anfragen pro Sekunde jetzt wie es im Gesetz verlangt ist Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Wäre die Liste an sich allerdings wichtig gewesen, hätte ich die Datenbank wohl nehmen müssen... |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Dann tut es einfach nicht mehr. :) gruss |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Wenn noch jemand etwas zum Thema beitragen möchte: Meine Frage ist immernoch offen, ob die 12 Aufrufe einer "Not Found" - Seite pro Sekunde eine wesentliche Belastung für einen Webserver darstellen (Die Seite existiert ja nicht). Sollte die Frage bejaht werden, so werde ich die Zahl verringern. Es geht hier - ums zum 10. Mal zu sagen - nicht darum, den Server anzugreifen. Meine zweite Frage ist programmtechnischer Natur: Wenn ich 4 Felder derart berechnen möchte:
Delphi-Quellcode:
Dann funktioniert das...so nicht?
Zufallsgenerator('abcdefghijklmnopqrstuvwxyz','1234567890','abcdefghijklmnopqrstuvwxyz','1234567890')
Also der Reihenfolge nach a1a1-->a1a2-->a1a3-->...-->c3g6-->c4g7-->c4g8 etc... Das Rekursiv-Denken fällt mir wirklich schwer -.-
Delphi-Quellcode:
function TForm1.Zufallsgenerator(astring: string;bstring: string; cstring: string; dstring: string)
Procedure ErstelleString(const Basis: string); var npw: string; I1, I2, I3, I4, u: Integer; begin for I1 := 1 to 26 do begin npw := Basis + astring[I1] ; for I2 := 1 to 10 do begin npw := npw + bstring[I2] ; for I3:= 1 to 26 do begin npw:= npw + cstring[I3] ; for I4:= 1 to 10 do begin npw := npw + dstring[I4]; //Aber so funktioniert es eindeutig nicht^^ showmessage (npw); var I: Integer; begin For I := 1 to length(bstring) do begin // showmessage (inttostr(I)); ErstelleString(bstring[I]); end; end; |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
gruss |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Nun sprach ich Grundlagen nicht ohne Grund an, denn mir fiel auf, dass du in deiner Funktion ErstelleString 4 geschachtelte Schleifen mit derselben Laufvariable benutzt. Das kann nicht funktionieren. Jede Schleife braucht ihre eigene Laufvariable. Weiterhin sollte man wissen, dass lokale Prozeduren auf alle Variablen ihrer umgebenden Prozedur/Funktion Zugriff haben, d.h. es ist nicht einmal klar, welches I nun gemeint ist (das aus Zufallsgenerator oder ErstelleString). Ich weiß nicht, ob der Compiler so intelligent ist und die Variable mit dem kleinsten Gültigkeitsraum/Scope bevorzugt. Unabhängig davon sehe ich nicht, wo Rekursion helfen könnte, einen Zufallsgenerator zu implementieren bzw. in diesem Fall einen zufälligen String zu erstellen. MfG Dalai |
AW: Große String-Liste out of Memory - Hilfe?
Oh, ich sehe gerade, dass da noch 4x I steht - Das hatte ich dann in I1, I2, I3, I4 verändert da ich mir das schon dachte...
Zitat:
Wie müsste ich es denn schreiben, um solche Strings zu produzieren: a1a1, a1a2, a1a3, ..., c3g6, c4g7, c4g8, ..., z0z0 ? MfG |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Zitat:
Natürlich schreibst du, du seist ganz harmlos und möchtest auf keinen Fall irgend einen Schaden anrichten. Die Entscheidung, das zu glauben oder nicht, mußt du aber schon denen überlassen, die das lesen. Oder glaubst du einem Angeklagten, daß er nur zum Spaß Kreditkarten-Doubletten herstellt und nicht vorhat, sich damit finanzielle Vorteile zu ergaunern? Meine versteckten Seiten sind allein schon dadurch, daß sie versteckt sind, gegen unbefugten Zugang gesichert: Befugt sind nur diejenigen, die über den Link zu diesen Dateien verfügen. Das Herausfinden der Dateinamen bzw. URLs dieser versteckten HTML-Seiten via Brute Force erfordert genau so viel Aufwand wie das Herausfinden des Passworts einen passwortgeschützten Ordners. Das eine ist ebenso mit dem Einsatz krimineller Energie verbunden wie das andere. Worin sollte jetzt der Unteschied bestehen zwischen dem Brute-Force-Hacken der versteckten Dateien und dem Brute-Force-Hacken der Passwörter geschützter Verzeichnisse? Bitte nenne doch einmal die Absicht, die sich hinter dieser von dir hier erfragten Brute-Force-Methode verbirgt: Zu welchem Zweck möchtest du denn diese versteckten Seiten ermitteln? Zitat:
Seltsam: Ich kann mich an Threads erinnern, da wurde rigoros auf die Illegalität des automatisierten Auslesens von öffentlich zugäglichen Internetseiten hingewiesen. Versuche, nicht öffentliche Seiten auszulesen, scheinen der Foren-Führung jedoch keineswegs gegen den Strich zu gehen. Zitat:
Zumindest ich gestatte dir nicht, meine versteckten HTML-Seiten ausfindig zu machen. Im Übrigen wird mein Server-Provider es sich ganz gewiß nicht gefallen lassen, wenn du, weil dir das Brute-Forcing bei langen Dateinamen zu lange dauert, dann doch Methoden anwendest, die einer DOS-Attacke gleichkommen. Deine zahlreichen Beteuerungen in allen Ehren – allein ich neige nicht dazu, solchen Beteuerungen leichtfertig Glauben zu schenken. "Würdest du mir mal kurz deine Brieftasche leihen?" – "Wozu denn das?" – "Ach, ich finde die so toll, ich möchte die mal kurz meinem Kumpel zeigen." – "Ah, klar, aber nicht aufmachen, hörst du?" – "Keine Bange, ich bin ehrlich, mir kannst du vertrauen." ... und ward nie mehr gesehen ... Zitat:
Zitat:
Zitat:
Deine Haltung erinnert mich an jenen Kurierfahrer vor meiner Wohnung, der sich nach Feierabend dort auf den Parkplatz stellte, die Tür seines Van aufstieß und seine Anlage voll aufdrehte. Ich konnte nicht mehr weiterarbeiten, dieses heftige Bumm-Bumm, das sogar durch das geschlossene Fenster in mein Arbeitszimmer drang, brachte schon fast die Leseköpfe meiner Festplatten zum Vibrieren. Also ging ich runter und teilte diesem Menschen mit, daß hier im Haus niemand seine Vorführung hören wolle. Der wurde sofort aggressiv: "Ist doch mir egal, ich mach, was ich will. Verpiß dich oder ich hol die Polizei." Worauf ich erwiderte: "Au ja, das finde ich eine gute Idee!" Daraufhin stieg er aus und kam drohend auf mich zu in der Hoffnung, daß ich ängstlich zurückweichen möge. Tat ich aber nicht. "Sie belästigen mich hier! Ich kann Musik hören, wo und wann ich will!" Worauf er sich umdrehte und zurück zu seinem Auto ging, die Musik abstellte und zu telefonieren begann. Ich rief ihm zu: "Vielen Dank für Ihr Verständnis!" und ging wieder rauf in meine Wohnung. Was bezweckst du mit diesem Vorgehen, dir URLs von versteckten Dateien auf Webservern abzuspeichern? Wozu benötigst du Informationen darüber, welche Dateien außer den öffentlich zugänglichen sonst noch auf meinem Webserver zu finden sind, wenn du dir diese Dateien angeblich nicht herunterladen willst? Ich kann mir keinen anderen Zweck als einen illegalen vorstellen. |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Zitat:
MfG Dalai |
AW: Große String-Liste out of Memory - Hilfe?
@Perlsau
Davon ab das hätte man auch in einem Satz formulieren können. Aber gut du schreibst halt gern. Zitat:
Oder warum möchtest du plötzlich Zitat:
Garantiert von mir gibt's keine Hilfe! Solche Machenschaften unterstütze ich einfach nicht. @Dalai Gib ihm noch mehr Infos so das er am ende das umsetzen kann was er denn so vor hat. Vielleich auf deiner Webseite? Wenn du denn eine hast. gruss |
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
Zitat:
|
AW: Große String-Liste out of Memory - Hilfe?
Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 Uhr. |
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