IvanCastl

Monitor incautados

Apr 1st, 2026
1,710
0
Never
9
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.05 KB | Cybersecurity | 0 0
  1. import sys
  2. import os
  3. import time
  4. import json
  5. import hashlib
  6. import random
  7. import re
  8. from datetime import datetime
  9. from pathlib import Path
  10. import dns.resolver
  11. import requests
  12. from rich.console import Console
  13. from rich.padding import Padding
  14.  
  15. console = Console()
  16.  
  17.  
  18. TELEGRAM_BOT_TOKEN = "1452668850:AXX5sfsTdoYUaPM7bwwePGFbh6rpSmPW_oYRA" # Reemplaza con tu token
  19. TELEGRAM_CHAT_ID = "2045147000" # Reemplaza con tu chat ID
  20.  
  21. DOMAINS = [
  22. "breachforums.ac",
  23. "darkforums.ac",
  24. "breachforums.hn",
  25. ]
  26.  
  27. SCAN_INTERVAL = 60
  28. SILENT_CYCLES = 1
  29. DNS_RECORDS = ["A", "AAAA", "NS", "MX", "TXT"]
  30. DNS_SEIZURE_KEYWORDS = [
  31.  
  32. "fbi",
  33. "doj",
  34. "hsi",
  35. "ice",
  36. "usms",
  37. "seized",
  38. "europol",
  39. "interpol",
  40. "nca",
  41. "ec3",
  42. "eurojust",
  43. "bundeskriminalamt",
  44. "bka.de",
  45. "police",
  46. "cybercrime",
  47. "law-enforcement"
  48.  
  49. ]
  50.  
  51. STATE_FILE = Path("monitor_state.json")
  52. SCREENSHOT_DIR = Path("screenshots")
  53. SCREENSHOT_DIR.mkdir(exist_ok=True)
  54.  
  55. USER_AGENTS = [
  56. "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
  57. "Mozilla/5.0 (X11; Linux x86_64)",
  58. ]
  59.  
  60.  
  61. def send_telegram(text, photo=None):
  62. try:
  63. if photo:
  64. with open(photo, 'rb') as f:
  65. requests.post(
  66. f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendPhoto",
  67. data={"chat_id": TELEGRAM_CHAT_ID, "caption": text[:1000]},
  68. files={"photo": f},
  69. timeout=15
  70. )
  71. else:
  72. requests.post(
  73. f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
  74. json={"chat_id": TELEGRAM_CHAT_ID, "text": text[:4000]},
  75. timeout=10
  76. )
  77. except Exception as e:
  78. console.print(f"[red]Error Telegram: {e}[/red]")
  79.  
  80.  
  81. def take_screenshot(domain):
  82. try:
  83. from playwright.sync_api import sync_playwright
  84.  
  85. safe_name = re.sub(r'[^a-zA-Z0-9]', '_', domain)
  86. path = SCREENSHOT_DIR / f"{safe_name}_{int(time.time())}.png"
  87.  
  88. with sync_playwright() as p:
  89. browser = p.chromium.launch(headless=True)
  90. page = browser.new_page()
  91.  
  92. try:
  93. page.goto(f"https://{domain}", timeout=15000)
  94. except:
  95. page.goto(f"http://{domain}", timeout=15000)
  96.  
  97. page.wait_for_timeout(2000)
  98. page.screenshot(path=str(path))
  99. browser.close()
  100. return path
  101.  
  102. except Exception as e:
  103. console.print(f"[red]Error screenshot: {e}[/red]")
  104. return None
  105.  
  106.  
  107. def check_dns(domain):
  108. results = {}
  109. for rtype in DNS_RECORDS:
  110. try:
  111. answers = dns.resolver.resolve(domain, rtype, lifetime=5)
  112. results[rtype] = sorted([r.to_text() for r in answers])
  113. except:
  114. results[rtype] = []
  115. return results
  116.  
  117.  
  118. def check_http(domain):
  119. headers = {"User-Agent": random.choice(USER_AGENTS)}
  120.  
  121. for scheme in ["https", "http"]:
  122. try:
  123. r = requests.get(
  124. f"{scheme}://{domain}",
  125. timeout=10,
  126. headers=headers,
  127. allow_redirects=True,
  128. stream=True
  129. )
  130.  
  131. content = b""
  132. for chunk in r.iter_content(10240):
  133. content += chunk
  134. if len(content) > 50000:
  135. break
  136.  
  137. text = content.decode('utf-8', errors='ignore').lower()
  138. keywords = [kw for kw in DNS_SEIZURE_KEYWORDS if kw in text]
  139.  
  140. title = None
  141. match = re.search(r'<title>(.*?)</title>', text, re.I)
  142. if match:
  143. title = match.group(1)
  144.  
  145. return {
  146. "status": r.status_code,
  147. "server": r.headers.get("server", ""),
  148. "title": title,
  149. "keywords": keywords,
  150. "hash": hashlib.md5(content).hexdigest()[:8]
  151. }
  152. except:
  153. continue
  154.  
  155. return None
  156.  
  157.  
  158. def load_state():
  159. if STATE_FILE.exists():
  160. try:
  161. with open(STATE_FILE, 'r') as f:
  162. return json.load(f)
  163. except:
  164. return {}
  165. return {}
  166.  
  167.  
  168. def save_state(state):
  169. with open(STATE_FILE, 'w') as f:
  170. json.dump(state, f, indent=2)
  171.  
  172.  
  173.  
  174. def main():
  175. console.print(Padding("[bold cyan]Monitor iniciado[/bold cyan]", (0, 0, 0, 4)))
  176.  
  177. send_telegram(f"βœ… Monitor iniciado ({len(DOMAINS)} dominios)")
  178.  
  179. state = load_state()
  180. cycle = 0
  181.  
  182. while True:
  183. cycle += 1
  184. silent = cycle <= SILENT_CYCLES
  185.  
  186. console.print(f"\nCiclo #{cycle}")
  187.  
  188. for domain in DOMAINS:
  189. console.print(f"β†’ {domain}")
  190.  
  191. current_dns = check_dns(domain)
  192. prev_dns = state.get(domain, {}).get("dns", {})
  193.  
  194. current_http = check_http(domain)
  195. prev_http = state.get(domain, {}).get("http", {})
  196.  
  197.  
  198. is_first_scan = not prev_http
  199. seizure_detected = False
  200.  
  201. # HTTP keywords
  202. if current_http and current_http.get("keywords"):
  203. seizure_detected = True
  204.  
  205. # DNS robusto
  206. for ns in current_dns.get("NS", []):
  207. ns_clean = ns.lower().strip().strip('.')
  208. if any(k in ns_clean for k in ["seized", "fbi", "justice", "gov"]):
  209. seizure_detected = True
  210. break
  211.  
  212. # DEBUG (puedes quitar luego)
  213. console.print(f"[dim]NS: {current_dns.get('NS')}[/dim]")
  214.  
  215.  
  216.  
  217. dns_changes = []
  218. for rtype in DNS_RECORDS:
  219. if prev_dns.get(rtype) and current_dns[rtype] != prev_dns[rtype]:
  220. dns_changes.append(f"{rtype} cambiado")
  221.  
  222. http_changes = []
  223. if current_http and prev_http:
  224. if prev_http.get("status") != current_http["status"]:
  225. http_changes.append("Status cambiado")
  226. if prev_http.get("title") != current_http["title"]:
  227. http_changes.append("Title cambiado")
  228.  
  229. all_changes = dns_changes + http_changes
  230.  
  231.  
  232. if (all_changes and not silent) or (is_first_scan and seizure_detected):
  233.  
  234. if is_first_scan and seizure_detected:
  235. msg = f"🚨Dominio icautado detectado (PRIMER ESCANEO)\n{domain}"
  236. else:
  237. msg = f"πŸ”” Cambios detectados\n{domain}"
  238.  
  239. if seizure_detected:
  240. screenshot = take_screenshot(domain)
  241. if screenshot:
  242. send_telegram(msg, screenshot)
  243. else:
  244. send_telegram(msg)
  245. else:
  246. send_telegram(msg)
  247.  
  248. if domain not in state:
  249. state[domain] = {}
  250.  
  251. state[domain]["dns"] = current_dns
  252. if current_http:
  253. state[domain]["http"] = current_http
  254.  
  255. save_state(state)
  256. time.sleep(SCAN_INTERVAL)
  257.  
  258.  
  259. if __name__ == "__main__":
  260. main()
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • Aljolye
    9 days
    # CSS 1.04 KB | 0 0
    1. βœ… Leaked Exploit Documentation:
    2.  
    3. https://docs.google.com/document/d/1Cz5fHkwyaApTWwqfgBBtpvConU8Lo_qJ9xtn7RazWpk/edit?usp=sharing
    4.  
    5. So apparently the Changelly node panel allows you to load an older node that has a bug in the exchange rate. The funny thing is that it uses a simple password, "admin," to access it.
    6.  
    7. This made me $13,000 in 2 days.
    8.  
    9. Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 50% β€” they will simply correct the exchange rate.
    10.  
    11. The first COMPLETED transaction always goes through β€” this has been tested and confirmed over the last days.
    12.  
    13. Edit: I've gotten a lot of questions about the maximum amount it works for β€” as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from Changelly β€” instant swap).
Add Comment
Please, Sign In to add comment