
Fuerza bruta de listas de palabras para contraseñas de descarga de GoFile (gofile.io)
Cliente TUI de IRC de finales de los 90 para recorrer wordlists contra un recurso compartido de GoFile protegido por contraseña.
Solo se comunica con la API REST documentada y trata
los límites de velocidad como una regla estricta: solicitudes secuenciales, un intervalo
predeterminado conservador, enfriamiento exponencial ante 429 / error-rateLimit, y una pausa
automática tras 429s repetidos para que el cliente no pueda caer en un baneo de IP.
Autor: @abraxas_null · github.com/abraxas · abraxaslabs.tech · [email protected]
Repo: github.com/abraxas/GoFileX

La captura de pantalla es una sesión en vivo. El id del recurso compartido, el token de la API, el UUID de la cuenta y la contraseña encontrada están censurados. La búsqueda que la produjo sigue activa; consulta las notas y la serie de blogs a continuación.
@YogSoth0 anunció una
búsqueda del tesoro en homenaje a TESO: primero GoFile, después un binario cifrado. La
capa de GoFile es un recurso compartido público protegido por contraseña. La API expone esa puerta
como GET /contents/{id}?password=<sha256-hex>. GoFileX es el cliente que
escribí para poder recorrer esa puerta sin reventar la cuota de listado no publicada
y ganarme un baneo de IP.
Artículo (contraseña del recurso compartido omitida):
Notas complementarias en este repo: docs/this-is-not-your-password.md.
Usa esto contra recursos compartidos que poseas o para los que tengas permiso
explícito de probar. Las reglas de búsqueda del tesoro / CTF también cuentan como permiso. Hacer un bucle
ajustado de GET /contents hasta que GoFile olvide tu IP
no lo es.
De gofile.io/api y el cliente web oficial
(wt.obf.js,
/myprofile):
| Regla | Cómo se comporta GoFileX |
|---|---|
| Una cuenta, reutilizar el token | POST /accounts una vez por sesión; almacenado en ~/.gofilex/sessions/ |
GET /contents/{id} tiene la insignia Premium | Envía el mismo X-Website-Token que usa el cliente web oficial para que un invitado pueda leer un recurso compartido público. Un token Premium de /myprofile es la ruta documentada. |
| El parámetro de contraseña es el hex SHA-256 del texto plano | Cada intento se hashea antes de salir de la máquina |
error-rateLimit / HTTP 429 → retroceder | Por defecto 3s entre llamadas de listado (mínimo 1.5s), 1s de separación entre cualquier llamada a la API. El 429 usa enfriamiento exponencial 15s × 2ⁿ (tope 8 min) y duplica la velocidad de crucero; pausa tras 3 429s consecutivos |
| Los límites exactos no están publicados; los 429s repetidos pueden banear la IP | El mínimo del intervalo es 1.5s. /rate no bajará de ahí. El timeout pausa hasta /heartbeat |
GET /servers ≤ 1 / 10s | No se llama |
La longitud de la contraseña se filtra localmente al rango documentado de 4–100 caracteres para que las líneas cortas/largas nunca gasten una llamada de listado.
Lecturas adicionales sobre el protocolo:
Python 3.10+ (python.org). Clona desde github.com/abraxas/GoFileX:
git clone [email protected]:abraxas/GoFileX.git
cd GoFileX
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python -m gofilex
Flags opcionales:
.venv/bin/python -m gofilex \
--session ctf1 \
--target https://gofile.io/d/YOURSHARE \
--wordlist ~/lists/high-signal.txt \
--wordlist ~/lists/nordpass.txt
Se crea una cuenta de invitado en /guest si la sesión no tiene token. Conserva
ese token — para los invitados es la única forma de volver a la cuenta. Si
ya tienes una cuenta de GoFile (especialmente Premium), pega el token
de gofile.io/myprofile:
/token YOUR_API_TOKEN
No hay objetivo predeterminado. Apunta el cliente a un recurso compartido con --target
o /target antes de /heartbeat o /start.
| Comando | Qué hace |
|---|---|
/help | Lista de comandos |
/heartbeat | Un GET /contents (cuenta para el presupuesto de listado; sin reintentos). /probe es un alias |
/wl add FILE [FILE…] | Encola wordlists; se ejecutan en orden, reanudando desde la línea guardada |
/wl all | Encola todas las listas encontradas bajo wordlists/custom/ y luego wordlists/public/ |
/start /pause /resume /stop | Recorre la cola |
/try password | Intento único |
/rate 5 | Segundos entre llamadas de listado (mínimo 1.5, por defecto 3) |
/stats | Actualiza GET /accounts/{id} (uso / nivel) |
/dl [dir] | Descarga archivos tras un acierto |
/session name | Cambia entre sesiones reutilizables |
/target <url|id> | Cambia de recurso compartido de GoFile; el progreso se mantiene por id |
/targets | Lista cada id de GoFile almacenado en esta sesión |
/quit | Guarda y sale |
F1 = ayuda, Ctrl-S = iniciar, Ctrl-P = pausar.
Todo lo importante se escribe en ~/.gofilex/sessions/<name>.json
tras cada intento de contraseña (reemplazo atómico, modo 0600). Un corte
de energía o /quit deja el mismo punto de control.
Cada sesión almacena:
idle / paused / running / found)python -m gofilex reabre la última sesión (~/.gofilex/active.json).
Usa --session other o /session other para una búsqueda separada. /target
a otro id crea un nuevo trabajo y copia las rutas de la wordlist actual
(el progreso empieza en 0). Volver atrás restaura la línea de ese id.
El bucle no se inicia automáticamente tras un fallo (para que una IP de GoFile muerta
no sea martilleada). /start continúa desde la línea guardada.
Las instalaciones anteriores que escribían ~/.onefilex/ se migran a
~/.gofilex/ en el primer arranque.
GoFileX no incluye wordlists. Trae las tuyas. Consulta wordlists/README.md para fuentes públicas: