autoreg-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
162
skills/free-tools-abuse/scripts/registration_stack.py
Normal file
162
skills/free-tools-abuse/scripts/registration_stack.py
Normal file
@@ -0,0 +1,162 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user