Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi http request/get flood (https://www.delphipraxis.net/142946-http-request-get-flood.html)

painrestricter 6. Nov 2009 14:01


http request/get flood
 
servuß

ich will einen http flood coden, da ich an sowas am meisten spaß hab und mich die funktionsweise interessiert
(und wie man womöglich gegenmaßnahmen ergreifen kann)

THATS ONLY PRACTICE

ich hab mal was zum test geschrieben, funktioniert aber nicht

Delphi-Quellcode:
function CreateHTTPRequest(Site: String): String;
var
  Request: String;
begin
  Randomize;
   Request := 'GET ' + Site + ' HTTP/1.1' + #13#10;
  Request := Request + 'Host: ' + Site + #13#10;
  Request := Request + 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + #13#10;
  Request := Request + 'Accept-Language: en-us,en' + #13#10;
  Request := Request + 'User-Agent: ' + UserAgents[1 + Random(11)] + #13#10;
  Request := Request + 'Referer: ' + Referer[1 + Random(5)] + #13#10;
  Request := Request + 'Connection: close' + #13#10#13#10;
  Result := Request;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Seite := Edit1.Text;
ClientSocket1.Active := true;
Label1.Visible := true;
Label1.Caption := 'Flooding on port 80...';
while flood do
 begin
 ClientSocket1.Socket.Connect(Strtoint(target));
 if ClientSocket1.Socket.Connected then
   begin
   Clientsocket1.Socket.SendText(CreateHTTPRequest(Seite));
   Clientsocket1.Socket.Disconnect(Strtoint(Seite));
   Sleep(2);
   Application.ProcessMessages;
   end;
 end;
 Clientsocket1.Socket.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin

Application.Terminate;
end;


end.
die http request funktion hat ein kollege von mir geschrieben, weil ich nicht wusste wie ich es anders lösen sollte

kann mir da wer helfen?
ich hab versucht mit tclientsocket eine verbindung aufzubauen, aber scheinbar funktioniert das nicht.
hab mir schon überlegt das mit raw sockets zu machen, aber die sind ja ab sp2 deaktiviert.
wie schauts denn mit winsock aus?

achja, eigentlich wollte ich bei
Delphi-Quellcode:
Clientsocket1.Socket.SendText(CreateHTTPRequest(Seite));
nicht sendtext, sondern sendstring senden, nur das hat nicht ganz geklappt.

Valle 6. Nov 2009 14:56

Re: http request/get flood
 
Weißt du überhaupt was dieser Code da macht? Dein Problem liegt in Zeile 30, da steht Delphi-Referenz durchsuchenSleep(2). Schau mal in der Hilfe nach was das bedeutet. Wenn du weißt was HTTP-Flood bedeuten soll, dann dürfte der Fehler darin ja klar sein.

PS.: Du testest das ja sicher nur an deinen eigenen Servern?

Liebe Grüße,
Valentin

painrestricter 6. Nov 2009 15:12

Re: http request/get flood
 
natürlich weiß ich was der code macht


ich versuch eben einen webserver auf port 80 unzählig viele requests zu schicken und soviele threads wie möglich aufzumachen

wie könnte ich das anders einfach machen?

ich habe etwas über idHTTP gelesen, damit wäre es doch theoretisch einfach möglich oder?

sirius 6. Nov 2009 15:13

Re: http request/get flood
 
Zitat:

Zitat von painrestricter
ich habe etwas über idHTTP gelesen, damit wäre es doch theoretisch einfach möglich oder?

Ja, oder über XMLhttpRequest....

Valle 6. Nov 2009 15:16

Re: http request/get flood
 
Hast du dir angeschaut was Sleep(2) macht? :zwinker:

Liebe Grüße,
Valentin

sirius 6. Nov 2009 15:19

Re: http request/get flood
 
Zitat:

ich hab versucht mit tclientsocket eine verbindung aufzubauen, aber scheinbar funktioniert das nicht.
Tolle Fehlermeldung :zwinker:

painrestricter 6. Nov 2009 15:24

Re: http request/get flood
 
jo schon ^^

naja was ich auch mache, mein prog mein "keine adresse angegeben"

bzw es kommt irgendein error, den ich gleich posten werden.

naja, ich denke nicht dass es an sleep liegt. wie soll denn sleep den programmablauf stören?

Valle 6. Nov 2009 19:48

Re: http request/get flood
 
Zitat:

Zitat von painrestricter
naja, ich denke nicht dass es an sleep liegt. wie soll denn sleep den programmablauf stören?

Du scheinst nicht wirklich Ahnung von der Materie zu haben, oder? Wie vielleicht unschwer zu erkennen ist bedeutet Flood auf Deutsch Flut. Frei übersetzt heißt es also den Webserver mit Anfragen zu "überfluten". Wichtig ist dabei dir Vorsilbe "über-"! Dem Webserver macht es nichts aus alle 2 Sekunden eine Anfrage zu beantworten. Du wartest (sleep / schlafen) ja nach jeder Anfrage 2 Sekunden. Wenn du etwas flooden willst, dann muss das mehr sein.

Man sagt, um einen sogenannten DoS (Denial of Service, also Serviceverweigerung - das ist einer von vielen Vorgängen einen Dienst lahmzulegen. Ein anderer wäre simples einhacken mit anschließendem Ausschalten) auszuführen, muss man selbst mehr Anbindung haben als der Server selbst. Da das nur selten, wenn nicht sogar nie der Fall ist, benutzt man meist DDoS. Dieser Distributed Denial of Service benötigt mehrere Rechner mit nabhängigen Leitungen um den Server zu flooden. Da du aber höchst unwahrscheinlich mehr Anbindung als der zu "DoS"-nde Server hast und auch wohl kaum mehrere Server mit genügend summierter Anbindung, kannst du die Sache eigentlich vergessen.

Primär müsstest du aber erstmal rausfinden warum disee Fehlermeldung kommt, die du uns so lange verschwiegen hast. Kleiner Tipp am Rande: Fehlermeldungen haben einen guten Berechtigungsgrund, nämlich der, dass es für den Programmierer einfacherer ist den Fehler zu finden. Wenn du uns so eine Meldung verschweigst, dann können wir nicht helfen. Was es jetzt aber genau mit der Meldung auf sich hat kann ich dir nicht sagen, dafür fehlen mit die Delphi-Kenntnisse.

Auf den ersteb Blick ist deine CreateHTTPRequest-Funktion aber sowieso inpraktikabel, da Hostname und URI nicht das gleiche ist. Du verwendest dafür aber die gleiche Variable. Meiner Meinung nach solltest du dich mehr mit dem Thema beschäftigen. Das heißt du brauchst wissen über Netzwerke (TCP/IP) und Aufbau des HTTP. So wird das nichts.

Liebe Grüße,
Valentin

painrestricter 7. Nov 2009 14:56

Re: http request/get flood
 
jo du hast recht, wirklich viel ahnung hab ich nicht, aber ich bemüh mich un der wille ist da :wink:

was ddos usw ist, weiß ich :-D

wenn du es unbedingt wissen willst, ich hab die createhttprequest funktion auch aus dem acidbot von poke, also ein irc basiert ddos bot. mich interessiert das einfach wie das funktioniert.
mein kollege hat es geschafft, mit seinem pc (ich glaube dsl 3000 anbindung) unseren vps server zu flooden. der server war danach down. Aus Neugier wollte ich sowas auch versuchen. Leider codet er in vb, und das kann ich nicht ^^

ich habe mich jetzt ein bisschen mit indy und den der idhttp komponente auseinandergesetzt, bin dabei es neu zu versuchen.

Ralf Kaiser 7. Nov 2009 15:18

Re: http request/get flood
 
Zitat:

Zitat von Valle
Du wartest (sleep / schlafen) ja nach jeder Anfrage 2 Sekunden. Wenn du etwas flooden willst, dann muss das mehr sein.

Nein. Er warten keine 2 Sekunden, sondern 2 Millisekunden! 2 Sekunden wären "Sleep(2000)".

Eigentlich wartet er aber länger, die Auflösung von "Sleep()" liegt irgendwo bei 50 Millisekunden, kleiner Zeiten kann man mit "Sleep()" nicht warten (Win ist kein Echtzeitbetriebssystem).

Eigentlich verstehe ich nicht, was das "Sleep()" da überhaupt soll...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.
Seite 1 von 3  1 23      

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