}
void trojanscan_generateclone(void *arg) {
- int i, loops = 0, modes = UMODE_XOPER;
+ int i, loops = 0, modes = UMODE_XOPER | UMODE_INV;
char c_nick[NICKLEN+1], c_ident[USERLEN+1], c_host[HOSTLEN+1], c_real[REALLEN+1];
i = (int)arg;
if(!c_real)
trojanscan_genreal(c_real, trojanscan_minmaxrand(15, TROJANSCAN_MMIN(50, REALLEN)));
- if(trojanscan_minmaxrand(0, TROJANSCAN_INVISIBLE_ODDS - 1))
- modes |= UMODE_INV;
-
trojanscan_swarm[i].clone = registerlocaluser(c_nick, c_ident, c_host, c_real, NULL, modes, &trojanscan_clonehandlemessages);
trojanscan_swarm[i].remaining = trojanscan_minmaxrand(5, 100);
return i;
}
+nick *trojanscan_selectuser(void) {
+ int target = trojanscan_minmaxrand(0, 500), loops = 50, j;
+ nick *np;
+ do {
+ for (j=trojanscan_minmaxrand(0, NICKHASHSIZE-1);j<NICKHASHSIZE;j++)
+ for(np=nicktable[j];np;np=np->next)
+ if (!--target)
+ return np;
+ } while(--loops > 0);
+ return NULL;
+}
+
void trojanscan_generatehost(char *buf, int maxsize) {
if(TROJANSCAN_HOST_MODE == TROJANSCAN_STEAL_HOST) {
- int loops, j;
+ nick *np;
+ int loops = 20;
+ buf[0] = '\0';
do {
- for (j=trojanscan_minmaxrand(0, NICKHASHSIZE-1);j<NICKHASHSIZE;j++) {
- if (nicktable[j] && !trojanscan_isip(nicktable[j]->host->name->content)) {
- strcpy(buf, nicktable[j]->host->name->content);
- return;
- }
+ np = trojanscan_selectuser();
+ if(np && !trojanscan_isip(np->host->name->content)) {
+ strncpy(buf, np->host->name->content, maxsize);
+ break;
}
- loops++;
- } while (loops < 10);
+ } while(--loops > 0);
} else {
char *cpos;
int pieces = trojanscan_minmaxrand(2, 4), totallen = 0, a = 0, i;
}
void trojanscan_generatenick(char *buf, int maxsize) {
- int bits = trojanscan_minmaxrand(2, 4), j, loops = 0, d = 0, wanttocopy, len = 0, i;
- buf[0] = '\0';
+ int bits = trojanscan_minmaxrand(2, 3), loops = 0, wanttocopy, len = 0, i, d = 0;
+ nick *np;
do {
- for (j=trojanscan_minmaxrand(0, NICKHASHSIZE-1);j<NICKHASHSIZE;j++) {
- if (nicktable[j]) {
- if(nicktable[j]->nick) {
- wanttocopy = trojanscan_minmaxrand(1, (strlen(nicktable[j]->nick) / 2) + 1);
- for(i=0;((i<wanttocopy) && (len<maxsize));i++)
- buf[len++] = nicktable[j]->nick[i];
- if(++d > bits) {
- buf[len] = 0;
- return;
- }
- }
+ np = trojanscan_selectuser();
+ if(np) {
+ wanttocopy = trojanscan_minmaxrand(1, (strlen(np->nick) / 2) + 2);
+ for(i=0;((i<wanttocopy) && (len<maxsize));i++)
+ buf[len++] = np->nick[i];
+ if(++d > bits) {
+ buf[len] = '\0';
+ return;
}
}
- loops++;
- } while (loops < 10);
+ } while (++loops < 10);
buf[0] = '\0';
}
void trojanscan_generateident(char *buf, int maxsize) {
- int j, loops = 0;
+ nick *np = trojanscan_selectuser();
buf[0] = '\0';
- do {
- for (j=trojanscan_minmaxrand(0, NICKHASHSIZE-1);j<NICKHASHSIZE;j++) {
- if (nicktable[j]) {
- if(nicktable[j]->ident) {
- strncpy(buf, nicktable[j]->ident, maxsize);
- return;
- }
- }
- }
- loops++;
- } while (loops < 10);
+ if(np)
+ strncpy(buf, np->ident, maxsize);
}
void trojanscan_generaterealname(char *buf, int maxsize) {
- int j, loops = 0;
+ nick *np = trojanscan_selectuser();
buf[0] = '\0';
- do {
- for (j=trojanscan_minmaxrand(0, NICKHASHSIZE-1);j<NICKHASHSIZE;j++) {
- if (nicktable[j]) {
- if(nicktable[j]->realname->name->content) {
- strncpy(buf, nicktable[j]->realname->name->content, maxsize);
- return;
- }
- }
- }
- loops++;
- } while (loops < 10);
+ if(np)
+ strncpy(buf, np->realname->name->content, maxsize);
}
void trojanscan_database_close(void) {
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
+#include <ctype.h>
+#include <strings.h>
-#define TROJANSCAN_VERSION "2.43"
+#define TROJANSCAN_VERSION "2.51"
-#define TROJANSCAN_CLONE_MAX 250 /* 80 */
-#define TROJANSCAN_WATCHCLONE_MAX 20
+#define TROJANSCAN_CLONE_MAX 300 /* 80 */
+#define TROJANSCAN_WATCHCLONE_MAX 75
#define TROJANSCAN_CLONE_TOTAL TROJANSCAN_CLONE_MAX + TROJANSCAN_WATCHCLONE_MAX
#define TROJANSCAN_POOLSIZE 1000
#define TROJANSCAN_MINIMUM_HOSTS_BEFORE_POOL 500
-#define TROJANSCAN_DEFAULT_MAXCHANS 200
-#define TROJANSCAN_DEFAULT_CYCLETIME 300
+#define TROJANSCAN_DEFAULT_MAXCHANS 500
+#define TROJANSCAN_DEFAULT_CYCLETIME 600
-#define TROJANSCAN_DEFAULT_MINIMUM_CHANNEL_SIZE 150
+#define TROJANSCAN_DEFAULT_MINIMUM_CHANNEL_SIZE 100
#define TROJANSCAN_NICKCHANGE_ODDS 8
#define TROJANSCAN_INVISIBLE_ODDS 8
trojanscan_database_res *trojanscan_database_store_result();
trojanscan_database_row trojanscan_database_fetch_row(trojanscan_database_res *res);
void trojanscan_database_free_result(trojanscan_database_res *res);
+nick *trojanscan_selectuser(void);
int trojanscan_is_not_octet(char *begin, int length);
void trojanscan_genreal(char *ptc, char size);
sstring *trojanscan_getsstring(char *string, int length);
int trojanscan_strip_codes(char *buf, size_t max, char *original);
+int trojanscan_isip(char *host);
struct trojanscan_clones trojanscan_swarm[TROJANSCAN_CLONE_TOTAL];
struct trojanscan_db trojanscan_database;