-char *trojanscan_iptostr(char *buf, int buflen, unsigned int ip) {
- snprintf(buf, buflen, "%d.%d.%d.%d", ip >> 24, (ip >> 16) & 255, (ip >> 8) & 255, ip & 255);
- return buf;
-}
-
-char trojanscan_genchar(int ty) {
- /* hostname and realname characters*/
- if (!ty) {
- if (!(trojanscan_minmaxrand(0, 40) % 10)) {
- return trojanscan_minmaxrand(48, 57);
- } else {
- return trojanscan_minmaxrand(97, 122);
- }
- /* ident characters - without numbers*/
- } else if (ty == 1) {
- return trojanscan_minmaxrand(97, 122);
- /* ident characters - with numbers*/
- } else if (ty == 2) {
- ty = trojanscan_minmaxrand(97, 125);
- if (ty > 122) return trojanscan_minmaxrand(48, 57);
- return ty;
- /* nick characters - with and without numbers*/
- } else if (ty == 3 || ty == 4) {
- if (!(trojanscan_minmaxrand(0, 59) % 16)) {
- char weirdos[6] = { '\\', '|', '[', '{', ']', '}' };
- return weirdos[trojanscan_minmaxrand(0, 5)];
- }
- if (ty == 4) {
- ty = trojanscan_minmaxrand(65, 93);
- if (ty > 90) return trojanscan_minmaxrand(48, 57);
- } else {
- ty = trojanscan_minmaxrand(65, 90);
- }
- if (!(trojanscan_minmaxrand(0, 40) % 8)) return ty;
- return ty + 32;
- /* moron check */
- } else {
- return ' ';
- }
-}
-
-void trojanscan_gennick(char *ptc, char size) {
- int i;
- for (i=0;i<size;i++) {
- if (i == 0) {
- ptc[i] = trojanscan_genchar(3);
- } else {
- ptc[i] = trojanscan_genchar(4);
- }
- }
- ptc[i] = '\0';
-}
-
-void trojanscan_genident(char *ptc, char size) {
- int i;
- for (i=0;i<size;i++) {
- if (i == 0) {
- ptc[i] = trojanscan_genchar(1);
- } else {
- ptc[i] = trojanscan_genchar(2);
- }
- }
- ptc[i] = '\0';
-}
-
-void trojanscan_genhost(char *ptc, char size, patricia_node_t **fakeipnode) {
- int dots = trojanscan_minmaxrand(2, 5), i, dotexist = 0, cur;
- struct irc_in_addr ipaddress;
-
- while (!dotexist) {
- for (i=0;i<size;i++) {
- ptc[i] = trojanscan_genchar(0);
- if ((i > 5) && (i < (size-4))) {
- if ((ptc[i-1] != '.') && (ptc[i-1] != '-')) {
- cur = trojanscan_minmaxrand(1,size / dots);
- if (cur < 3) {
- if (cur == 1) {
- ptc[i] = '.';
- dotexist = 1;
- } else {
- ptc[i] = '-';
- }
- }
- }
- }
- }
- }
- ptc[i] = '\0';
-
- memset(&ipaddress, 0, sizeof(ipaddress));
- ((unsigned short *)(ipaddress.in6_16))[5] = 65535;
- ((unsigned short *)(ipaddress.in6_16))[6] = trojanscan_minmaxrand(0, 65535);
- ((unsigned short *)(ipaddress.in6_16))[7] = trojanscan_minmaxrand(0, 65535);
-
- *fakeipnode = refnode(iptree, &ipaddress, PATRICIA_MAXBITS);
-}
-
-void trojanscan_genreal(char *ptc, char size) {
- int spaces = trojanscan_minmaxrand(2, 4), i;
- for (i=0;i<size;i++) {
- ptc[i] = trojanscan_genchar(0);
- if ((i > 5) && (i < (size-4))) {
- if (ptc[i-1] != ' ') {
- if (trojanscan_minmaxrand(1,size / spaces) == 1) ptc[i] = ' ';
- }
- }
- }
- ptc[i] = '\0';
-}
-
-int trojanscan_is_not_octet(char *begin, int length) {
- int i;
- if(length > 3)
- return 0;
- for(i=0;i<length;i++) {
- if (!((*begin >= '0') && (*begin <= '9')))
- return 0;
- begin++;
- }
- return 1;
-}
-
-int trojanscan_generatepool(void) {
- int i, k = 0, j = 0, loops = 0;
- char *p, *pp;
- nick *np;
-
- for (i=0;i<NICKHASHSIZE;i++)
- for (np=nicktable[i];np;np=np->next)
- j++;
-
- if(j < trojanscan_min_hosts)
- return 0;
-
- if(TROJANSCAN_HOST_MODE == TROJANSCAN_STEAL_HOST)
- return TROJANSCAN_MINPOOLSIZE;
-
- i = 0;
- do {
- for (j=trojanscan_minmaxrand(0, NICKHASHSIZE-1);j<NICKHASHSIZE;j++) {
- if (nicktable[j]) {
- for(p=nicktable[j]->host->name->content, pp=p;*p;) {
- if (*++p == '.') {
- if (!trojanscan_is_not_octet(pp, p-pp)) {
- if (i < TROJANSCAN_POOLSIZE) {
- if (i < trojanscan_hostpoolsize)
- freesstring(trojanscan_hostpool[i]);
- trojanscan_hostpool[i] = getsstring(pp, p-pp);
- i++;
- } else {
- if (k >= TROJANSCAN_POOLSIZE)
- break;
- }
- }
- pp=++p;
- }
- }
- if (!trojanscan_is_not_octet(pp, p-pp)) {
- if (k < TROJANSCAN_POOLSIZE) {
- if (k < trojanscan_tailpoolsize)
- freesstring(trojanscan_tailpool[k]);
- trojanscan_tailpool[k] = getsstring(pp, p-pp);
- k++;
- } else {
- if (i >= TROJANSCAN_POOLSIZE)
- break;
- }
- }
- }
- }
- loops++;
- } while ((loops < 5) && ((i < TROJANSCAN_POOLSIZE) || (k < TROJANSCAN_POOLSIZE)));
-
- trojanscan_hostpoolsize = i;
- trojanscan_tailpoolsize = k;
- return i;
-}
-