LibreAuth

HWID Bans

Ban machines by scope — HWID only (VM-safe), HWID + IPs, or HWID + IPs + license keys. Panel never auto-bans user accounts; use Users → Ban for that.

Panel path

Select an application → sidebar HWID Bans. Bans are stored per application — not global across your account.

Per-app 3 ban scopes HWID · IP · keys

What It Does

Panel Ban machine calls AppCore::BanMachine() with a ban scope you pick in the modal. The HWID is always added to blacklist (kind = hwid). IPs, license keys, and sessions depend on the scope. User accounts are not auto-banned from the panel — status stays Active in Users unless you ban the account separately.

TIP
HWID Lock binds one account to one HWID. HWID Bans block the machine for everyone. Use both together for maximum protection — see comparison below.

Finding a HWID to Paste

You need the exact HWID string your client sends on init / login. Pick up to 8–128 characters from the panel:

SourceSteps
Users → Machines Users → user card → Machines → click row → copy HWID or Ban machine. See Users & Machines guide.
Users tab (menu) Row menu → Ban machine (HWID) — opens ban modal with scope picker for that user’s primary HWID.
Sessions tab SessionsBound HWID column for active logins (requires client to send HWID).
Quick ban chips HWID BansQuick ban from user — recent bound HWIDs; click to open ban modal.
Discord / logs Login webhooks and app logs (when enabled) include user IP; pair with Machines after the next login.
WARN
No HWID appears until the client sends one on login. Enable Force HWID so empty values cannot bypass checks.

Ban Scopes

Every ban modal includes a Ban scope dropdown:

ScopeHWIDIPsSessionsUser accountLicense keys
HWID only Kill HWID
Machine Kill HWID + IP
Machine + license key(s) Kill HWID + IP
TIP
VM / shared router: use HWID only when banning a VM so the host PC on the same public IP is not blocked. Machine blacklists every IP ever seen with that HWID — any client from those IPs is blocked even with a different HWID.

Using the Panel

Ban methods

MethodStepsWhen to use
+ Ban machine HWID Bans → + Ban machine → paste HWID → pick reason HWID copied from Machines detail or Sessions
Quick ban from user HWID Bans → click a user chip under Quick ban from user User already logged in and HWID is bound
Machines detail Users → Machines → row → Ban machine (includes known IP as hint) Best when you reviewed CPU/IP before banning
Users row menu Users → row menu → Ban machine (HWID) Same scoped ban from the user list

What “Ban machine” does

  1. Always adds HWID to blacklist (kind = hwid)
  2. When scope is Machine or Machine + keys: collects IPs from users, user_devices, and sessions for that HWID — each IP is blacklisted (kind = ip)
  3. When scope is Machine + keys: bans license keys tied to users on that HWID
  4. Deletes sessions matching the HWID (and banned IPs when applicable)
  5. Does not set banned = 1 on user accounts from the panel

Panel toast shows counts, e.g. HWID blocked · 2 IPs · sessions killed or HWID blocked · 1 key · sessions killed.

Page features

Preset reasons

Crack attempt · Reverse engineering · Multi-account abuse · Suspicious activity · Manual ban · Custom

WARN
Banning your own development machine locks you out of that app until you unban the HWID or remove the row via Seller API / database.

Server Enforcement

Blacklist checks run in AppCore::IsBlacklisted(): IP is always checked; HWID is checked when the client sends one. On login / license / register, blacklist runs before HWID Lock — a banned machine never reaches account binding.

API callWhen checkedResult
initBefore session is created — IP always; HWID when present in requestsuccess: false · message blacklisted
login · license · registerDuring GuardUser — blacklist before HWID LockSame — account never logs in
banAuthenticated session — runs BanMachine() with ban_users = true (HWID + related IPs + linked accounts) or IP-only fallbackSuccessfully Banned User
checkBlack / checkblacklistExplicit client-side probeReturns whether IP/HWID is on the list

When a ban is added from the panel, LibreAuth runs BanMachine(): deletes sessions where bound_hwid matches, where the user’s hwid matches, and where sessions.ip matches any IP blacklisted for that machine.

Unban — Full Reversal

Unbanning a HWID runs AppCore::UnbanMachine() — a full reversal of the original ban, not a row delete:

Two panel entry points trigger it:

WhereActionWhat happens
HWID Bans / BlacklistUnban / delete the HWID row (delete_black)HWID is a kind = hwid row → runs UnbanMachine() for full reversal
UsersUnban the account (unban_user)If that user’s HWID is blacklisted → runs UnbanMachine(); otherwise just unbans the user and removes their own IP row
WARN
Deleting a single IP row from Blacklist removes only that IP — it does not run UnbanMachine(). To undo a whole machine ban, unban the HWID row, not the individual IP rows.
TIP
Because panel scopes never set banned = 1 on accounts, the user-unban step is usually a no-op for panel bans. It only matters when the ban came from the API ban() call, which sets ban_users = true.

HWID Ban vs Other Controls

FeatureWhat it blocksPanel location
HWID Ban Machine block — HWID (+ optional IPs / keys by scope). Panel does not auto-ban accounts HWID Bans · Users → Machines
HWID Lock One account used from a different HWID than first login Settings → Access Controls
User ban Single username — same machine can use another account Users → Ban
IP blacklist All clients from that IP (legacy Blacklist tab / Seller API) Blacklist · addblack with kind=ip
Hash Check Modified or unlisted executables on init Settings → Access Controls + Config → Hash Management
INFO
Recommended anti-crack stack: Hash Check + HWID Lock + HWID Bans for repeat offenders. See Access Controls presets.

Seller API

Automate blacklist rows from bots, admin tools, or CI pipelines. Note: Seller API addblack adds a single row only — it does not run BanMachine() (no automatic IP sweep or key bans). For parity with panel Machine scope, call addblack for the HWID and each related IP; use banuser only if you also want account bans (panel does not do this by default).

EndpointPurpose
fetchblackList IP and HWID blacklist rows
addblackAdd row — set kind to hwid, value to the HWID string
delblackRemove row by blacklist ID
POST https://libreauth.nutexe.dev/seller-api/type=addblack
sellerkey=YOUR_SELLER_KEY
app=1
kind=hwid
value=HWID_STRING_HERE
reason=Crack attempt

Full reference: addblack · fetchblack · delblack

Client & End-User Impact

Troubleshooting

IssueFix
User banned but can still connectClient may not send HWID — enable Force HWID · check Machines for bound HWID · verify IP not still blacklisted separately
VM banned, host blocked tooYou used Machine scope — shared public IP was blacklisted. Unban or re-ban VM with HWID only
Partial unban — still blockedSeparate IP row or manual user ban remains — use Unban on HWID Bans (runs UnbanMachine) or clear Blacklist / Users
Dev machine locked outHWID Bans → Unban HWID, remove IP rows in Blacklist, unban test accounts
Wrong person blockedConfirm HWID string — collisions are rare but spoofed HWIDs can exist if client is compromised

More errors: Troubleshooting · Error Codes