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.
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.
- Target: one physical or virtual machine (the HWID string your client sends)
- IPs collected from:
users.hwid,user_devices,sessions.bound_hwid, and session history for matching users (only when scope includes IPs) - Effect: blocked on
init,login/license/register— by HWID or any blacklisted IP tied to that ban - Sessions: killed for the HWID; IP-matched sessions killed when IPs were blacklisted
- Message: default
Blacklisted(customizable via Settings → Custom Messages →blacklisted)
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:
| Source | Steps |
|---|---|
| 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 | Sessions → Bound HWID column for active logins (requires client to send HWID). |
| Quick ban chips | HWID Bans → Quick 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. |
Ban Scopes
Every ban modal includes a Ban scope dropdown:
| Scope | HWID | IPs | Sessions | User account | License keys |
|---|---|---|---|---|---|
| HWID only | ✓ | ✗ | Kill HWID | ✗ | ✗ |
| Machine | ✓ | ✓ | Kill HWID + IP | ✗ | ✗ |
| Machine + license key(s) | ✓ | ✓ | Kill HWID + IP | ✗ | ✓ |
Using the Panel
Ban methods
| Method | Steps | When 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
- Always adds HWID to
blacklist(kind = hwid) - When scope is Machine or Machine + keys: collects IPs from
users,user_devices, andsessionsfor that HWID — each IP is blacklisted (kind = ip) - When scope is Machine + keys: bans license keys tied to users on that HWID
- Deletes sessions matching the HWID (and banned IPs when applicable)
- Does not set
banned = 1on 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
- Stats — banned machine count and users with a bound HWID
- Search — filter by HWID, linked username, or reason
- Copy — copy full HWID from the table
- Unban — runs
UnbanMachine(): removes HWID and related IP rows, unbans linked users and keys. Also triggered from Users (click Banned badge or Unban) when the user’s HWID was blacklisted
Preset reasons
Crack attempt · Reverse engineering · Multi-account abuse · Suspicious activity · Manual ban · Custom
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 call | When checked | Result |
|---|---|---|
init | Before session is created — IP always; HWID when present in request | success: false · message blacklisted |
login · license · register | During GuardUser — blacklist before HWID Lock | Same — account never logs in |
ban | Authenticated session — runs BanMachine() with ban_users = true (HWID + related IPs + linked accounts) or IP-only fallback | Successfully Banned User |
checkBlack / checkblacklist | Explicit client-side probe | Returns 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:
- Deletes the HWID row from
blacklist - Deletes every IP row
UnbanMachinecan still resolve for that HWID - Calls
UserCore::Unbanon each linked user and unbans license keys (UnbanLicenseKey)
Two panel entry points trigger it:
| Where | Action | What happens |
|---|---|---|
| HWID Bans / Blacklist | Unban / delete the HWID row (delete_black) | HWID is a kind = hwid row → runs UnbanMachine() for full reversal |
| Users | Unban the account (unban_user) | If that user’s HWID is blacklisted → runs UnbanMachine(); otherwise just unbans the user and removes their own IP row |
UnbanMachine(). To undo a whole machine ban, unban the HWID row, not the individual IP rows.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
| Feature | What it blocks | Panel 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 |
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).
| Endpoint | Purpose |
|---|---|
fetchblack | List IP and HWID blacklist rows |
addblack | Add row — set kind to hwid, value to the HWID string |
delblack | Remove 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
- Send a stable, unique HWID from your client — see Hardening Guide (
Hwid()) - Send
cpuandpcuseron login so admins can identify machines in the panel — Users & Machines - Enable Force HWID so empty HWIDs cannot bypass checks
- End users see your custom
blacklistedmessage — not which admin banned them - Legitimate users on a shared banned machine need an unban — HWID reset on the account does not remove a machine ban
Troubleshooting
| Issue | Fix |
|---|---|
| User banned but can still connect | Client may not send HWID — enable Force HWID · check Machines for bound HWID · verify IP not still blacklisted separately |
| VM banned, host blocked too | You used Machine scope — shared public IP was blacklisted. Unban or re-ban VM with HWID only |
| Partial unban — still blocked | Separate IP row or manual user ban remains — use Unban on HWID Bans (runs UnbanMachine) or clear Blacklist / Users |
| Dev machine locked out | HWID Bans → Unban HWID, remove IP rows in Blacklist, unban test accounts |
| Wrong person blocked | Confirm HWID string — collisions are rare but spoofed HWIDs can exist if client is compromised |
More errors: Troubleshooting · Error Codes