From 4acae09f3dbf87ac75182b5d98c8ffbf0fe09b9a Mon Sep 17 00:00:00 2001 From: Jacob Myers Date: Wed, 17 Sep 2008 04:15:51 -0400 Subject: [PATCH] Improved cloaking. It now uses an FNV hash, which makes IP's much more difficult to predict. --- extensions/ip_cloaking.c | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/extensions/ip_cloaking.c b/extensions/ip_cloaking.c index e80a19a4..c85059b5 100644 --- a/extensions/ip_cloaking.c +++ b/extensions/ip_cloaking.c @@ -65,40 +65,13 @@ distribute_hostchange(struct Client *client) ClearDynSpoof(client); } -#define Nval 0x8c3a48ac #define HOSTLEN 63 -#define INITDATA "98fwqefnoiqefv03f423t34gbv3vb89tg432t3b8" /* change this */ - -static inline unsigned int -get_string_entropy(const char *inbuf) -{ - unsigned int accum = 1; - - while(*inbuf != '\0') - accum += *inbuf++; - - return accum; -} - -/* calls get_string_entropy() and toasts it against INITDATA */ -static inline unsigned int -get_string_weighted_entropy(const char *inbuf) -{ - static int base_entropy = 0; - unsigned int accum = get_string_entropy(inbuf); - - /* initialize the algorithm if it is not yet ready */ - if (base_entropy == 0) - base_entropy = get_string_entropy(INITDATA); - - return (Nval * accum) ^ base_entropy; -} static void do_host_cloak_ip(const char *inbuf, char *outbuf) { char *tptr; - unsigned int accum = get_string_weighted_entropy(inbuf); + unsigned int accum = fnv_hash(inbuf, 32); char buf[HOSTLEN]; int ipv6 = 0; @@ -134,7 +107,7 @@ do_host_cloak_host(const char *inbuf, char *outbuf) { char b26_alphabet[] = "abcdefghijklmnopqrstuvwxyz"; char *tptr; - unsigned int accum = get_string_weighted_entropy(inbuf); + unsigned int accum = fnv_hash(inbuf, 32); strncpy(outbuf, inbuf, HOSTLEN);