<?php

###################################################
## cookie jar v1.01                              ##
## http://Business-PHP.com/opensource/cookiejar/ ##
##                                               ##
## Where do spammers get your email address      ##
## from? This script will help you catch address ##
## harvesters with their hand in the cookie-jar! ##
## You can easily tell where and when an address ##
## was harvested, and then take action against   ##
## that server/ISP.                              ##
##                                               ##
## should run on PHP 4.1.0 or later              ##
## tested on PHP 4.3.1                           ##
##                                               ##
## Copyright (C) 26 Jun 2003 Atom Emet           ##
## Atom*Business-PHP.com                         ##
##                                               ##
## This program is free software; you can        ##
## redistribute it and/or modify it under the    ##
## terms of the GNU General Public License as    ##
## published by the Free Software Foundation;    ##
## either version 2 of the License, or           ##   
## (at your option) any later version.           ##
##                                               ##
## This program is distributed in the hope       ##
## that it will be useful, but WITHOUT ANY       ##
## WARRANTY; without even the implied warranty   ##
## of MERCHANTABILITY or FITNESS FOR A           ##
## PARTICULAR PURPOSE. See the GNU General       ##
## Public License for more details.              ##
##                                               ##
## You should have received a copy of the        ##
## GNU General Public License along with this    ##
## program; if not, write to                     ##
##    the Free Software Foundation, Inc.         ##
##    59 Temple Place - Suite 330                ##
##    Boston, MA  02111-1307, USA                ##
###################################################

/*
 * this script will
 * generate an email address that will reveal the 
 * IP address and date of a spam-bot's visit.
 * the info is encoded so we don't tip off the
 * spam-bot that we're using it's IP address as part of the bait.
 *
 * this script can be used to ENCODE addresses by being
 * included in other pages using PHP's include() function.
 *
 * this script can be used to DECODE such addresses, by
 * visiting the script directly, and appending a question mark (?)
 * and the string to be decoded, such as:
 *         http://Business-PHP.com/opensource/cookiejar/cookiejar.php?otottonntedlolitn
 *
 * this code was written by Atom Emet - (c) 26 june 2003 - http://Business-PHP.com/
 * inspired by: http://www.kungfugrippe.com/previously/002462.php
 *
 * this code is hereby published under the GPL license
 * http://www.gnu.org/copyleft/gpl.html
 *
 */

##########################################################
## these 2 changes MUST be made for this script to work ##
##########################################################

    #################################
    ## change this to the server that
    ## your collecting spam on
$your_server 'example.com.xyz';

    
#####################################
    ## change this variable to the script
    ## name, relative to the server root.
    ## if this is not set correctly,
    ## the script cannot be used to DECODE
$script_name '/opensource/cookiejar/cookiejar.php';

##################################
## these 2 changes are optional ##
##################################

    ####################################
    ## this string is the text that will
    ## be linked to the bait address
$bait_text 'Sign me up!';

    
###########################################
    ## leave string1 alone!
    ## you are encouraged to play with string2
    ## but make sure there are 11 lower case letters
    ## and use each letter no more than once!!
$string2 'detoanisrhl';

    
## BE AWARE: after making changes to string2,
    ## any address that was *previously* encoded
    ## with a different string will not be decoded
    ## with a newer string.
    ##
    ## it is suggested that once the script is running
    ## on YOUR server, set string2 and then LEAVE IT ALONE

################################################
## nothing below this line has to be modified ##
################################################

$string1 ' 1234567890';
if(empty(
$_SERVER['QUERY_STRING']) || "${script_name}" != ereg_replace('\?.*'''$_SERVER['REQUEST_URI'])) {
    
#####################
    ## encode bot info ##
    #####################
    
$bot_info explode('.'$_SERVER[REMOTE_ADDR]);
    
$dec_ip = ($bot_info[0] * 16777216) + ($bot_info[1] * 65536) + ($bot_info[2] * 256) + $bot_info[3];
    
$target $dec_ip ' ' date("ymd");
    
$target strtr($target"${string1}""${string2}");
    echo(
"\n<a href=\"mailto:${target}@${your_server}\">${bait_text}</a>\n");
} else {
    
#####################
    ## decode bot info ##
    #####################
    
$spam_name ereg_replace('@.*$'''$_SERVER['QUERY_STRING']);
    
$spammer explode(' 'strtr(strtolower($spam_name), "$string2""$string1"));
    
$spammer_bot[] = ereg_replace('\..*''', ($spammer[0] / 16777216));
    
$remainder = ($spammer[0] - ($spammer_bot[0] * 16777216));
    
$spammer_bot[] = ereg_replace('\..*''', ($remainder 65536));
    
$remainder = ($remainder - ($spammer_bot[1] * 65536));
    
$spammer_bot[] = ereg_replace('\..*''', ($remainder 256));
    
$remainder = ($remainder - ($spammer_bot[2] * 256));
    
$spammer_bot[] = "${remainder}";
    echo(
"<html><head><title>Cookie Jar :: ${spam_name}</title></head><body>\n\n");
    echo(
"<a href='http://Business-PHP.com/opensource/cookiejar/'>Cookie Jar</a>\n<hr>\n");
    echo(
"Bot address: " implode('.'$spammer_bot));
    echo(
"\n<hr>\nDate of bot's visit: ");
    echo(
"\n<br>Year: " substr($spammer[1], 02));
    echo(
"\n<br>Month: " substr($spammer[1], 22));
    echo(
"\n<br>Day: " substr($spammer[1], 42));
    echo(
"\n<hr>\n<a href='http://Business-PHP.com/opensource/cookiejar/'>Information about this interface can be found here.</a>");
    echo(
"\n\n</body></html>");
}
?>