Mod

HWID (Anti-Alts)

Quick rating

HWID (Anti-Alts)

No reviews yet

Stop annoying players from circumventing your bans by checking for alts based on hardware IDs

No Theme
No Genre
Server Utility
Mod Loaders
Forge
NeoForge
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

Compatibility

Supported Environments

Dev Environment
Client Required
Server Required

About

Project Details

Type
Mod
License
All Rights Reserved
Latest Version
HWID (Anti-Alts) 4.1
Authors
CurseForge
Modrinth

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID
Modrinth ID

Resources

External Links

Source Issues Wiki Discord

About

Description

Are you running a server and occasionally meet some players you want to get rid of, but they keep coming back using alt accounts and a VPN? Well, now you've got the chance to identify their accounts based on a hardware ID instead of unreliable IPs, skins or behaviour!


What this mod does

  • This mod is registering an empty argument, making it required on clients if your server has it installed. Players who try to remove it from their modpack can't join your server.
  • When players join your server, the client calculates a semi-unique hash value based on the player's hardware, which is then stored by the server (<server root>/config/hwid), along with the account UUID.

What this mod doesn't do

  • Automatically ban people based on hardware IDs
  • Provide an easy way to find hardware IDs with multiple players in-game

How to use it then?

Check some example scripts further down below, I don't want to bury the following two points under codeblocks as they're quite important to read.


Privacy

While a hardware ID sounds invasive, it's way less confidental information than an IP address. The hardware ID is being calculated on the client using the SHA-256 algorithm, which is irreversible and therefore gives server operators no information on what hardware is being used. The hardware ID can only be used to tell unique hardware configurations apart.

Limitations

  • Hardware IDs are semi-unique. If players upgrade their computer or replace it entirely, it will change. Players can also have the same hardware ID, if they coincidentally have the same computer, for example a common pre-built. Serial numbers (if existing) are included during the hash calculation to minimize this occurence.
  • Dedicated troublemakers with knowledge of Java can decompile this mod and create an evil twin, sending a random or specific hardware ID every time they join.

Bash

#!/bin/bash

destination_path="/home/minecraftserver/config/hwid"
for file in "$destination_path"/*
do
    line_count=$(wc -l <"$file")  # Count the number of lines in the file
    if [ "$line_count" -gt 1 ]  # Check if the line count is greater than 1
    then
        echo ""; echo "$(basename "$file")"  # Print an empty line and the filename
        while IFS= read -r line  # Read each line from the file
        do
            uuid=${line}  # Assign the line to the variable 'uuid'
            response=$(curl -s https://sessionserver.mojang.com/session/minecraft/profile/${uuid})  # Send a request to the Mojang API to get the profile information
            name=$(echo "$response" | jq -r '.name')  # Extract the 'name' field from the API response using jq
            echo "${uuid} - ${name}"  # Print the UUID and the corresponding name
        done < "$file"  # Read from the file
    fi
done

Python 3

import os, json, requests

search = ""  # Set the search term, eg. username, UUID or parts of either

for filename in os.listdir("/home/minecraftserver/config/hwid"):  # Iterate over each file in the specified directory
    with open(f"/home/minecraftserver/config/hwid/{filename}", "r") as file:  # Open each file in read mode
        lines = file.readlines()  # Read all lines from the file
        if len(lines) > 1:  # Check if there are more than one line in the file
            result = ""  # Initialize the result string
            for line in lines:
                uuid = line.strip()  # Get the UUID from each line
                response = requests.get(f"https://sessionserver.mojang.com/session/minecraft/profile/{uuid}")  # Send a GET request to Mojang API to get player profile
                name = json.loads(response.text)['name']  # Extract the player name from the response
                result += f"{uuid} - {name}\n"  # Append UUID and name to the result string
            if search in result:  # Check if the search string is present in the result
                print(result)  # Print the result

Are you running a server and occasionally meet some players you want to get rid of, but they keep coming back using alt accounts and a VPN? Well, now you've got the chance to identify their accounts based on a hardware ID instead of unreliable IPs, skins or behaviour!


What this mod does

  • This mod is registering an empty argument, making it required on clients if your server has it installed. Players who try to remove it from their modpack can't join your server.
  • When players join your server, the client calculates a semi-unique hash value based on the player's hardware, which is then stored by the server (<server root>/config/hwid), along with the account UUID.

What this mod doesn't do

  • Automatically ban people based on hardware IDs
  • Provide an easy way to find hardware IDs with multiple players in-game

How to use it then?

Check some example scripts further down below, I don't want to bury the following two points under codeblocks as they're quite important to read.


Privacy

While a hardware ID sounds invasive, it's way less confidental information than an IP address. The hardware ID is being calculated on the client using the SHA-256 algorithm, which is irreversible and therefore gives server operators no information on what hardware is being used. The hardware ID can only be used to tell unique hardware configurations apart.

Limitations

  • Hardware IDs are semi-unique. If players upgrade their computer or replace it entirely, it will change. Players can also have the same hardware ID, if they coincidentally have the same computer, for example a common pre-built. Serial numbers (if existing) are included during the hash calculation to minimize this occurence.
  • Dedicated troublemakers with knowledge of Java can decompile this mod and create an evil twin, sending a random or specific hardware ID every time they join.

Bash

#!/bin/bash

destination_path="/home/minecraftserver/config/hwid"
for file in "$destination_path"/*
do
    line_count=$(wc -l <"$file")  # Count the number of lines in the file
    if [ "$line_count" -gt 1 ]  # Check if the line count is greater than 1
    then
        echo ""; echo "$(basename "$file")"  # Print an empty line and the filename
        while IFS= read -r line  # Read each line from the file
        do
            uuid=${line}  # Assign the line to the variable 'uuid'
            response=$(curl -s https://sessionserver.mojang.com/session/minecraft/profile/${uuid})  # Send a request to the Mojang API to get the profile information
            name=$(echo "$response" | jq -r '.name')  # Extract the 'name' field from the API response using jq
            echo "${uuid} - ${name}"  # Print the UUID and the corresponding name
        done < "$file"  # Read from the file
    fi
done

Python 3

import os, json, requests

search = ""  # Set the search term, eg. username, UUID or parts of either

for filename in os.listdir("/home/minecraftserver/config/hwid"):  # Iterate over each file in the specified directory
    with open(f"/home/minecraftserver/config/hwid/{filename}", "r") as file:  # Open each file in read mode
        lines = file.readlines()  # Read all lines from the file
        if len(lines) > 1:  # Check if there are more than one line in the file
            result = ""  # Initialize the result string
            for line in lines:
                uuid = line.strip()  # Get the UUID from each line
                response = requests.get(f"https://sessionserver.mojang.com/session/minecraft/profile/{uuid}")  # Send a GET request to Mojang API to get player profile
                name = json.loads(response.text)['name']  # Extract the player name from the response
                result += f"{uuid} - {name}\n"  # Append UUID and name to the result string
            if search in result:  # Check if the search string is present in the result
                print(result)  # Print the result

Screenshots

Gallery

This project has no gallery images yet.

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

~200,000
Total Downloads
CurseForge
~160,000
Modrinth
~39,000
Last Updated
CurseForge
Modrinth
Created
CurseForge
Modrinth
Last synced
When ModDex last fetched and imported data for this project from CurseForge or Modrinth. High-traffic and active projects are checked more often.
Next pipeline sync