AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Große String-Liste out of Memory - Hilfe?
Thema durchsuchen
Ansicht
Themen-Optionen

Große String-Liste out of Memory - Hilfe?

Ein Thema von Pogoner · begonnen am 20. Apr 2014 · letzter Beitrag vom 23. Apr 2014
Antwort Antwort
Seite 1 von 2  1 2      
Pogoner

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 6 Enterprise
 
#1

AW: Große String-Liste out of Memory - Hilfe?

  Alt 20. Apr 2014, 20:37
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.
Ja die Results-Liste stammt noch aus dem "Tutorial" - anstatt in die Liste, möchte ich es in den Spider übergeben. Bevor ich das tun kann, wird die Cluster-Liste allerdings zu groß und ich kann ehrlichgesagt mit den Schleifen nicht so gut umgehen, um es im richtigen Moment abzugreifen bzw die Liste wieder freizugeben...

Kommentiere zunächst mal das Results.Add(...); aus und schau dir den Speicherverbrauch an.
Die Results ist ja nur ein Teil der Cluster-Liste. Ich habe sie kommentiert und bin nur 100MB runter, der Großteil ist von der anderen belegt... (Mittelteil meiner Tabelle mit allen Kombinationen)

Sollten diese Werte irgendeine Relevanz haben, dann kann man diese auch direkt in eine Datei schreiben und damit den Speicher entlasten.
Die Werte haben keine Relevanz - außer dass ich sie (wenn sie x Stellen lang sind) dem Spider übergeben möchte

Ich weiß aber nicht, ob ich zum Thema BruteForce und Webseiten hier wirklich weiterhelfen möchte ...
Naja also ich will ja kein Passwort knacken oder etwas ähnliches - es ist mehr eine sportliche Herausforderung, eine versteckete Unterseite zu finden. Diese ist offen zugänglich für den, der den Link kennt - Keine Sorge

Geändert von Pogoner (20. Apr 2014 um 20:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#2

AW: Große String-Liste out of Memory - Hilfe?

  Alt 20. Apr 2014, 20:55
Ich weiß aber nicht, ob ich zum Thema BruteForce und Webseiten hier wirklich weiterhelfen möchte ...
Naja also ich will ja kein Passwort knacken oder etwas ähnliches - es ist mehr eine sportliche Herausforderung, eine versteckete Unterseite zu finden. Diese ist offen zugänglich für den, der den Link kennt - Keine Sorge
Ganz so unbedarft ist das aber nicht! Nach deiner Aussage kommen da 380204032 Strings zusammen, von denen ein großer Teil zu einem HTML-Call führt. Das kann durchaus schon als Versuch einer DOS-Attacke angesehen werden.

Abgesehen davon wurde dir der passende Lösungsansatz bereits in Post 3 aufgezeigt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Pogoner

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Große String-Liste out of Memory - Hilfe?

  Alt 20. Apr 2014, 21:13
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...
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Große String-Liste out of Memory - Hilfe?

  Alt 20. Apr 2014, 22:02
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?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#5

AW: Große String-Liste out of Memory - Hilfe?

  Alt 20. Apr 2014, 22:03
Ich denke, gemeint mit der Lösung ist die For-While Schleife mit Continue?

Eigentlich zielte ich eher auf die Rekursion hin. Also in etwa so:

Delphi-Quellcode:
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 = 'Vorhandenthen 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;
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 endlen ist sollte das kein Problem werden. Diese Lösung verbraucht fast gar keinen Speicher.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Pogoner

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Große String-Liste out of Memory - Hilfe?

  Alt 20. Apr 2014, 23:28
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 endlen ist sollte das kein Problem werden. Diese Lösung verbraucht fast gar keinen Speicher.
Ich musste 2x lesen:)

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:
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 = 'Vorhandenthen 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;
Angesteuert hab ich es per bruteforce('abcd','abcd',2,2); - Aber bis auf die erste Nachricht kommt nichts weiter? :?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#7

AW: Große String-Liste out of Memory - Hilfe?

  Alt 20. Apr 2014, 23:48
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Große String-Liste out of Memory - Hilfe?

  Alt 21. Apr 2014, 01:03
Naja also ich will ja kein Passwort knacken oder etwas ähnliches - es ist mehr eine sportliche Herausforderung, eine versteckete Unterseite zu finden. Diese ist offen zugänglich für den, der den Link kennt - Keine Sorge
Du möchtest dir Informationen zugänglich machen, die nicht für dich bestimmt sind!

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!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#9

AW: Große String-Liste out of Memory - Hilfe?

  Alt 21. Apr 2014, 01:21
Und wer bezahlt die Serverauslastung, inkl. des anfallenden Traffics, durch diesem Angriff?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: Große String-Liste out of Memory - Hilfe?

  Alt 21. Apr 2014, 01:51
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz