
Wordlist-Bruteforcer für GoFile (gofile.io) Download-Passwörter
IRC-Client-TUI im Stil der späten 90er zum Durchlaufen von Wortlisten gegen eine passwortgeschützte GoFile-Freigabe.
Es kommuniziert ausschließlich mit der dokumentierten REST-API und behandelt
Rate-Limits als harte Regel: sequenzielle Anfragen, ein konservatives Standardintervall,
exponentieller Cooldown bei 429 / error-rateLimit und eine automatische
Pause nach wiederholten 429ern, damit der Client nicht in einen IP-Bann läuft.
Autor: @abraxas_null · github.com/abraxas · abraxaslabs.tech · [email protected]
Repo: github.com/abraxas/GoFileX

Der Screenshot zeigt eine Live-Session. Share-ID, API-Token, Account-UUID und gefundenes Passwort sind redigiert. Die Jagd, die ihn hervorgebracht hat, läuft noch; siehe die Notizen und die Blog-Serie unten.
@YogSoth0 hat eine
TESO-Hommage-Schnitzeljagd angekündigt: erst GoFile, dann verschlüsselte Binärdatei. Die
GoFile-Ebene ist eine passwortgeschützte öffentliche Freigabe. Die API exponiert dieses Gate
als GET /contents/{id}?password=<sha256-hex>. GoFileX ist der Client, den ich
geschrieben habe, um dieses Gate durchlaufen zu können, ohne das nicht veröffentlichte Listing-
Kontingent zu sprengen und einen IP-Bann zu kassieren.
Write-up (Share-Passwort zurückgehalten):
Begleitende Notizen in diesem Repo: docs/this-is-not-your-password.md.
Verwende dies gegen Freigaben, die dir gehören oder für die du ausdrückliche Erlaubnis
zum Testen hast. Schnitzeljagd- / CTF-Regeln zählen weiterhin als Erlaubnis. GET /contents
in einer engen Schleife aufzurufen, bis GoFile deine IP vergisst,
nicht.
Aus gofile.io/api und dem offiziellen Web-Client
(wt.obf.js,
/myprofile):
| Regel | Verhalten von GoFileX |
|---|---|
| Ein Account, Token wiederverwenden | POST /accounts einmal pro Session; gespeichert in ~/.gofilex/sessions/ |
GET /contents/{id} ist mit Premium-Badge versehen | Sendet denselben X-Website-Token, den der offizielle Web-Client verwendet, damit ein Gast eine öffentliche Freigabe lesen kann. Ein Premium-Token von /myprofile ist der dokumentierte Weg. |
| Passwort-Parameter ist SHA-256-Hex des Klartexts | Jeder Versuch wird gehasht, bevor er die Maschine verlässt |
error-rateLimit / HTTP 429 → Backoff | Standardmäßig 3s zwischen Listing-Aufrufen (Untergrenze 1,5s), 1s Abstand zwischen allen API-Aufrufen. 429 verwendet exponentiellen Cooldown 15s × 2ⁿ (Cap 8 Min) und verdoppelt die Reisegeschwindigkeit; Pause nach 3 aufeinanderfolgenden 429ern |
| Genaue Limits sind nicht veröffentlicht; wiederholte 429er können zu IP-Bann führen | Intervall-Untergrenze ist 1,5s. /rate geht nicht darunter. Timeout pausiert bis /heartbeat |
GET /servers ≤ 1 / 10s | Wird nicht aufgerufen |
Die Passwortlänge wird lokal auf den dokumentierten Bereich von 4–100 Zeichen gefiltert, damit kurze/lange Zeilen niemals einen Listing-Aufruf verbrauchen.
Weiterführende Lektüre zum Protokoll:
Python 3.10+ (python.org). Klone von 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
Optionale Flags:
.venv/bin/python -m gofilex \
--session ctf1 \
--target https://gofile.io/d/YOURSHARE \
--wordlist ~/lists/high-signal.txt \
--wordlist ~/lists/nordpass.txt
Ein Gast-Account wird auf /guest erstellt, wenn die Session keinen Token hat. Behalte
diesen Token — für Gäste ist er der einzige Weg zurück in den Account. Wenn
du bereits einen GoFile-Account hast (insbesondere Premium), füge den Token
von gofile.io/myprofile ein:
/token YOUR_API_TOKEN
Es gibt kein Standardziel. Richte den Client mit --target
oder /target auf eine Freigabe, bevor du /heartbeat oder /start ausführst.
| Befehl | Was er tut |
|---|---|
/help | Befehlsliste |
/heartbeat | Ein GET /contents (zählt zum Listing-Budget; keine Wiederholungen). /probe ist ein Alias |
/wl add FILE [FILE…] | Wortlisten in die Warteschlange stellen; sie laufen der Reihe nach, Fortsetzung ab der gespeicherten Zeile |
/wl all | Alle Listen unter wordlists/custom/ und dann wordlists/public/ in die Warteschlange stellen |
/start /pause /resume /stop | Die Warteschlange durchlaufen |
/try password | Einzelner Versuch |
/rate 5 | Sekunden zwischen Listing-Aufrufen (Minimum 1,5, Standard 3) |
/stats | GET /accounts/{id} aktualisieren (Nutzung / Tarif) |
/dl [dir] | Dateien nach einem Treffer herunterladen |
/session name | Wiederverwendbare Sessions wechseln |
/target <url|id> | GoFile-Freigabe wechseln; Fortschritt wird pro ID beibehalten |
/targets | Alle in dieser Session gespeicherten GoFile-IDs auflisten |
/quit | Speichern und verlassen |
F1 = Hilfe, Ctrl-S = Start, Ctrl-P = Pause.
Alles Wichtige wird nach jedem Passwortversuch in ~/.gofilex/sessions/<name>.json
geschrieben (atomarer Ersatz, Modus 0600). Ein Stromausfall oder /quit hinterlässt
denselben Checkpoint.
Jede Session speichert:
idle / paused / running / found)python -m gofilex öffnet die letzte Session erneut (~/.gofilex/active.json).
Verwende --session other oder /session other für eine separate Jagd. /target
auf eine andere ID erstellt einen neuen Job und kopiert die aktuellen Wortlisten-Pfade
(Fortschritt beginnt bei 0). Zurückwechseln stellt die Zeile dieser ID wieder her.
Die Schleife startet nicht automatisch nach einem Absturz (damit eine tote GoFile-IP
nicht gehämmert wird). /start setzt ab der gespeicherten Zeile fort.
Frühere Installationen, die ~/.onefilex/ geschrieben haben, werden beim ersten Start nach
~/.gofilex/ migriert.