/* cgipoison.c: generate junk email addresses for spambot * H.Tsukamoto (h1r.org) */ #include #include #include /* mail address for honeypot */ #define LOCAL "poison" #define DOMAIN "example.com" #define COUNT 3000 #define out(s) fputs(s,stdout) const char *st = \ "Content-Type: text/html;charset=EUC-JP\n\n" \ "\n\nwelcome!\n" \ "\n" \ "\n\n" \ "\n

毒入りごはん(for spambot)

\n
\n" \ "ロボくん、どうぞめしあがれ!

"; const char *bd1 = \ "名なしさん@お腹いっぱい
\n"; const char *en = \ "
Script by H.Tsukamoto\n\n\n"; const char *er = \ "

can not get environment variables\n" \ "maybe configration error.

"; /* 20 domains */ const char *dom[] = { \ ".co.jp",".ne.jp",".ad.jp",".or.jp",".gr.jp", ".ed.jp",".ac.jp",".go.jp",".jp",".to", ".com",".net",".org",".gov",".mil", ".info",".firm",".biz",".ac",".cc"}; /* generate random strings */ char *gen_rndstr (char *s,int len) { char *str; str = s; while (len--){*s++ = rand() % 26 + 'a';} *s = (char) 0; return str; } /* DJB's code ulong -> *char */ unsigned int fmt_ulong(register char *s,register unsigned long u) { register unsigned int len; register unsigned long q; len = 1; q = u; while (q > 9) { ++len; q /= 10; } if (s) { s += len; do { *--s = '0' + (u % 10); u /= 10; } while(u); /* handles u == 0 */ } return len; } /* returns UNIX time */ char *now (void) { unsigned long t; static char s[16]; t = (unsigned long) time(0); fmt_ulong(s,t); return s; } /* output message to stderr */ void oops (char *s) { fputs("cgipoison: ",stderr); fputs(s,stderr); fputs("\n",stderr); } /* generate mail address */ void genmail (char *mail) { static char *s,d[10]; strcpy(mail,gen_rndstr(d,8)); strcat(mail,"@"); strcat(mail,gen_rndstr(d,4)); strcat(mail,"."); strcat(mail,gen_rndstr(d,8)); s = (char *)dom[(rand() % 20)]; strcat(mail,s); } /* generate links */ void links (char *s) { char id[5]; if (s) { out("
Links:

\n(;´Д`)


\n"); } } /* generate mail links */ void mail_links(void){ int i; static char addr[40]; i = COUNT; while (i--) { genmail(addr); out(""); fputs(addr,stdout); out(""); if (i % 2) { out(" \n"); } else { out("
\n"); } } } /* generate trap honeypot address */ void mail_trap(void) { char *s; s = getenv("QUERY_STRING"); if (s && strlen(s)) { oops("*** Fish On!! ***"); sleep(3); } else { if (s = getenv("REMOTE_ADDR")) { out(bd1); out(s); out("-"); out(now()); out(bd2); } else { out(er); oops("can not get REMOTE_ADDR"); } } } main(int argc,char **argv) { char *s,*path; srand(time(0)); if (!(path = getenv("SCRIPT_NAME"))) { oops("can not get SCRIPT_NAME"); } out(st); mail_links(); mail_trap(); links(path); out(en); }