ESET-KeyGen - Trial-Key & Account generator for ESET Products
Using this tool may violate ESET's terms of service and could have legal implications.
The authors and contributors are not responsible for any misuse or damage caused by this project.
Use at your own risk and only on systems you own or have explicit permission to test.
The fastest way to get the web dashboard running on a Linux server — no manual Python, Chrome or library setup required.
curl -fsSL https://get.docker.com | shgit clone https://github.com/chrisdaloa/etkg.git
cd etkg
ETKG_PASSWORD=yourpassword docker compose up -d --buildPassword is optional. If you omit
ETKG_PASSWORD=..., the dashboard starts without authentication and is accessible to anyone who can reach port 8888. Only skip it if the server is on a private/trusted network.Without password:
docker compose up -d --build
Open http://<SERVER-IP>:8888 in your browser.
| Task | Command |
|---|---|
| Update to latest code | git pull && docker compose restart |
Rebuild image (after requirements.txt changes) |
docker compose up -d --build |
| View live logs | docker compose logs -f |
| Stop | docker compose down |
Generated files (
ESET KEYS *.txt,eset-keygen-config.json) are saved in the project directory on the host and survive restarts and updates.
If you manage containers with Portainer, you can deploy directly from the GitHub repository without cloning manually.
- Stacks → Add Stack
- Build method: Git Repository
- Repository URL:
https://github.com/chrisdaloa/etkg - Repository reference:
refs/heads/main - Compose path:
docker-compose.yml - Environment variables: add
ETKG_PASSWORD=yourpassword(optional — leave empty for no auth) - Deploy the stack
To update after a git push: Stacks → etkg → Pull and redeploy.
This fork adds the following features on top of the original project:
- Italian UI support — all button text variants for the Italian ESET interface are recognised (
continua,termina per ora,finisci per ora) - Disabled button handling — the click logic now waits for buttons to become enabled instead of throwing
ElementClickInterceptedException; falls back to a JS click when an overlay intercepts the element
A browser-based UI that lets you run the script from any device without a terminal.
Requires Docker with the Compose plugin.
git clone https://github.com/chrisdaloa/etkg.git
cd etkg
ETKG_PASSWORD=yourpassword docker compose up -d --buildPassword is optional. Omit
ETKG_PASSWORD=...to run without authentication.
Open http://<SERVER-IP>:8000 in your browser.
| Task | Command |
|---|---|
| Update code | git pull && docker compose restart |
Rebuild image (after requirements.txt changes) |
docker compose up -d --build |
| View logs | docker compose logs -f |
| Stop | docker compose down |
The container uses Chromium (installed from apt, chromedriver version always in sync).
All generated files (ESET KEYS *.txt, eset-keygen-config.json, ESET-KeyGen.log) are written to the project directory on the host via bind-mount and persist across restarts.
Install dependencies:
pip install fastapi "uvicorn[standard]" python-multipart
# or simply:
pip install -r requirements.txtStart manually:
uvicorn webapp:app --host 0.0.0.0 --port 8000
# with password protection:
ETKG_PASSWORD=yourpassword uvicorn webapp:app --host 0.0.0.0 --port 8000Run as a systemd service (auto-start on boot):
# /etc/systemd/system/etkg-web.service
[Unit]
Description=ESET KeyGen Web Dashboard
After=network.target
[Service]
WorkingDirectory=/root/etkg
ExecStart=/root/etkg/venv/bin/uvicorn webapp:app --host 0.0.0.0 --port 8000
Restart=on-failure
RestartSec=5
Environment="ETKG_PASSWORD=yourpassword"
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload && systemctl enable --now etkg-webFeatures:
- Login form — optional password protection via
ETKG_PASSWORDenv var; custom dark-themed login page (no browser Basic Auth popup) - All CLI settings exposed as form controls (mode, browser, email API, repeat, headless, proxy file, output file, flags)
- Live log streaming — output appears in real time via Server-Sent Events; Stop button to kill the running process
- Per-repetition result cards — when repeat > 1, each iteration shows its own green (success) or red (error) card with copyable fields
- Copy buttons — one-click copy for log, individual fields (email / password / key) and the full result block
- Settings persistence — "Save settings" writes all options to the existing
eset-keygen-config.json; fields are pre-filled on next page load - Proxy pool — paste any proxy list URL (Webshare or other sources returning
ip:port:user:pass); each proxy is health-checked against ESET on refresh and dead/blocked ones are discarded automatically; when repeat > 1, each iteration uses a different working proxy; URL is saved to config - Recent files sidebar — shows the last 5 generated
.txtkey/account files with per-field and per-entry copy buttons; refreshes automatically after each run - Linux server / LXC ready — runs headless by default; no display required
Complete steps to set up this fork from scratch on a new Linux server or LXC container.
1. Clone the fork
git clone https://github.com/chrisdaloa/etkg.git
cd etkg2. Install Python dependencies
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt3. Install Chrome or Chromium
# Google Chrome
wget -q -O /tmp/chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt install -y /tmp/chrome.deb
# or Chromium
apt install -y chromium chromium-driver4. Install system libraries (headless server / LXC)
apt install -y libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \
libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libasound25. Configure the systemd service (auto-start on boot)
nano /etc/systemd/system/etkg-web.service[Unit]
Description=ESET KeyGen Web Dashboard
After=network.target
[Service]
WorkingDirectory=/root/etkg
ExecStart=/root/etkg/venv/bin/uvicorn webapp:app --host 0.0.0.0 --port 8000
Restart=on-failure
RestartSec=5
Environment="ETKG_PASSWORD=yourpassword"
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload && systemctl enable --now etkg-web6. Verify
Open http://<SERVER-IP>:8000 in your browser.
Note:
eset-keygen-config.json(saved settings) is not tracked by git. Copy it manually from the old installation if you want to preserve your configuration.
This is a fork of shadowcopyrz/etkg.
For CLI usage, known errors, browser setup on Windows/Mac, GitHub Actions workflow, contributing guidelines and donations refer to the upstream repository.