162 lines
5.1 KiB
Python
Executable File
162 lines
5.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Registration abuse stack — automated account creation pipeline.
|
|
Uses: mail.tm (email) + receive-smss.com (SMS) + webshare.io (proxy)
|
|
|
|
Usage:
|
|
python registration_stack.py --service google --count 5
|
|
python registration_stack.py --service telegram --count 10 --proxy-list proxies.txt
|
|
"""
|
|
import sys
|
|
import json
|
|
import time
|
|
import random
|
|
import requests
|
|
from datetime import datetime
|
|
|
|
# ============================================================
|
|
# CONFIG
|
|
# ============================================================
|
|
MAILTM_API = "https://api.mail.tm"
|
|
PROXY_LIST = [] # будет загружен из файла или webshare
|
|
USER_AGENTS = [
|
|
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/[REDACTED-IP]",
|
|
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/[REDACTED-IP]",
|
|
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Chrome/[REDACTED-IP]",
|
|
]
|
|
|
|
|
|
# ============================================================
|
|
# TEMP EMAIL (mail.tm)
|
|
# ============================================================
|
|
class TempEmail:
|
|
def __init__(self):
|
|
self.token = None
|
|
self.address = None
|
|
|
|
def create(self):
|
|
"""Create disposable email via mail.tm API."""
|
|
# Get domains
|
|
r = requests.get(f"{MAILTM_API}/domains")
|
|
domain = r.json()["hydra:member"][0]["domain"]
|
|
|
|
# Random username
|
|
username = f"user{random.randint(10000, 99999)}{int(time.time()) % 10000}"
|
|
address = f"{username}@{domain}"
|
|
|
|
password = f"Pass{random.randint(1000, 9999)}!"
|
|
r = requests.post(f"{MAILTM_API}/accounts", json={
|
|
"address": address, "password": password
|
|
})
|
|
|
|
if r.status_code == 201:
|
|
self.token = [REDACTED])["token"]
|
|
self.address = address
|
|
print(f" 📧 Email: {address}")
|
|
return address
|
|
else:
|
|
print(f" ❌ Email failed: {r.status_code} {r.text[:100]}")
|
|
return None
|
|
|
|
def wait_for_code(self, timeout=60):
|
|
"""Wait for verification code in inbox."""
|
|
start = time.time()
|
|
while time.time() - start < timeout:
|
|
r = requests.get(f"{MAILTM_API}/messages",
|
|
headers={"Authorization": f"Bearer {self.token}"})
|
|
messages = r.json().get("hydra:member", [])
|
|
|
|
for msg in messages:
|
|
# Get message body
|
|
r2 = requests.get(f"{MAILTM_API}/messages/{msg['id']}",
|
|
headers={"Authorization": f"Bearer {self.token}"})
|
|
body = r2.json().get("text", "") or r2.json().get("html", "")
|
|
|
|
# Extract 6-digit code
|
|
import re
|
|
codes = re.findall(r'\b(\d{4,8})\b', body)
|
|
if codes:
|
|
print(f" ✅ Code found: {codes[0]}")
|
|
return codes[0]
|
|
|
|
time.sleep(3)
|
|
print(f" ⏰ Timeout waiting for code")
|
|
return None
|
|
|
|
|
|
# ============================================================
|
|
# PROXY
|
|
# ============================================================
|
|
def get_proxy():
|
|
"""Get next proxy from rotation."""
|
|
if not PROXY_LIST:
|
|
return None
|
|
return random.choice(PROXY_LIST)
|
|
|
|
|
|
# ============================================================
|
|
# TEMP SMS (receive-smss.com — web scraping)
|
|
# ============================================================
|
|
# NOTE: receive-smss.com doesn't have public API.
|
|
# Use browser automation or fetch from their public page.
|
|
# This is a placeholder — real implementation uses browser or paid API.
|
|
class TempSMS:
|
|
def __init__(self):
|
|
self.numbers = []
|
|
|
|
def get_free_numbers(self):
|
|
"""Scrape free numbers from receive-smss.com."""
|
|
# Placeholder — use browser or web_extract
|
|
print(" 📱 SMS: Use browser to get numbers from receive-smss.com")
|
|
return None
|
|
|
|
|
|
# ============================================================
|
|
# MAIN
|
|
# ============================================================
|
|
def main():
|
|
print("=" * 50)
|
|
print(" Registration Abuse Stack")
|
|
print("=" * 50)
|
|
|
|
if len(sys.argv) < 2:
|
|
print("Usage: python registration_stack.py --service <name> --count <N>")
|
|
print("Services: google, telegram, twitter, instagram, whatsapp")
|
|
sys.exit(1)
|
|
|
|
service = "telegram"
|
|
count = 1
|
|
|
|
for i, arg in enumerate(sys.argv):
|
|
if arg == "--service":
|
|
service = sys.argv[i + 1]
|
|
elif arg == "--count":
|
|
count = int(sys.argv[i + 1])
|
|
|
|
print(f"\nTarget: {service} | Count: {count}\n")
|
|
|
|
for i in range(count):
|
|
print(f"\n--- Account {i+1}/{count} ---")
|
|
|
|
# Step 1: Email
|
|
email = TempEmail()
|
|
email_addr = email.create()
|
|
if not email_addr:
|
|
continue
|
|
|
|
# Step 2: Proxy
|
|
proxy = get_proxy()
|
|
if proxy:
|
|
print(f" 🌐 Proxy: {proxy}")
|
|
|
|
# Step 3: SMS (for Telegram)
|
|
sms = TempSMS()
|
|
sms.get_free_numbers()
|
|
|
|
time.sleep(2)
|
|
|
|
print(f"\n✅ Done. {count} accounts prepared.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |