𝘼𝙗𝙝𝙞𝙜𝙮𝙖𝙣 𝙏𝙤𝙤𝙡𝙨 𝙇𝙖𝙗
前往频道在 Telegram
Personal research tools • APIs • bots Updates • demos • limited access drops Not for illegal use
显示更多未指定国家未指定类别
1 043
订阅者
+4924 小时
+3147 天
+64330 天
帖子存档
1 044
inline_content = "\n".join(s.string for s in BeautifulSoup(html, 'html.parser').find_all('script') if s.string)
if inline_content:
findings = analyze_content(inline_content, "INLINE_SCRIPTS")
per_file["INLINE_SCRIPTS"] = findings
for k, v in findings.items():
all_findings.setdefault(k, set()).update(v)
# Analyze each downloaded file
for filepath, content, url in downloaded_files:
filename = os.path.basename(filepath)
print(f"{C.W}Analyzing: {filename}...{C.END}")
findings = analyze_content(content, filename)
per_file[filename] = findings
# Merge into global
for k, v in findings.items():
all_findings.setdefault(k, set()).update(v)
# Print file summary
if findings:
total = sum(len(v) for v in findings.values())
print(f" {C.G}✓ {total} findings{C.END}")
# Convert sets to sorted lists
all_findings = {k: sorted(v) for k, v in all_findings.items()}
# ========== STEP 5: PRINT FULL REPORT ==========
print_report(all_findings, js_urls, output_dir, target_url)
# ========== STEP 6: SAVE REPORT ==========
print_section("💾 STEP 6: Saving Report")
report_path = save_report(all_findings, js_urls, output_dir, target_url)
print(f"{C.G}[+] Report saved: {report_path}{C.END}")
print(f"{C.G}[+] JS files saved: {output_dir}/{C.END}")
# ========== STEP 7: EXTRACT FUNCTION CODE ==========
print_section("⚙️ STEP 7: Crypto Functions Code")
crypto_keywords = ['encrypt', 'decrypt', 'cipher', 'hash', 'sign']
function_count = 0
for filepath, content, url in downloaded_files:
# Find crypto functions
func_pattern = r'function\s+(\w*(?:' + '|'.join(crypto_keywords) + r')\w*)\s*\([^)]*\)\s*\{'
for m in re.finditer(func_pattern, content, re.IGNORECASE):
func_name = m.group(1)
code = extract_function_code(content, func_name)
if code and function_count < 10:
print(f"\n{C.Y}📄 File: {os.path.basename(filepath)}{C.END}")
print(f"{C.CY}Function: {func_name}{C.END}")
print(f"{C.W}{code[:800]}{C.END}")
if len(code) > 800:
print(f"{C.Y}... (truncated){C.END}")
function_count += 1
if function_count == 0:
print(f"{C.Y}[!] No crypto functions found{C.END}")
# ========== FINAL ==========
print_section("✅ ANALYSIS COMPLETE", C.G)
print(f"""
{C.G}✓ Total JS files: {len(js_urls)}
{C.G}✓ Downloaded: {len(downloaded_files)}
{C.G}✓ Report: {report_path}
{C.G}✓ JS folder: {output_dir}/{C.END}
""")
# Summary of what was found
print(f"{C.Y}{C.BOLD}📊 QUICK SUMMARY:{C.END}")
for category in ["AES_KEY", "SECRET_KEY", "API_KEY", "PUBLIC_KEY",
"API_ENDPOINTS", "CRYPTO_FUNCTIONS", "SALT"]:
if category in all_findings:
count = len(all_findings[category])
print(f" {C.G}• {category}: {count} found{C.END}")
if name == "main":
try:
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
except:
pass
try:
main()
except KeyboardInterrupt:
print(f"\n{C.Y}[!] Interrupted by user{C.END}")
except Exception as e:
print(f"\n{C.R}[!] Error: {e}{C.END}")
import traceback
traceback.print_exc()
`1 044
def save_report(all_findings, js_files, output_dir, target_url):
"""Save detailed report to file"""
report_path = os.path.join(output_dir, "_ANALYSIS_REPORT.txt")
with open(report_path, 'w', encoding='utf-8') as f:
f.write("="*70 + "\n")
f.write(" UNIVERSAL JS ANALYZER - FULL REPORT\n")
f.write("="*70 + "\n\n")
f.write(f"Target URL: {target_url}\n")
f.write(f"Analysis Time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
f.write(f"JS Files Analyzed: {len(js_files)}\n\n")
f.write("="*70 + "\n")
f.write(" ALL FINDINGS\n")
f.write("="*70 + "\n\n")
for category, values in all_findings.items():
if category == "_global":
continue
if values:
f.write(f"\n[{category}] ({len(values)} found)\n")
f.write("-"*70 + "\n")
for v in values:
f.write(f" • {v}\n")
f.write("\n\n" + "="*70 + "\n")
f.write(" JS FILES LIST\n")
f.write("="*70 + "\n\n")
for url in js_files:
f.write(f" {url}\n")
return report_path
# ==================== MAIN ====================
def main():
print_banner()
# ========== GET URL ==========
target_url = input(f"\n{C.Y}🌐 Enter website URL: {C.END}").strip()
if not target_url:
print(f"{C.R}[!] URL required!{C.END}")
return
target_url = normalize_url(target_url)
# Create output directory
domain = urlparse(target_url).netloc.replace(':', '_')
output_dir = f"js_analysis_{domain}_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
os.makedirs(output_dir, exist_ok=True)
print(f"\n{C.G}[+] Target: {target_url}{C.END}")
print(f"{C.G}[+] Output: {output_dir}/{C.END}")
# ========== STEP 1: FETCH PAGE ==========
print_section("📥 STEP 1: Fetching Main Page")
html = get_page(target_url)
if not html:
print(f"{C.R}[!] Failed to fetch page{C.END}")
return
print(f"{C.G}[+] Page fetched: {len(html)} bytes{C.END}")
# ========== STEP 2: EXTRACT JS URLS ==========
print_section("🔗 STEP 2: Extracting JS URLs")
js_urls = extract_js_urls(html, target_url)
print(f"{C.G}[+] Found {len(js_urls)} JS files{C.END}")
if not js_urls:
print(f"{C.Y}[!] No JS files found. Website might use inline JS.{C.END}")
# Still analyze inline scripts
soup = BeautifulSoup(html, 'html.parser')
inline = "\n".join(s.string for s in soup.find_all('script') if s.string)
if inline:
print(f"{C.G}[+] Analyzing {len(inline)} bytes of inline JS{C.END}")
# Limit
js_urls = js_urls[:MAX_FILES]
for i, url in enumerate(js_urls[:20], 1):
print(f" {C.W}{i}. {url}{C.END}")
if len(js_urls) > 20:
print(f" {C.Y}... and {len(js_urls)-20} more{C.END}")
# ========== STEP 3: DOWNLOAD JS ==========
print_section("⬇️ STEP 3: Downloading JS Files")
downloaded_files = []
for i, js_url in enumerate(js_urls, 1):
print(f"{C.W}[{i}/{len(js_urls)}] {os.path.basename(js_url)[:60]}{C.END}")
filepath, content = download_js(js_url, output_dir)
if filepath and content:
downloaded_files.append((filepath, content, js_url))
print(f" {C.G}✓ {len(content)} bytes{C.END}")
print(f"\n{C.G}[+] Downloaded {len(downloaded_files)} files{C.END}")
# ========== STEP 4: ANALYZE ==========
print_section("🔍 STEP 4: Analyzing for Keys & Secrets")
all_findings = {} # Global findings (combined)
per_file = {} # Per-file findings
# Analyze inline scripts first
if js_urls == []:
1 044
else:
val = m
# Clean value
val = val.strip()
if 3 < len(val) < 5000:
matches.add(val)
except re.error:
continue
if matches:
findings[category] = sorted(matches)
return findings
def extract_function_code(content, func_name):
"""Extract function body"""
# Different patterns
patterns = [
rf'function\s+{re.escape(func_name)}\s*\([^)]*\)\s*\{{([\s\S]{{0,2000}}?)\n\}}',
rf'{re.escape(func_name)}\s*[:=]\s*(?:async\s*)?(?:function\s*)?\([^)]*\)\s*(?:=>)?\s*\{{([\s\S]{{0,2000}}?)\n\}}',
]
for pattern in patterns:
m = re.search(pattern, content)
if m:
return m.group(0)[:1500]
return None
# ==================== REPORT ====================
def print_report(all_findings, js_files, output_dir, target_url):
"""Print full report"""
print_section("📊 FINAL REPORT", C.M)
print(f"\n{C.W}Target: {C.Y}{target_url}{C.END}")
print(f"{C.W}JS Files: {C.Y}{len(js_files)}{C.END}")
print(f"{C.W}Saved to: {C.Y}{output_dir}/{C.END}")
print(f"{C.W}Time: {C.Y}{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}{C.END}")
# ========== GROUP BY CATEGORY ==========
categories = {
"🔐 ENCRYPTION KEYS": [
"AES_KEY", "AES_IV", "SECRET_KEY", "SECRET_CODE",
"ENCRYPTION_KEY", "HMAC_KEY", "SALT"
],
"🔑 API KEYS & TOKENS": [
"API_KEY", "ACCESS_TOKEN", "BEARER_TOKEN", "JWT_SECRET"
],
"🔏 RSA KEYS": [
"PUBLIC_KEY", "PRIVATE_KEY", "BASIC_AUTH"
],
"🌐 API ENDPOINTS": [
"API_ENDPOINTS", "FULL_URLS", "WEBSOCKET_URLS"
],
"⚙️ CRYPTO FUNCTIONS": [
"CRYPTO_FUNCTIONS", "CRYPTOJS_USAGE", "AES_USAGE",
"RSA_USAGE", "PBKDF2_USAGE", "BASE64_USAGE"
],
"👤 CREDENTIALS": [
"USERNAME", "PASSWORD"
],
"🔍 THIRD-PARTY KEYS": [
"GITHUB_TOKENS", "GOOGLE_API_KEY", "FIREBASE_URL",
"AWS_KEY", "STRIPE_KEY", "TWILIO_KEY", "SENDGRID_KEY", "SLACK_TOKEN"
],
"📞 OTHER": [
"EMAIL", "PHONE", "IP_ADDRESS", "AADHAAR_LIKE"
],
}
for group_name, group_keys in categories.items():
group_has_data = False
for key in group_keys:
if key in all_findings and all_findings[key]:
if not group_has_data:
print_section(group_name, C.CY)
group_has_data = True
values = all_findings[key]
print(f"\n{C.Y}{C.BOLD}[{key}]{C.END} ({len(values)} found)")
for i, val in enumerate(values[:15]): # Max 15 per category
# Truncate long values
display = val if len(val) <= 150 else val[:150] + "..."
# Color based on type
if 'KEY' in key or 'SECRET' in key or 'TOKEN' in key:
color = C.R
elif 'URL' in key or 'ENDPOINT' in key:
color = C.B
else:
color = C.G
print(f" {color}→ {display}{C.END}")
if len(values) > 15:
print(f" {C.Y}... and {len(values)-15} more{C.END}")
# ========== FILE-WISE BREAKDOWN ==========
print_section("📁 PER-FILE BREAKDOWN", C.CY)
for fname, findings in all_findings.items():
if fname == "_global":
continue
total = sum(len(v) for v in findings.values())
if total > 0:
print(f"\n{C.W}📄 {fname}{C.END}")
for key, vals in findings.items():
if vals:
print(f" {C.G}• {key}: {len(vals)} found{C.END}")
1 044
def decode_base64_safely(s):
"""Safely decode base64"""
try:
if len(s) % 4:
s += '=' * (4 - len(s) % 4)
decoded = base64.b64decode(s)
return decoded.decode('utf-8', errors='ignore')
except:
return None
def is_js_url(url):
"""Check if URL is a JS file"""
parsed = urlparse(url)
path = parsed.path.lower()
return path.endswith('.js') or path.endswith('.mjs') or 'javascript' in path
def normalize_url(url):
"""Add https:// if missing"""
if not url.startswith(('http://', 'https://')):
url = 'https://' + url
return url
# ==================== FETCH & EXTRACT ====================
def get_page(url):
"""Fetch main page"""
try:
r = requests.get(url, headers=HEADERS, timeout=30, verify=False)
return r.text
except Exception as e:
print(f"{C.R}[!] Failed to fetch page: {e}{C.END}")
return None
def extract_js_urls(html, base_url):
"""Extract all JS URLs from HTML"""
soup = BeautifulSoup(html, 'html.parser')
js_urls = set()
# <script src="...">
for script in soup.find_all('script', src=True):
js_urls.add(urljoin(base_url, script['src']))
# Inline scripts se bhi URLs
for script in soup.find_all('script'):
if script.string:
# Relative URLs
for m in re.findall(r'["\']([^"\']*\.js(?:\?[^"\']*)?)["\']', script.string):
js_urls.add(urljoin(base_url, m))
# Absolute URLs
for m in re.findall(r'["\'](https?://[^"\']+\.js(?:\?[^"\']*)?)["\']', script.string):
js_urls.add(m)
# <link rel="modulepreload" href="...">
for link in soup.find_all('link'):
href = link.get('href', '')
if href.endswith('.js') or href.endswith('.mjs'):
js_urls.add(urljoin(base_url, href))
# Filter only valid JS
js_urls = {u for u in js_urls if is_js_url(u)}
return list(js_urls)
def download_js(js_url, output_dir):
"""Download JS file"""
try:
filename = os.path.basename(urlparse(js_url).path) or "script.js"
# Remove query string from filename
if '?' in filename:
filename = filename.split('?')[0]
filepath = os.path.join(output_dir, filename)
# Check if already downloaded
if os.path.exists(filepath):
with open(filepath, 'r', encoding='utf-8', errors='ignore') as f:
return filepath, f.read()
r = requests.get(js_url, headers=HEADERS, timeout=DOWNLOAD_TIMEOUT,
verify=False, stream=True)
if r.status_code != 200:
return None, None
# Size check
content_length = int(r.headers.get('Content-Length', 0))
if content_length > MAX_JS_SIZE:
print(f"{C.Y} [skip] Too large ({content_length} bytes): {filename}{C.END}")
return None, None
content = r.content
if len(content) > MAX_JS_SIZE:
return None, None
with open(filepath, 'wb') as f:
f.write(content)
return filepath, content.decode('utf-8', errors='ignore')
except Exception as e:
print(f"{C.R} [err] {js_url}: {str(e)[:100]}{C.END}")
return None, None
# ==================== ANALYSIS ====================
def analyze_content(content, filename):
"""Analyze JS content for all patterns"""
findings = {}
for category, patterns in SEARCH_PATTERNS.items():
matches = set()
for pattern in patterns:
try:
for m in re.finditer(pattern, content, re.IGNORECASE | re.DOTALL):
if isinstance(m, re.Match):
val = m.group(1) if m.groups() else m.group(0)
1 044
"API_ENDPOINTS": [
r'["\']((?:https?://)?[a-zA-Z0-9\-\.]+/(?:api|v\d|rest|graphql)/[^"\'\s]{3,100})["\']',
r'["\'](/api/[^"\'\s]{3,100})["\']',
r'["\'](/v\d/[^"\'\s]{3,100})["\']',
r'["\'](/[a-z\-]+/api/[^"\'\s]{3,100})["\']',
],
"FULL_URLS": [
r'["\'](https?://[a-zA-Z0-9\-\._/]+(?:\?[^"\'\s]*)?)["\']',
],
"WEBSOCKET_URLS": [
r'["\'](wss?://[a-zA-Z0-9\-\._/:]+)["\']',
],
# ========== CRYPTO FUNCTIONS ==========
"CRYPTO_FUNCTIONS": [
r'function\s+(\w*(?:encrypt|decrypt|cipher|hash|sign|verify)\w*)\s*\([^)]*\)\s*\{[^}]{0,2000}\}',
r'(\w*(?:encrypt|decrypt)\w*)\s*[:=]\s*(?:async\s*)?(?:function\s*)?\([^)]*\)\s*(?:=>)?\s*\{[^}]{0,2000}\}',
],
"CRYPTOJS_USAGE": [
r'CryptoJS\.(\w+)\.(encrypt|decrypt|hash|sign)\s*\([^)]{0,200}\)',
r'(?:CryptoJS|crypto)\.(AES|DES|TripleDES|RC4|SHA256|SHA1|MD5|HmacSHA256)',
],
"BASE64_USAGE": [
r'\b(?:atob|btoa)\s*\([^)]{0,200}\)',
],
"PBKDF2_USAGE": [
r'PBKDF2\s*\([^)]{0,200}\)[^;]{0,300}',
],
"AES_USAGE": [
r'\.AES\.(?:encrypt|decrypt)\s*\([^)]{0,300}\)',
],
"RSA_USAGE": [
r'\.(?:RSA|PublicKey|PrivateKey)\.(?:encrypt|decrypt|sign|verify)\s*\([^)]{0,300}\)',
],
# ========== CREDENTIALS ==========
"USERNAME": [
r'(?:username|userName|USERNAME|user_name)\s*[:=]\s*["\']([^"\']{3,64})["\']',
],
"PASSWORD": [
r'(?:password|passwd|pwd|PASSWORD)\s*[:=]\s*["\']([^"\']{4,64})["\']',
],
# ========== INTERESTING ==========
"GITHUB_TOKENS": [
r'gh[pousr]_[A-Za-z0-9]{36,255}',
],
"GOOGLE_API_KEY": [
r'AIza[0-9A-Za-z\-_]{35}',
],
"FIREBASE_URL": [
r'https://[a-z0-9\-]+\.firebaseio\.com',
r'https://[a-z0-9\-]+\.firebaseapp\.com',
],
"AWS_KEY": [
r'AKIA[0-9A-Z]{16}',
],
"STRIPE_KEY": [
r'sk_live_[0-9a-zA-Z]{24,}',
r'pk_live_[0-9a-zA-Z]{24,}',
],
"TWILIO_KEY": [
r'SK[0-9a-fA-F]{32}',
],
"SENDGRID_KEY": [
r'SG\.[A-Za-z0-9_\-]{22}\.[A-Za-z0-9_\-]{43}',
],
"SLACK_TOKEN": [
r'xox[baprs]-[0-9A-Za-z\-]{10,}',
],
"IP_ADDRESS": [
r'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b',
],
"EMAIL": [
r'[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}',
],
"PHONE": [
r'(?:\+91[\-\s]?)?[6-9]\d{9}\b',
],
"AADHAAR_LIKE": [
r'\b[2-9]\d{3}\s?\d{4}\s?\d{4}\b',
],
}
# ==================== UTILITY FUNCTIONS ====================
def print_banner():
print(f"""{C.CY}{C.BOLD}
╔══════════════════════════════════════════════════════════════════╗
║ 🔍 UNIVERSAL JS ANALYZER 🔍 ║
║ ║
║ Website URL do aur ye script: ║
║ ✓ Saari JS files download karegi ║
║ ✓ Encryption keys nikaalegi ║
║ ✓ API endpoints dhundhegi ║
║ ✓ Crypto functions dikhayegi ║
║ ✓ Full report dega ║
╚══════════════════════════════════════════════════════════════════╝
{C.END}""")
def print_section(title, color=C.CY):
width = 70
print(f"\n{color}{C.BOLD}{'='*width}{C.END}")
print(f"{color}{C.BOLD} {title}{C.END}")
print(f"{color}{C.BOLD}{'='*width}{C.END}")
def print_finding(label, value, color=C.G):
"""Print a single finding with truncation"""
display = value if len(value) <= 200 else value[:200] + "..."
print(f" {color}[+] {label}{C.END}")
print(f" {C.W}{display}{C.END}")
1 044
`╔══════════════════════════════════════════════════════════════════╗
║ UNIVERSAL JS ANALYZER - By Abhigyan ║
║ ║
║ Run karo, website URL do, aur ye script: ║
║ ✓ Saari JS files download karegi ║
║ ✓ Encryption keys nikaalegi (AES, RSA, HMAC, etc.) ║
║ ✓ API endpoints dhundhegi ║
║ ✓ Crypto functions ka code dikhayegi ║
║ ✓ Secrets, salts, tokens extract karegi ║
║ ✓ Full report console me print karegi ║
╚══════════════════════════════════════════════════════════════════╝
"""
import requests
import re
import os
import json
import base64
from urllib.parse import urljoin, urlparse
from datetime import datetime
try:
from bs4 import BeautifulSoup
except ImportError:
print("[!] Installing beautifulsoup4...")
os.system("pip install beautifulsoup4")
from bs4 import BeautifulSoup
# ==================== COLORS (ANSI) ====================
class C:
R = '\033[91m' # Red
G = '\033[92m' # Green
Y = '\033[93m' # Yellow
B = '\033[94m' # Blue
M = '\033[95m' # Magenta
CY = '\033[96m' # Cyan
W = '\033[97m' # White
BOLD = '\033[1m'
END = '\033[0m'
# ==================== CONFIG ====================
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
HEADERS = {
"User-Agent": USER_AGENT,
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Connection": "keep-alive",
}
DOWNLOAD_TIMEOUT = 30
MAX_JS_SIZE = 20 * 1024 * 1024 # 20 MB per file
MAX_FILES = 200
# ==================== SEARCH PATTERNS ====================
SEARCH_PATTERNS = {
# ========== ENCRYPTION KEYS ==========
"AES_KEY": [
r'(?:AES_KEY|aesKey|AesKey|AESKEY)\s*[:=]\s*["\']([A-Za-z0-9+/=_\-]{16,64})["\']',
r'(?:AES_KEY|aesKey)\s*[:=]\s*[`"\']([^`"\']{16,64})[`"\']',
],
"AES_IV": [
r'(?:AES_IV|aesIv|AesIV|iv|IV)\s*[:=]\s*["\']([A-Za-z0-9+/=]{16})["\']',
],
"SECRET_KEY": [
r'(?:SECRET_KEY|secretKey|SecretKey|secret_key)\s*[:=]\s*["\']([^"\']{8,128})["\']',
],
"SECRET_CODE": [
r'(?:SECRET_CODE|secretCode|SecretCode)\s*[:=]\s*["\']([^"\']{8,128})["\']',
],
"API_KEY": [
r'(?:API_KEY|apiKey|ApiKey|api_key|apikey)\s*[:=]\s*["\']([A-Za-z0-9_\-]{16,128})["\']',
],
"ACCESS_TOKEN": [
r'(?:ACCESS_TOKEN|accessToken|access_token)\s*[:=]\s*["\']([A-Za-z0-9_\-\.]{20,})["\']',
],
"BEARER_TOKEN": [
r'(?:BEARER|bearer|Bearer)\s*[:=]\s*["\']([A-Za-z0-9_\-\.]{20,})["\']',
],
"JWT_SECRET": [
r'(?:JWT_SECRET|jwtSecret|JWT_KEY|jwtKey)\s*[:=]\s*["\']([^"\']{8,128})["\']',
],
"SALT": [
r'(?:salt|SALT|Sault|SAULT|saltValue|salt_value)\s*[:=]\s*["\']([^"\']{4,128})["\']',
],
"PRIVATE_KEY": [
r'-----BEGIN (?:RSA |EC |DSA )?PRIVATE KEY-----[\s\S]{100,3000}?-----END (?:RSA |EC |DSA )?PRIVATE KEY-----',
],
"PUBLIC_KEY": [
r'-----BEGIN PUBLIC KEY-----[\s\S]{100,3000}?-----END PUBLIC KEY-----',
],
"HMAC_KEY": [
r'(?:HMAC|hmac|HMAC_KEY)\s*[:=]\s*["\']([A-Za-z0-9+/=]{16,128})["\']',
],
"ENCRYPTION_KEY": [
r'(?:ENCRYPTION_KEY|encryptionKey|encryption_key)\s*[:=]\s*["\']([A-Za-z0-9+/=_\-]{16,128})["\']',
],
"SECRET_KEY_GENERIC": [
r'(?:secret|Secret)\s*[:=]\s*["\']([A-Za-z0-9+/=_\-#@!$%^&*]{8,128})["\']',
],
"BASIC_AUTH": [
r'Basic\s+([A-Za-z0-9+/=]{20,})',
],
# ========== API ENDPOINTS ==========1 044
IMEI INFO SRC
RANDI KA BACCHA
https://t.me/Abhigyan_Tools
https://t.me/QuantumCoder_Official
import re
import requests
from flask import Flask, request, jsonify
app = Flask(name)
ENDPOINT = "https://dash.imei.info/api/check/0/"
API_KEY = "f43f0d0c-27b0-408a-abd0-585fabea6adf"
TIMEOUT = 25
def sanitize(imei: str) -> str:
return re.sub(r"\D", "", imei)
def get_headers() -> dict:
return {
"Accept": "application/json, text/plain, */*",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
"User-Agent": "okhttp/4.9.2",
}
@app.route("/", methods=["GET"])
def imei_check():
imei = sanitize(request.args.get("imei", ""))
# Same validation as PHP
if not imei or len(imei) < 14 or len(imei) > 16:
return jsonify({
"success": False,
"error": "Invalid IMEI"
}), 400
params = {
"imei": imei,
"API_KEY": API_KEY
}
try:
response = requests.get(
ENDPOINT,
params=params,
headers=get_headers(),
timeout=TIMEOUT
)
response.raise_for_status()
try:
decoded = response.json()
except ValueError:
return jsonify({
"success": False,
"error": "Invalid response from provider"
}), 502
if not isinstance(decoded, (dict, list)):
return jsonify({
"success": False,
"error": "Invalid response from provider"
}), 502
return jsonify({
"success": True,
"data": decoded
})
except requests.RequestException:
return jsonify({
"success": False,
"error": "Service unavailable"
}), 503
if name == "main":
app.run(
host="0.0.0.0",
port=5000,
debug=False
)
LEAK BY ABHIGYAN
HAR JAGAH FAILA DO LEKIN CREDIT DE DENA JO CREDIT NAHIN DIYA WO 1 044
BIG SALE IS LIVE ON TELEGRAM
ab iss offer se tum log apna request Fulfill kr skte ho wo bhi cheap rates mein
1. TG Chat ID to Number
2. TG Username to Number
3. Vehicle to Number
4. Aadhaar to Info
5. India Number Info
6. IMEI Number Info
7. Pakistan Number Info
8. Pakistan CNIC Number Info
9. Pincode Info
10. IFSC Info
11. Vehicle Basic Info
12. Number to Name
13. Mail Info
14. PAN Info
15. Vehicle to Number
16. Russian OSINT
17. Chassis to Vehicle
18. Engine to Vehicle
19. Aadhaar to PDF (UIDAI Website Features)
20. Aadhaar to Phone Number (eShram)
21. DL to Info
22. DL to Number
23. Number to Voter ID (with OTP)
24. Hi-Tek Number to Info
25. ICMR Number to Info
26. Number to RC
27. Num2RC + Veh2Num
28. Num to UPI
29. Vehicle Info
30. Aadhaar to PAN Mask
31. Aadhaar to Ration
32. PAN Info
33. PAN to GST Info
34. GST Info
35. GST to PAN
36. Name to GST Info
37. Pincode Info
38. Ration to Info
39. Voter Info
40. Mail Info
41. IP Info
42. IMEI Info
43. IFSC Info
44. Pak SIM Info
45. Bharatgas Info
46. HP Gas Info
47. Indane Gas Info
48. RC to PDF
Sab pr 50% off haiAPIs and src both available Message here @ykguycyber USDT/UPI ACCEPT
1 044
Hi everyone
Main hu Abhigyan
Instagram id pr bhi support dhika do new banaya huhttps://www.instagram.com/_abhigyanofficial_?stkn=MWZheXZoNWp4bjU4eQ== Follow
1 044
Repost from N/a
🔥 WORLD WIDE OSINT ENGINE — 100% FREE & UNLIMITED 🚀
Sabhi paid OSINT tools aur limit wale bots ko chhoro! Ab saari intelligence checks ek hi jagah par bina kisi credit system ya restriction ke milti hain. ⚡
🔍 Active Modules:
• 📱 Phone & Telegram ID Lookup
• 🚗 Vehicle RC & Owner Intelligence (Auto-Failover S1/S2)
• 🪪 Driving Licence & DOB Verification
• 📑 PAN Card, GSTIN & UPI Lookup
• 🗳️ Voter ID (EPIC) & Ration Card Details
• 🛢️ Bharat, HP & Indane Gas Details
• 🌐 Deep Cyber Breach & Leak Search
💎 Key Perks:
✅ 100% Free Lifetime Access
⚡ Lightning-fast 0.05s Instant SQLite Cache
🤖 Auto Deep Chain + Visual Mindmap & HTML Dossier
⌨️ Direct CLI Shortcuts (rc, pan, dl)
👇 Start investigating right now:
🤖 Bot: @WORLD_WIDE_OSINT_BOT
1 044
Repost from N/a
https://t.me/AbhigyanOsintBot
This bot is in testing
Try and send your feedback here for any thing add or remove
@Kz40x
1 044
Repost from N/a
1. Mobile Number Lookup
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=number&number=9876543210
2. Telegram to Number
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=tg_to_number&number=vishalboss123
3. Aadhaar to Number
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=aadhar_to_number&number=123456789012
4. Aadhaar Ration Lookup
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=aadhar_ration&aadhaar=123456789012
5. Ration Card Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=ration_info&ration=RC12345678
6. PAN Card Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=pan&pan=ABCDE1234F
7. GST Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=gst&gstin=22AAAAA0000A1Z5
8. PAN to GST
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=pan_to_gst&pan=ABCDE1234F
9. Vehicle Info 1
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=vehicle1&number=MH01AB1234
10. Vehicle Info 2
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=vehicle2&number=MH01AB1234
11. Vehicle Owner Number
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=vehicle_owner_number&number=MH01AB1234
12. Number to Vehicle
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=number2vehicle&mobileNo=9876543210
13. DL Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=dlinfo&dl_no=HR0620160001234&dob=15/08/1990
14. DL to Number
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=dl2num&dl_no=HR0620160001234&dob=15/08/1990
15. Voter Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=voter&epic=ABC1234567
16. UPI Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=upi&upi=9876543210@ybl
17. Leak Lookup
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=leak&query=yadavsk1910@gmail.com
18. BPCL Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=bpcl&number=9876543210
19. HPCL Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=hpcl&number=9876543210
20. Indane Info
https://techvishalboss.com/api/v1/lookup.php?key=YOUR_CLIENT_KEY&service=indane&number=9876543210
Buy any api message here
@Kz40x
Keys is paid
1 044
Repost from N/a
ALL IN ONE LPG INFO API AVAILABLE
BHARAT GAS
INDANE GAS
HP GAS
PRICE JUST 500₹
MESSAGE HERE @northline_x
1 044
Hasne wali emoji dene wale ka and hot dog wale ka gaand phaad dunga lund ke paidaish saalo raandwo
