View Issue Details

IDProjectCategoryView StatusLast Update
0006572unrealircdpublic2025-10-09 18:42
ReporterJellis Assigned To 
PrioritynormalSeverityminorReproducibilityN/A
Status newResolutionopen 
Product Version6.1.10 
Summary0006572: Ability to cloak a host/IP via oper command and/or external API/tool
DescriptionI would like to request a feature in UnrealIRCd that allows opers (or a utility script/tool) to generate a cloaked hostname from a given IP address or hostname, without the user being connected. This would use the same cloaking algorithm and network-specific keys currently used by the IRCd.

Why this is useful?
In some scenarios, services or bots only have access to a user’s real IP/host (for example, web-based things, forms, or external integrations). For privacy reasons, we don’t want to expose raw IPs/hosts to channel operators or users..
Instead, it would be extremely useful to convert that IP/host into the cloaked hostname UnrealIRCd would generate on the network.

This allows channel staff to:

Apply bans using cloaked hosts instead of exposing raw IPs.
Correlate external actions (like web actions) with connected users on IRC in a privacy-preserving way.
Keep consistency: bans or matching rules would work the same way as if they were set against cloaked hosts in the IRC session.
Many other use cases where external tools have a real host/IP and the chat has "another version"

Requested implementation ideas:

- An oper-only command such as: /GETCLOAK <ip/hostname> which outputs the cloaked hostname as Unreal would display it.
- An external API/utility/library function (maybe in PHP, C, or via JSON-RPC to the IRCd) that can be used by services/web interfaces. This way, developers can generate cloaks on demand without duplicating Unreal’s internal cloaking code.

Having this functionality externalized (e.g., bash via unrealircd cloak <ip/host>) would also make sense.

Ofcourse, the exact cloaking algorithm and keys in use by the network should be applied, so the result matches what IRC clients see.
Additional InformationLike discussed on #unreal-support on 04/09/2025
TagsNo tags attached.
3rd party modules

Activities

rafaelgrether

2025-09-23 22:16

reporter   ~0023515

Hi Jellis.
I don't know. If I understood your question, it is a terrible idea, IMO.

Note (if I'm not mistaken) that for an IPv4 cloak (AAAAAAAA.BBBBBBBB.CCCCCCCC):

CCCCCCCC is unique for the first 16 bits of an IPv4 address: xxx.yyy.*.*
And BBBBBBBB is unique for the first 24 bits of an IPv4 address: xxx.yyy.zzz.*

By allowing developers/users to generate a cloaked hostname from a given IP address (via API or something else), this user could, with a some attempts (and mapping CCCC and BBBB), get the first 24 bits of any IRC user's IP.

Example: Hypothetically calling this API 65536 times (2^16 — from 1.1.0.0 to 255.255.0.0) and mapping each IP block to its corresponding cloaked IP, a user can determine the first 16 bits of an IPv4 address for any user on IRC.

I understood that you suggested making it an oper-only command. But by using an API that allows developers to generate cloaks, this could result in a risk exposure.
For security reasons, I believe that the Cloaked Hostname/IP should only be generated by the server and by no other means.

Issue History

Date Modified Username Field Change
2025-09-04 12:45 Jellis New Issue
2025-09-23 22:16 rafaelgrether Note Added: 0023515