⚠️ LEGAL DISCLAIMER / AVISO LEGALThis tool is intended exclusively for authorized penetration testing, security audits on systems you own or have explicit written permission to test, and educational/research purposes. Unauthorized use against systems you do not own or have permission to test is illegal and may result in criminal prosecution. The author assumes no liability for misuse.
- Overview
- Features
- Requirements
- Installation
- Input Format
- Usage
- Output Files
- Configuration
- How It Works
- Troubleshooting
cPanel Credential Checker is a Python-based multi-threaded tool for security professionals to test cPanel login credentials across multiple domains simultaneously. It categorizes results (valid, 2FA-protected, invalid, errors) and provides real-time progress tracking.
Use cases:
- Security audits of web hosting accounts you manage
- Penetration testing engagements with written authorization
- Verifying credential hygiene on your own infrastructure
- CTF (Capture The Flag) challenges
- Multi-threaded: Up to 120 concurrent workers for fast bulk testing
- 2FA Detection: Identifies accounts protected by two-factor authentication
- Smart Categorization: Sorts results into 4 categories automatically
- Wide Port Support: Tests across cPanel ports
2083,2082,2086,2087,2095,2096 - Auto Encoding Detection: Handles input files with any character encoding via
chardet - Randomized Headers: Rotates User-Agent strings to avoid rate limiting
- SSL Flexible: Works with self-signed and invalid SSL certificates
- Rich UI: Live progress bar and colored console output
- Cross-platform: Windows, Linux, macOS compatible
| Requirement | Version |
|---|---|
| Python | 3.7 or higher |
| requests | >= 2.25.0 |
| colorama | >= 0.4.4 |
| chardet | >= 4.0.0 |
| rich | >= 10.0.0 |
| urllib3 | >= 1.26.0 |
git clone https://github.com/ByteCodeSecure/cpanel-checker.git
cd cpanel-checkerpip install requests colorama chardet rich urllib3Or using a requirements file:
pip install -r requirements.txtpython cpnaelchecker.py --helpPrepare a plain text file (.txt) where each line contains credentials in one of these formats:
Colon-separated:
domain.com:username:password
subdomain.example.com:admin:mypassword123
192.168.1.10:user@domain.com:SecurePass!
Pipe-separated:
domain.com|username|password
example.com|admin|password123
Rules:
- One credential set per line
- Domain can be a hostname, IP address, or URL
- Username can be a plain username or email format
- Lines that don't match the format are skipped automatically
- Blank lines are ignored
Example file (credentials.txt):
example.com:john:password123
mysite.org:admin:admin2024
192.168.0.5|webmaster|P@ssw0rd!
test.hosting.com:user@test.hosting.com:letmein
Simply run the script with no arguments:
python cpnaelchecker.pyYou will be prompted to enter:
- Path to your credentials file
- Number of threads (recommended: 40–80, range: 20–120)
[?] Enter the path to your credentials file: /path/to/credentials.txt
[?] Enter number of threads [40-80 recommended]: 60
Pass the credentials file directly as the first argument:
python cpnaelchecker.py credentials.txtYou will still be prompted for the thread count.
$ python cpnaelchecker.py combo.txt
╔═══════════════════════════════════════╗
║ cPanel Credential Checker ║
╚═══════════════════════════════════════╝
[*] Loaded 1500 credentials from combo.txt
[*] Detected encoding: utf-8
[?] Threads [20-120, recommended 40-80]: 60
[*] Starting with 60 threads...
[+] VALID → domain.com:admin:password123
[!] 2FA → secure.com:user:mypassword
[-] INVALID → test.com:admin:wrongpass
[~] ERROR → unreachable.com:admin:pass (timeout)
Progress: ████████████████████ 100% | 1500/1500 | Valid: 12 | 2FA: 3
All results are saved in a Results/ subdirectory (created automatically):
| File | Description |
|---|---|
Results/valid.txt |
Successfully authenticated credentials (no 2FA) |
Results/2fa.txt |
Credentials valid but protected by two-factor authentication |
Results/invalid.txt |
Credentials that failed authentication |
Results/error.txt |
Connections that timed out or encountered errors |
Format inside output files:
domain.com:username:password
| Threads | Use Case |
|---|---|
| 20–40 | Slow/unstable internet connection |
| 40–60 | Standard broadband connection |
| 60–80 | Fast connection / VPS environment |
| 80–120 | High-bandwidth server environment |
Higher thread counts increase speed but also increase the risk of IP-based rate limiting or temporary bans by target servers.
The default connection timeout is 15 seconds per request. This is hardcoded in the script but can be modified in the cpcheck() function.
- Load credentials: Reads the input file, auto-detects encoding, parses each line
- Build URL: Constructs the cPanel login endpoint (tries common ports: 2083, 2082, etc.)
- Send request: POSTs login form data with randomized headers
- Analyze response:
- Checks JSON status field
- Searches for session/security tokens in the response
- Scans for 2FA keywords:
twofactor,2fa,tfa,authenticator - Detects blocked accounts:
cphulk,suspended,locked
- Categorize: Writes result to the appropriate output file
- Report: Updates console with real-time progress
| Problem | Solution |
|---|---|
ModuleNotFoundError |
Run pip install requests colorama chardet rich urllib3 |
| All results are errors | Check internet connection; target server may be unreachable |
| Script hangs | Reduce thread count; some hosts limit concurrent connections |
| UnicodeDecodeError | The tool auto-detects encoding; ensure chardet is installed |
| Permission denied on Results/ | Run with appropriate permissions or change directory |
- Descripción General
- Características
- Requisitos
- Instalación
- Formato de Entrada
- Uso
- Archivos de Salida
- Configuración
- Cómo Funciona
- Solución de Problemas
cPanel Credential Checker es una herramienta Python multi-hilo diseñada para profesionales de seguridad que necesitan probar credenciales de acceso a cPanel en múltiples dominios de forma simultánea. Clasifica los resultados automáticamente (válidos, con 2FA, inválidos, errores) y ofrece seguimiento de progreso en tiempo real.
Casos de uso legítimos:
- Auditorías de seguridad en cuentas de hosting que administras
- Pruebas de penetración con autorización escrita previa
- Verificación de higiene de credenciales en tu propia infraestructura
- Desafíos CTF (Capture The Flag)
- Multi-hilo: Hasta 120 workers simultáneos para pruebas masivas rápidas
- Detección de 2FA: Identifica cuentas protegidas con autenticación de dos factores
- Categorización inteligente: Ordena resultados en 4 categorías automáticamente
- Soporte amplio de puertos: Prueba en puertos cPanel
2083,2082,2086,2087,2095,2096 - Detección automática de codificación: Maneja archivos con cualquier codificación mediante
chardet - Headers aleatorios: Rota User-Agent strings para evitar limitación de velocidad
- SSL flexible: Funciona con certificados SSL autofirmados o inválidos
- Interfaz Rich: Barra de progreso en vivo y salida en consola a color
- Multiplataforma: Compatible con Windows, Linux y macOS
| Requisito | Versión |
|---|---|
| Python | 3.7 o superior |
| requests | >= 2.25.0 |
| colorama | >= 0.4.4 |
| chardet | >= 4.0.0 |
| rich | >= 10.0.0 |
| urllib3 | >= 1.26.0 |
git clone https://github.com/ByteCodeSecure/cpanel-checker.git
cd cpanel-checkerpip install requests colorama chardet rich urllib3O usando un archivo de requisitos:
pip install -r requirements.txtpython cpnaelchecker.py --helpPrepara un archivo de texto plano (.txt) donde cada línea contenga credenciales en uno de estos formatos:
Separado por dos puntos:
dominio.com:usuario:contraseña
subdominio.ejemplo.com:admin:micontraseña123
192.168.1.10:usuario@dominio.com:ContraseñaSegura!
Separado por barra vertical:
dominio.com|usuario|contraseña
ejemplo.com|admin|contraseña123
Reglas:
- Un conjunto de credenciales por línea
- El dominio puede ser un nombre de host, dirección IP o URL
- El nombre de usuario puede ser simple o en formato de correo electrónico
- Las líneas que no coinciden con el formato se omiten automáticamente
- Las líneas en blanco se ignoran
Archivo de ejemplo (credenciales.txt):
ejemplo.com:juan:contraseña123
misitioweb.org:admin:admin2024
192.168.0.5|webmaster|P@ssw0rd!
test.hosting.com:usuario@test.hosting.com:entrar
Ejecuta el script sin argumentos:
python cpnaelchecker.pySe te pedirá ingresar:
- Ruta al archivo de credenciales
- Número de hilos (recomendado: 40–80, rango: 20–120)
[?] Ingresa la ruta al archivo de credenciales: /ruta/a/credenciales.txt
[?] Ingresa el número de hilos [40-80 recomendado]: 60
Pasa el archivo de credenciales directamente como primer argumento:
python cpnaelchecker.py credenciales.txtAún se te pedirá el número de hilos.
$ python cpnaelchecker.py combo.txt
╔═══════════════════════════════════════╗
║ cPanel Credential Checker ║
╚═══════════════════════════════════════╝
[*] Cargadas 1500 credenciales desde combo.txt
[*] Codificación detectada: utf-8
[?] Hilos [20-120, recomendado 40-80]: 60
[*] Iniciando con 60 hilos...
[+] VÁLIDO → dominio.com:admin:contraseña123
[!] 2FA → seguro.com:usuario:micontraseña
[-] INVÁLIDO → test.com:admin:contraseñamala
[~] ERROR → inaccesible.com:admin:pass (timeout)
Progreso: ████████████████████ 100% | 1500/1500 | Válidos: 12 | 2FA: 3
Todos los resultados se guardan en el subdirectorio Results/ (creado automáticamente):
| Archivo | Descripción |
|---|---|
Results/valid.txt |
Credenciales autenticadas exitosamente (sin 2FA) |
Results/2fa.txt |
Credenciales válidas pero protegidas por autenticación de dos factores |
Results/invalid.txt |
Credenciales que fallaron en la autenticación |
Results/error.txt |
Conexiones con timeout o que encontraron errores |
Formato dentro de los archivos de salida:
dominio.com:usuario:contraseña
| Hilos | Caso de Uso |
|---|---|
| 20–40 | Conexión a internet lenta o inestable |
| 40–60 | Conexión de banda ancha estándar |
| 60–80 | Conexión rápida / entorno VPS |
| 80–120 | Entorno de servidor de alto ancho de banda |
Un mayor número de hilos aumenta la velocidad pero también incrementa el riesgo de limitación de velocidad basada en IP o bloqueos temporales por parte de los servidores objetivo.
El timeout de conexión predeterminado es de 15 segundos por solicitud. Está codificado en el script pero puede modificarse en la función cpcheck().
- Cargar credenciales: Lee el archivo de entrada, detecta la codificación automáticamente, analiza cada línea
- Construir URL: Construye el endpoint de inicio de sesión de cPanel (prueba puertos comunes: 2083, 2082, etc.)
- Enviar solicitud: Envía datos del formulario de inicio de sesión mediante POST con headers aleatorios
- Analizar respuesta:
- Verifica el campo de estado JSON
- Busca tokens de sesión/seguridad en la respuesta
- Escanea palabras clave de 2FA:
twofactor,2fa,tfa,authenticator - Detecta cuentas bloqueadas:
cphulk,suspended,locked
- Categorizar: Escribe el resultado en el archivo de salida correspondiente
- Reportar: Actualiza la consola con el progreso en tiempo real
| Problema | Solución |
|---|---|
ModuleNotFoundError |
Ejecuta pip install requests colorama chardet rich urllib3 |
| Todos los resultados son errores | Verifica la conexión a internet; el servidor objetivo puede ser inaccesible |
| El script se congela | Reduce el número de hilos; algunos hosts limitan las conexiones simultáneas |
| UnicodeDecodeError | La herramienta detecta la codificación automáticamente; asegúrate de tener chardet instalado |
| Permiso denegado en Results/ | Ejecuta con los permisos apropiados o cambia de directorio |
This project is licensed under the MIT License. See LICENSE for details.
Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.