
Força-bruta de Wordlist para Senhas de Download do GoFile (gofile.io)
TUI de cliente IRC do final dos anos 90 para percorrer wordlists contra um compartilhamento GoFile protegido por senha.
Ele se comunica apenas com a API REST documentada e trata os limites de taxa como regra rígida: requisições sequenciais, um intervalo padrão conservador, cooldown exponencial em 429 / error-rateLimit, e uma pausa automática após 429s repetidos para que o cliente não acabe levando um banimento de IP.
Autor: @abraxas_null · github.com/abraxas · abraxaslabs.tech · [email protected]
Repositório: github.com/abraxas/GoFileX

A captura de tela é uma sessão ao vivo. O id do compartilhamento, o token da API, o UUID da conta e a senha encontrada estão censurados. A caçada que a produziu ainda está ativa; veja as notas e a série de posts no blog abaixo.
@YogSoth0 anunciou uma caça ao tesouro em homenagem ao TESO: GoFile primeiro, binário criptografado depois. A camada GoFile é um compartilhamento público protegido por senha. A API expõe esse portão como GET /contents/{id}?password=<sha256-hex>. GoFileX é o cliente que escrevi para poder atravessar esse portão sem estourar a cota de listagem não publicada e ganhar um banimento de IP.
Write-up (senha do compartilhamento omitida):
Notas complementares neste repositório: docs/this-is-not-your-password.md.
Use isto contra compartilhamentos que você possui ou tem permissão explícita para testar. Regras de caça ao tesouro / CTF ainda contam como permissão. Ficar em loop apertado em GET /contents até o GoFile esquecer seu IP não conta.
De gofile.io/api e do cliente web oficial (wt.obf.js, /myprofile):
| Regra | Como o GoFileX se comporta |
|---|---|
| Uma conta, reutilize o token | POST /accounts uma vez por sessão; armazenado em ~/.gofilex/sessions/ |
GET /contents/{id} tem selo Premium | Envia o mesmo X-Website-Token que o cliente web oficial usa para que um convidado possa ler um compartilhamento público. Um token Premium de /myprofile é o caminho documentado. |
| O parâmetro de senha é o hex SHA-256 do texto simples | Cada tentativa é hasheada antes de sair da máquina |
error-rateLimit / HTTP 429 → recuar | Padrão de 3s entre chamadas de listagem (piso 1.5s), 1s de intervalo entre quaisquer chamadas de API. 429 usa cooldown exponencial 15s × 2ⁿ (limite 8 min) e dobra a velocidade de cruzeiro; pausa após 3 429s consecutivos |
| Os limites exatos não são publicados; 429s repetidos podem banir o IP | O piso do intervalo é 1.5s. /rate não irá abaixo disso. Timeout pausa até /heartbeat |
GET /servers ≤ 1 / 10s | Não é chamado |
O comprimento da senha é filtrado localmente para o intervalo documentado de 4–100 caracteres, para que linhas curtas/longas nunca gastem uma chamada de listagem.
Leitura adicional sobre o protocolo:
Python 3.10+ (python.org). Clone de 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 opcionais:
.venv/bin/python -m gofilex \
--session ctf1 \
--target https://gofile.io/d/YOURSHARE \
--wordlist ~/lists/high-signal.txt \
--wordlist ~/lists/nordpass.txt
Uma conta de convidado é criada em /guest se a sessão não tiver token. Guarde esse token — para convidados, é a única forma de voltar à conta. Se você já tem uma conta GoFile (especialmente Premium), cole o token de gofile.io/myprofile:
/token YOUR_API_TOKEN
Não há alvo padrão. Aponte o cliente para um compartilhamento com --target ou /target antes de /heartbeat ou /start.
| Comando | O que faz |
|---|---|
/help | Lista de comandos |
/heartbeat | Um GET /contents (conta para o orçamento de listagem; sem retentativas). /probe é um alias |
/wl add FILE [FILE…] | Enfileira wordlists; elas rodam em ordem, retomando da linha salva |
/wl all | Enfileira todas as listas encontradas em wordlists/custom/ e depois wordlists/public/ |
/start /pause /resume /stop | Percorre a fila |
/try password | Tentativa única |
/rate 5 | Segundos entre chamadas de listagem (mínimo 1.5, padrão 3) |
/stats | Atualiza GET /accounts/{id} (uso / nível) |
/dl [dir] | Baixa arquivos após um acerto |
/session name | Troca entre sessões reutilizáveis |
/target <url|id> | Troca o compartilhamento GoFile; o progresso é mantido por id |
/targets | Lista todos os ids GoFile armazenados nesta sessão |
/quit | Salva e sai |
F1 = ajuda, Ctrl-S = iniciar, Ctrl-P = pausar.
Tudo o que importa é gravado em ~/.gofilex/sessions/<name>.json após cada tentativa de senha (substituição atômica, modo 0600). Uma queda de energia ou /quit deixa o mesmo checkpoint.
Cada sessão armazena:
idle / paused / running / found)python -m gofilex reabre a última sessão (~/.gofilex/active.json). Use --session other ou /session other para uma caçada separada. /target para outro id cria um novo job e copia os caminhos da wordlist atual (o progresso começa em 0). Voltar restaura a linha daquele id.
O loop não inicia automaticamente após uma queda (para que um IP GoFile morto não seja martelado). /start continua a partir da linha salva.
Instalações anteriores que gravavam em ~/.onefilex/ são migradas para ~/.gofilex/ na primeira execução.
O GoFileX não inclui wordlists. Traga as suas. Veja wordlists/README.md para fontes públicas: