|
#!/usr/local/bin/perl # ################################ # CyberArmy Spam Steganography # ################################ # # Mimic.pl: # # This uses steganography to encode a message into spam. Rather like # the scripts put up by spammimic.com and others, even if this uses another # algorithm. The workings of &encode and &decode are discussed in thier # comments below, but this is the message format used: # # [GREETING][BEGIN][DATA][END][CLOSING] # # Each spam has a greeting and closing made specifically for that genre # of spam, whether the spam is credit fraud, phoney cures or MMF. It also # picks one of 3 pairs of begin and end lines. On each line of spam, \n's are # replaced with a token [ESC - \033] so they don't mistakenly get encoded as # two charactors, while the lines of spam themselves are randomly punctuated by # &addpunct to add variety. It also formats the spam into paragraphs of 4-8 # lines so it looks much more natural, while it turns tabs into spaces and also # specially encodes spaces by doubling the punctuation [eg. '.' -> '..' and so # on] In the mean time, each charactor is run through &munge which implements # a simple series of transliterations to keep repeated lines to a minimum. # # # Credits: # # (c) 2001 Xenographic of the CyberArmy [www.cyberarmy.com] # Released under the BSD license for unrestricted free use. # This notice is all that must remain unchanged. # # Spammimic.Com # They came up with the idea & this is a copy of it. # # News.Admin.Net-Abuse.Sightings [NANAS] # I got the spam from there, using groups.google.com. # # O'Reilly Publishing # Their books are the best; I also use some boilerplate code from # them. # # DAL Net #perl [http://www.dalnet-perl.org] # Helped me clean up a few bugs that crept in. # # 51 of www.cyberarmy.com # He suggested some improvements to the coding style. # INIT { # Make sure other INIT blocks see all this. $corrupt = 0; # Flag if the data has been corrupted somehow. $fakeNL = v33; # Pretend \n is ESC internally. $tab = " " x 5; # So we can change tabs to spaces. $verbose = 1; # Turns on verbose error messages. $debug_info = ""; # Holds verbose error messages. } &output_header; # Prints the page's header. # Give them a form to enter data if they just got here. my %data = getDATA() or &ourFORM; my $input = $data{"MESSAGE"} or &ourFORM("You forgot to enter a message!"); $action = $data{"ACTION"}; # Remember for later. # Decide which action to do. if ($action eq "DECODE") { &decode($input); } else { &encode($input); } &ourFORM("You forgot to tell me what to do with that data!"); exit; # Explicit. ################# # output_header # ################# # # Outputs the HTML header. # sub output_header { print "Content-type: text/html\n\n"; # Tell browser what this data is. $| = 1; # Turn off buffering. print <<'ENDHTML'; <HTML><HEAD> <TITLE> Spam Steganography </TITLE> <STYLE TYPE="text/css"> <!-- A:hover { color: #C0C0C0; background: white; text-decoration:underline; } H1, H2, H3 { margin-left: 0%; color: #FFAA33; font-family: arial, verdana, helvetica, sans-serif; } --> </STYLE> </HEAD> <BODY BGCOLOR=#263C6D TEXT="white" LINK="#FFFFFF" VLINK="#C0C0C0" ALINK="#C0C0C0"> <H1>Spam Steganography</H1> This utility is our own rip-off of the <A HREF="http://www.spammimic.com/">Spam Mimic</A>. It's improved in some ways, even if it may sound really idiotic (doesn't all spam?) and it doesn't allow accents. Don't put any long messages in there, since it becomes *VERY* long the more you put into it. Still, it's one more thing for email snoops to worry about :] <BR><BR> -Xenographic <BR><BR> ENDHTML } ########### # getDATA # ########### # # Gets the data sent to the script. # # Ripped from boilerplate code on p. 81 of O'Reilly's # "CGI Programming with Perl." # sub getDATA { my %form_data; my $name_value; my @name_value_pairs = split /&/, $ENV{QUERY_STRING}; if ($ENV{REQUEST_METHOD} eq 'POST') { my $query = ""; read ( STDIN, $query, $ENV{CONTENT_LENGTH} ) == $ENV{CONTENT_LENGTH} or return undef; push @name_value_pairs, split /&/, $query; } foreach $name_value (@name_value_pairs) { my($name, $value) = split /=/, $name_value; $name =~ tr/+/ /; $name =~ s/%([\da-f][\da-f])/chr(hex($1))/egi; $value = "" unless defined $value; $value =~ tr/+/ /; $value =~ s/%([\da-f][\da-f])/chr(hex($1))/egi; $form_data{$name} = $value; } return %form_data; } ########### # escHTML # ########### # # This does a bit more than escapeHTML in cgi.pm would, namely it encodes # whitespace properly for our uses here. # sub escHTML { my ($info) = @_; # Get HTML return undef unless defined($info); $info =~ s/&/&/g; # Escape chars into proper HTML. $info =~ s/</</g; $info =~ s/>/>/g; $info =~ s/\"/"/g; $info =~ s/\t/$tab/g; # Change tabs to spaces. $info =~ s/$fakeNL/<BR>/og; # Decode hidden \n's. $info =~ s/\n/<BR>/g; # Decode non-hidden \n's. 1 while $info =~ s/ / /g;# Some spaces cannot be # 's or it becomes one # long line. This allows it # to show all spaces & work. return $info; } ########### # ourFORM # ########### # # Writes out the HTML form used and the footer, as well as any messages. By the # time you get here, there is no time to do anything else, since you'll output # the </HTML> tag. # sub ourFORM { my ($info) = @_; $info = escHTML($info); print <<EHTML; <FORM METHOD=POST> <TABLE BORDER=0> <TR VALIGN=TOP> <TD ALIGN=LEFT>Message:</TD> </TR> <TR> <TD ALIGN=LEFT COLSPAN=3> <TEXTAREA NAME="MESSAGE" ROWS=5 COLS=60></TEXTAREA></TD> </TR> <TR VALIGN=TOP> <TD ALIGN=LEFT VALIGN=CENTER> <INPUT CHECKED TYPE=RADIO NAME=ACTION VALUE="ENCODE"> Encode </TD> <TD ALIGN=CENTER VALIGN=CENTER> <INPUT TYPE=RADIO NAME=ACTION VALUE="DECODE"> Decode </TD> <TD ALIGN=RIGHT><INPUT TYPE=SUBMIT VALUE="Submit"> </TD> </TR> </TABLE> </FORM> EHTML unless ($corrupt == 0) { # Print a notice that something went wrong. print qq! <B>The program says that some data was lost or incorrect. Double check it before use.!; print "<BR> ERROR: $debug_info " if $verbose; if ($action eq "DECODE") { print qq! <BR>[?'s may indicate corrupted data]!; } print qq!</B><BR><BR>!; } if ($action eq "ENCODE") { # Print the notice that they just encoded something. print qq!Your message becomes the spam: <BR><BR>!; } if ($action eq "DECODE") { # Print the notice that they just decoded something. print qq!The secret message in that spam is: <BR><BR>!; # Make sure they get *some* feedback. $info = "[ERROR: NO DATA]" unless defined $info; } if (defined $info) { # Don't print anything when there's no message to be given. print <<"EINFO"; <TABLE WIDTH="100%" BORDER=1> <TR><TD>$info</TD></TR> </TABLE> EINFO } # Put your page footer in here. print <<"FOOTER"; </BODY> </HTML> FOOTER exit; # Done, there's nothing left to do now... } ########## # encode # ########## # # Turns a message into spam. It picks a genre of spam, selects one of the pairs # of greetings and endings (greetings are 2 lines, the last sentence is only one # line, that's why it looks odd below with the 1,3,5 array indexes). It then # goes through each charactor & encodes it as a line of spam. It also puncuates # each line with a random ! or . [which is why the data section cannot have any # lines with !'s or .'s in them]. When it encodes a space, it just adds another # punctuation mark [whichever one it last used, to make it .. for 1 space, ... # for 2, etc.] Finally, it adds a "pad" to the end appropriate to the genre and # prints it out for you. We hide \n's as ESC [\033] internally, since they seem # to get confused otherwise. # sub encode { my ($message) = @_; # Get message to encode. my $badchars = $message; # Save a copy to find the bad chars in it. $encoded = ""; # Place to put the message as it's encoded. # Replace everything except chars we understand with ?'s. # Be *very* careful when changing these... if ($message =~ tr[-^a-zA-Z0-9_ \t\n\r\f\\/:;",.?+~'<>{=}()!@#$%&*][?]c) { # This had something more... $corrupt = 1; # Uh oh, it had bad chars in it. # Use the same regex as above, w/o the ^ negation and substitue the # null string instead to be left with what was NOT understood. $badchars =~ tr[-^a-zA-Z0-9_ \t\n\r\f\\/:;",.?+~'<>{=}()!@#$%&*][]d; # Remove dupes in $badchars. $badchars =~ tr[-^a-zA-Z0-9_ \t\n\r\f\\/:;",.?+~'<>{=}()!@#$%&*][]cs; $badchars = &escHTML($badchars); # So they show up in HTML. $debug_info .= " Found the illegal char(s) [$badchars] when encoding them. " if $verbose; } $message =~ s/\t/$tab/ego; # Interpret tabs. $message =~ s/[\r]?\n/$fakeNL/eg; # Hide \n's from the encoder. $message =~ s/\f/$fakeNL/eg; # Just because... :] $genre = 1 + int rand(3); # Choose a random spam genre. $endgrt = (int rand(3)); # Random ending. $greet = $endgrt * 2; # Greeting to go with ending above. if ($genre == 1) { # Load data on business spam. &get_spamtype("business"); $encoded .= ($bus_start[$greet] . "\n\n" . $bus_start[$greet + 1]); $end = $bus_end[$endgrt]; } if ($genre == 2) { # Load data on credit spam. &get_spamtype("credit"); $encoded .= ($cre_start[$greet] . "\n\n" . $cre_start[$greet + 1]); $end = $cre_end[$endgrt]; } if ($genre == 3) { # Load data on miracle cure spam. &get_spamtype("cures"); $encoded .= ($cur_start[$greet] . "\n\n" . $cur_start[$greet + 1]); $end = $cur_end[$endgrt]; } @arrmsg = split //, $message; foreach $char (@arrmsg) { if ($char eq " ") { # Spaces become punctuation &addpunct("last"); # Add more punctuation to encode # a space [eg. '.' -> '..'] } else { &addpunct; # &addpunct gets sneaky here in # how it adds things, it makes # sure that it wasn't intending # to start a new paragraph, as # it does sometimes. $char = &munge($char); # Make the spam less repetetive. if (defined $tospam[$getindx{$char}]) { # Writes out a line of spam. my $curpunct = &peekpunct; # Find punctuation to use. $encoded .= " " . $tospam[$getindx{$char}] . $curpunct; } else { # Warn about unencodeable chars. $corrupted = 1; $char = &escHTML($char); $debug_info .= " Didn't know how to encode [ $char ] " if $verbose; } } } $encoded .= (" \n\n" . $end . " " . $pad); # Write out appropriate ending. &ourFORM($encoded); # Print out the spam. exit; # Explicit. } ########## # decode # ########## # # Turns a message back to normal. It first checks to see which beginning tag you used. If it # doesn't find any of them, it reports an error. Otherwise, it strips off everything between # the beginning tag it found and the ending tag that goes with that [it reports an error if it # cannot find the end tag, but valiantly attempts to decode what it can, first]. From the tags # it finds, it deduces the proper genre and loads the info for that sort of spam. It then splits # the spam on the line delimiters (! and .) and matches each line against all possible letters. # If the line is blank, it knows that it hit a .. or !! or something, which encodes a space, so # it adds them in there, as appropriate and changes all unknown lines to ?'s. # sub decode { my ($message) = @_; $message = &validate_spam($message); @spltmsg = split /[.!]/, $message; $decoded = ""; for (@spltmsg) { # Remove extra whitespace so it doesn't hinder matches. s/^\s+//; s/\s+$//; } TRANS: foreach $line (@spltmsg) { if ($line =~ /^[\s]?$/o) { # Decode spaces, which become # blank lines after the split $decoded .= " "; # since they were extra # punctuation (.!) before. next TRANS; } for (my $i = $[; $i < $#tospam; ++$i) { # Just in case you changed $[ # Figure out what symbol it is supposed to be. if ($line eq $tospam[$i]) { $decoded .= munge($indx[$i]); # Descramble it. next TRANS; } } $line = &escHTML($line); $debug_info .= " Didn't understand [ $line ] in spammish. " if $verbose; $decoded .= "?"; # Corrupted data :[ $corrupted = 1; } &ourFORM($decoded); exit; # Explicit. } ################# # validate_spam # ################# # # Figure out if it's one of our spams. It looks for beginning and ending tags [if they're not # found, it reports an error] and strips out everything between those tags. It then figures # out the genre of spam it just matched and loads the info for that type of spam and goes back # to &decode which actually decodes the spam. # sub validate_spam { my ($message) = @_; $message =~ s/[\n\r]/ /g; # Collapse it into one long line. $message =~ s/\s+/ /g; # Remove extra whitespace which may have snuck in. # Now see if this is one of *our* spams. Spam # headers are 2 lines, here I only care about # every 2nd line, which is at 1, 3 & 5 in the # array. I hope you guys aren't using $[ but # if you are this works, since I check against # $[ - 1 rather than just -1. FIND: { my $pos; for (my $i = 1; $i < 6; $i += 2) { $pos = index($message, $bus_start[$i]); if ($pos != ($[ - 1)) { # If it matched... &get_spamtype("business"); # Load data on the buisness genre. $pos += length($bus_start[$i]); # Move to the end of the start tag. $message = substr($message, $pos); # Grab everything after the start tag. $i = int ($i - 1) / 2; # Correct $i, since the arrays are goofy. $pos = index($message, $bus_end[$i]); # Find the end of the data. if ($pos == ($[ - 1)) { # If it failed... $corrupted = "1"; # Warn about missing/corrupted data. $debug_info .= " No ending tag found. " if $verbose; } else { $message = substr($message, 0, $pos); # Strip off the ending tag and anything after it. } last FIND; # Go translate it now. } $pos = index($message, $cre_start[$i]); if ($pos != ($[ - 1)) { # If it matched... &get_spamtype("credit"); # Load data on the credit genre. $pos += length($cre_start[$i]); # Move to the end of the start tag. $message = substr($message, $pos); # Grab everything after the start tag. $i = int ($i - 1) / 2; # Correct $i, since the arrays are goofy. $pos = index($message, $cre_end[$i]); # Find the end of the data. if ($pos == ($[ - 1)) { # If it failed... $corrupted = 1; # Warn about missing/corrupted data. $debug_info .= " No ending tag found. " if $verbose; } else { $message = substr($message, 0, $pos); # Strip off the ending tag and anything after it. } last FIND; # Go translate it now. } $pos = index($message, $cur_start[$i]); if ($pos != ($[ - 1)) { # If it matched... &get_spamtype("cures"); # Load data on the miracle cure genre. $pos += length($cur_start[$i]); # Move to the end of the start tag. $message = substr($message, $pos); # Grab everything after the start tag. $i = int ($i - 1) / 2; # Correct $i, since the arrays are goofy. $pos = index($message, $cur_end[$i]); # Find the end of the data. if ($pos == ($[ - 1)) { # If it failed... $corrupted = 1; # Warn about missing/corrupted data. $debug_info .= " No ending tag found. " if $verbose; } else { $message = substr($message, 0, $pos); # Strip off the ending tag and anything after it. } last FIND; # Go translate it now. } } # This isn't one of our spams. &ourFORM("Sorry, that spam doesn't contain any hidden messages!"); exit; # Explicit. }; # Go on to translate the spam. return $message; } ############ # addpunct # ############ # # This function generates random !'s and .'s to punctuate the spam and to encode # spaces (they are encoded as one extra punctuation mark in the spam for each # space encoded, eg. ! -> !! for one space). It also adds newlines every so often # to form simulated paragraphs about every 4-8 lines of spam, so it doesn't look # like one big, long & ugly block of jibberish. It operates on the assumption that # $encoded is both visible to it and holds the text to be encoded. # { # This block holds some variables for &addpunct so they aren't exposed. my $punctcount; my $curpunct; my $nextp; my $choice; my $first_time; INIT { $punctcount = 0; # How many punctuation marks to output. $curpunct = '!'; # Current punctuation. $nextp = 4 + int rand(5); # When to start the next paragraph. $choice = 1 + int rand(3); # The next punctuation to choose ('.' twice or '!') $first_time = 1; # Don't add the extra space the first time. } sub peekpunct { return $curpunct; } sub addpunct { my $mode = shift; if ($mode) { # They want what they had last time. # No need to check if it's equal to "last" since it's # undef the rest of the time. if ($punctcount) { # Add punctuation unless a new paragraph is starting. ++$punctcount; } else { $encoded .= $curpunct unless $first_time; $first_time = 0; } return; } # They want some new punctuation... if ($punctcount) { # Start new paragraphs neatly. $encoded .= ($curpunct x ($punctcount - 1)) . "\n\n"; $punctcount = 0; # Sub 1 because this miscounts. } $choice = 1 + int rand(3); # Choose the next punctuation. if ($choice == 3) { $curpunct = "!"; } else { $curpunct = "."; } if (--$nextp == 0) { # Decide when to start new paragraphs. ++$punctcount; $nextp = 4 + int rand(5); } return; } } ######### # munge # ######### # # This function scrambles the data a little so that the spam isn't quite as # repetetive and may be slightly harder to decode. Note that ALL routines must # be SYMETRIC. This means that if c -> q then q -> c and that the transforms of # uppercase letters is the same as the one for lowercase letters (q -> c and # Q -> C). If you change that, the input will not match the output and you will # wind up with garbage :] This should give the spam a period of about one # paragraph before repeating on average, unless you're unlucky and it transforms # just so. It's not like this will stop the NSA from decrypting this; it just # makes it look nastier, I think. You should not munge spaces--they're taken # care of separately in the encoding scheme. # { # This block contains some of the initialization code for &munge # It just helps it keep track of local variables and such while # scrambling the data to make the same sentences repeat less often. # It is here to keep this info private. my $seed; # The seed for the munger. my $oldseed; # The last seed used. my $maxseed; # This is how many munges there are below, make # sure it's right by reading &munge below. my $ch; # The charactor we're munging in &munge. INIT { # Initializes some variables for these routines. $seed = 0; $oldseed = 0; $maxseed = 7; $ch = ""; } sub getseed { # This advances the seed making sure it gets reset. $oldseed = $seed; if ($seed == $maxseed) { # Reset seed. $seed = 0; } else { # Advance seed. ++$seed; } return $oldseed; # They want the *old* value. } sub charuc { # Swap case on an uppercase char half the time. my $ch = shift; $ch = lc $ch if (($seed % 2) == 1); return $ch; } sub charlc { # Swap case on a lowercase char half the time. my $ch = shift; $ch = uc $ch if (($seed % 2) == 1); return $ch; } } sub munge { # Here is where we actually munge each character. my $ch = shift; my $seed = &getseed; if ($ch =~ /^[a-z]$/o) { # Do you like those tr///s? It's one way of enforcing the BSD license as those are # a /pain/ to mess with :] -xeno LWRTRANS: { # Transform lowercase letters. if ($seed == 0) { # Transform 0 $ch =~ tr/xenoaisrhldcuqzvtjkbywgpfm/qzvtjkbywgpfmxenoaisrhldcu/; last LWRTRANS; } if ($seed == 1) { # Transform 1 $ch =~ tr/xenoaisrhldcukvtmzqbjfywpg/kvtmzqbjfywpgxenoaisrhldcu/; last LWRTRANS; } if ($seed == 2) { # Transform 2 $ch =~ tr/xenotaizqjkvsfbyrchpdgwmlu/fbyrchpdgwmluxenotaizqjkvs/; last LWRTRANS; } if ($seed == 3) { # Transform 3 $ch =~ tr/xenoaibywldcuvktzprsqghjfm/vktzprsqghjfmxenoaibywldcu/; last LWRTRANS; } if ($seed == 4) { # Transform 4 $ch =~ tr/xenoshdcuzqkvglrjayibtmwfp/glrjayibtmwfpxenoshdcuzqkv/; last LWRTRANS; } if ($seed == 5) { # Transform 5 $ch =~ tr/xenotasywgpfmirlvjbkzhqcdu/irlvjbkzhqcduxenotasywgpfm/; last LWRTRANS; } if ($seed == 6) { # Transform 6 $ch =~ tr/xenozjisrgpfmtqlwcdkaubhyv/tqlwcdkaubhyvxenozjisrgpfm/; last LWRTRANS; } if ($seed == 7) { # Transform 7 - $maxseed should equal this (7). $ch =~ tr/xenojtkbrwlcmphizadyvqsufg/phizadyvqsufgxenojtkbrwlcm/; last LWRTRANS; } # We should not get here, check below & make sure the seed gets reset # after going through the last transform above. warn "Bad seed value $seed found in swapcaps routine."; } $ch = &charlc($ch); # Swap case half the time. return $ch; } elsif ($ch =~ /^[A-Z]$/o) { UPRTRANS: { # Transform uppercase charactors. if ($seed == 0) { # Transform 0 $ch =~ tr/XENOAISRHLDCUQZVTJKBYWGPFM/QZVTJKBYWGPFMXENOAISRHLDCU/; last UPRTRANS; } if ($seed == 1) { # Transform 1 $ch =~ tr/XENOAISRHLDCUKVTMZQBJFYWPG/KVTMZQBJFYWPGXENOAISRHLDCU/; last UPRTRANS; } if ($seed == 2) { # Transform 2 $ch =~ tr/XENOTAIZQJKVSFBYRCHPDGWMLU/FBYRCHPDGWMLUXENOTAIZQJKVS/; last UPRTRANS; } if ($seed == 3) { # Transform 3 $ch =~ tr/XENOAIBYWLDCUVKTZPRSQGHJFM/VKTZPRSQGHJFMXENOAIBYWLDCU/; last UPRTRANS; } if ($seed == 4) { # Transform 4 $ch =~ tr/XENOSHDCUZQKVGLRJAYIBTMWFP/GLRJAYIBTMWFPXENOSHDCUZQKV/; last UPRTRANS; } if ($seed == 5) { # Transform 5 $ch =~ tr/XENOTASYWGPFMIRLVJBKZHQCDU/IRLVJBKZHQCDUXENOTASYWGPFM/; last UPRTRANS; } if ($seed == 6) { # Transform 6 $ch =~ tr/XENOZJISRGPFMTQLWCDKAUBHYV/TQLWCDKAUBHYVXENOZJISRGPFM/; last UPRTRANS; } if ($seed == 7) { # Transform 7 - $maxseed should equal this (7). $ch =~ tr/XENOJTKBRWLCMPHIZADYVQSUFG/PHIZADYVQSUFGXENOJTKBRWLCM/; last UPRTRANS; } # If this triggers, you need to check below to ensure that the seed is # being reset after going through all transforms above. warn "Bad seed value $seed found in swapcaps routine."; } $ch = charuc($ch); # Switch case half the time. return $ch; } else { # Mess with some of the common punctuation & numbers so they're # even less obvious :] if (($seed % 2) == 1) { # Be careful that these stay *symmetric* :] $ch =~ tr/01234567?!@.$9)8#^(&%*/.$9)8#^(&%*01234567?!@/; # Ugly, huh? :] Don't even try changing that... } else { $ch =~ tr/12345678@&^?).*%!#9$(0/?).*%!#9$(012345678@&^/; # It may look like a core dump, but it's not... } return $ch; } } ################ # get_spamtype # ################ # # Get the info on the genre of spam we have to translate. # Parts in the data section (@tospam) CANNOT contain # periods (.) or exclamation marks (!) or it will encode # extra spaces which don't belong there or make the data # unreadable. Whitespace is also stripped & collapsed to # make matches easier, since it is often changed in # transmission. # sub get_spamtype { $needs = $_[0]; INIT { # This is always used, so we might as well load it right away. # The number of chars here *must* correspond to the number of # lines in EACH @tospam below, or things won't work right. # Be *really* careful when chaging it... @indx = qw[a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0 ( ) { } < > \ / - + * = ~ ^ $ @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ; : . & ? ! ' " _ %]; push @indx, '#', ',', $fakeNL; # So qw// won't whine. %getindx = undef; # Just so Perl doesn't whine. for ($i = $[; $i < $#indx; ++$i) { # Build a reverse lookup of @indx so I $getindx{$indx[$i]} = $i; # can find the position of any element. } # These are the delimiters of the spams, change them if you like, but make # sure that you don't add or remove any lines or it won't work. It's best # if the start blocks end with a ! or ? since the script adds a ! for the # punctuation of a space is the first charactor of the message to encode. # [?! or !! look better than .! :] @bus_start = <<'EB' =~ m/(\S.*\S)/og; Dear E-Entrepreneur; With all the money-making opportunities on the net why aren't you a millionaire yet? Dear E-Business Owner, You could be a millionaire! Can you accept this in your life? Dear Internet Professional - You were referred to me as someone who was ready for a Financial Breakthrough! EB @bus_end = <<'EBE' =~ m/(\S.*\S)/og; TO BE INCLUDED IN FUTURE MAILINGS, PLEASE VISIT OUR WEBSITE! Call 1-530-343-9681 to place your credit card order TODAY! $$$ FINALLY YOU CAN MAKE SOME DREAMS COME TRUE! $$$ EBE @cre_start = <<'ECR' =~ m/(\S.*\S)/og; Dear Businessperson: As a technical person and a natural skeptic my initial impulse was to ignore things like this, but NO MORE! Dear E-commerce Consultant, Have you been dissappointed by other credit card solutions which turned out to be scams? Dear Professional: Give yourself the ADVANTAGE of enjoying life more with EXCELLENT CREDIT! ECR @cre_end = <<'ECRE' =~ m/(\S.*\S)/og; $$$ ENJOY YOUR NEWFOUND FINANCIAL FREEDOM $$$ CALL 1 (307) 587-9409 TO ORDER TODAY! To Order By Phone, please call (206) 219-3312 NOW! ECRE @cur_start = <<'ECU' =~ m/(\S.*\S)/og; Dear Herbal Enthusiest; Did you know that you can order your herbs online from Mexico at a FRACTION of the cost? Dear Friend - Our ALL NATURAL 100% organic herbal supplements can help you feel at your peak again! Dear Truth seeker, Have you been misinformed about the nearly miraculous effectiveness of modern herbal remedies? ECU @cur_end = <<'ECUE' =~ m/(\S.*\S)/og; !!! ORDER ONLINE NOW BEFORE THE MEXICAN GOVERNMENT SHUTS US DOWN !!! Order now, you won't regret trying our ULTRA-HIGH QUALITY herbs! VISIT US TODAY TO DISCOVER ALL THE THINGS *THEY* DON'T WANT YOU TO KNOW! ECUE } # End of preloaded spam header data block. if ($needs eq "business") { $pad = qq' Apex Attn: R. Colbert MailRoom Post Office Box #0215 Coral Springs, FL 33067-0215 ORDER YOUR REPORTS TODAY AND GET STARTED ON YOUR ROAD TO FINANCIAL FREEDOM ! Under Bill s. 1618 TITLE 3 passed by the 105th us congress, this letter cannot be considered SPAM, as long ad the sender includes contact information and a method of "removal". To be removed from future mailings, just reply with REMOVE in the subject line. Thank-you for your kind consideration'; # Here's a ton of raw spam. All of these blocks are similar for each genre. # Don't add or remove lines unless you're trying to encode more charactors, # but you can change them almost as much as you want so long as you are sure # that none contain .'s or !'s and that none of them contains another (eg. # that one line isn't "Just BUY NOW" and another is "BUY NOW" which would # confuse the script when it tried to decode them. I personally validated # all of these, but... :] @tospam = <<'END_BUSINESS' =~ m/(\S.*\S)/g; We sell the CD Your Not Suppose to Have BUSINESS SECRETS OF THE INTERNET Learn to make THOUSANDS of dollars per hour while Surfing the Internet for PORN Find out how To Beat Speeding Tickets confound the cops and get off scot free You can get Information on Anyone you want for FREE online Your messages can reach MILLIONS for pennies just like this one You KNOW this works since just as you are reading this message yours will be read If you want to be successful you must copy someone who is I am willing to teach you the secrets that I have leaned in creating Financial Independence I am looking for a few motivated individuals who are ready to start earning BIG MONEY This is not MLM or a pyramid scheme or a get rich quick scheme This is a REAL Legitimate business that requires motivated parteners With Us Everyone Gets Approved No Upfront Fees For Application-Processing While Others Charge You HUNDREDS OF DOLLARS to Get Set Up WE CHARGE ZERO FOR SETUP FEES This is A Limited Time Offer So Take Advantage of it Scroll to bottom of this email for our CONTACT INFORMATION to ORDER NOW The Internet is the fastest growing industry in today's direct marketing business Give your customers the convenience of ordering products right from your web page Now tell me if this doesn't sound intriguing With us you will have LIQUID ASSETS AVAILABLE ALMOST IMMEDIATELY We Also offer SOFTWARE AND TERMINAL PACKAGES to reach your customers Our terminal will allow you to receive the LOWEST DISCOUNT RATE per transaction available Thank You for reading this and Heres to Bigger and Better Business Thats right seventy seven MILLION FRESH AND VALID email addresses with NO duplications You can offer your product to the online community TODAY Using direct marketing is easier and cheaper a LOT easier and a LOT cheaper Contact us to receive a collection of BULK EMAIL PROGRAMS to automate your mailouts Our programs such as Express mail and Stealth Bomber all are very user friendly These programs usually cost around HUNDREDS but are FREE to you when you invest with us You can set your computer in the morning and it can send emails all day by itself If you get only a one percent response from mailing to a list thats worth THOUSANDS Imagine how much information you could get from a short survey sent to a mailing list like ours We have been in this business for close to TWO YEARS now We have a lot of satisfied customers who keep coming back to us for more We hope to do business with you continuously for years to come We have gone through the list in the past month and deleted any old addresses We have also deleted any known SPAM haters Our lists include almost every person on the Internet today with no duplications People are making TONS of money right now by doing the same thing we are With us the more people you send to the more money you will make With our product we will also send you a copy of every law concerning email We make it easy to obey the law and make a fortune This offer is not for everyone If you can see the value in this opportunity then now is the time to TAKE ACTION Ours is a fantastic idea which has over FOUR MILLION users already For checks in currencies other than US dollars please find details below ALL INFORMATION NECESSARY FOR YOU TO SUCCESSFULLY MAIL QUICKLY PROPERLY AND LEGALLY IS PROVIDED This email contains the ENTIRE PLAN of how YOU can make BIG MONEY NOW Just read on and see how easy this is Since everyone makes more as more people try it out it's been very exciting Please read this program THEN READ IT AGAIN Just follow the instructions and you will make money This simplified e-mail marketing program works perfectly EVERY TIME Email is the sales tool of the future Take advantage of this virtually free method of advertising NOW The longer you wait the more people will be doing business using email The enclosed information is something I almost let slip through my fingers I could NOT believe my eyes here was a MONEY MAKING MACHINE I could start immediately Like most of you I was still a little skeptical and a little worried about the legal aspects After determining the program was LEGAL I decided WHY NOT I paid off ALL my debts and bought a much needed new car Please take your time to read this plan IT WILL CHANGE YOUR LIFE FOREVER This program does work but you must follow it EXACTLY If you choose not to participate in this program I am sorry This really is a great opportunity with little cost or risk to you As the saying goes THE RICH GET RICHER AND THE POOR GET POORER With us you can make more money in the next few months than you have EVER imagined Just follow the program EXACTLY AS INSTRUCTED Remember to email a copy of this exciting report to everyone you can think of Remember that the more you send out the more potential customers you will reach HERE IS HOW THIS AMAZING PROGRAM WILL MAKE YOU THOUSANDS OF DOLLARS Our method of raising capital REALLY WORKS EVERY TIME Before you say BULL please read this program carefully This is not a chain letter but a perfectly legal money making business Every state in the USA allows you to recruit new multilevel business partners WITH US ORDERS COME BY MAIL AND ARE FILLED BY EMAIL so you are not involved in personal selling You do this privately in your own home store or office We have the EASIEST marketing plan anywhere Your cost to participate in this is practically nothing Placing a lot of FREE ads on the Internet will EASILY get a larger response You should be prompt and professional and follow the directions accurately You can KEEP TRACK of your PROGRESS by watching which report people are ordering from you What you are about to read is tried and true and proven and effective Above all our offer is utterly and ridicously excellent Read on and weep with joy if you would like to know exactly how to begin making money Nowhere else will you find such a complete package as this YOU WILL SOON BE RAKING IN MONEY LIKE NOBODYS BUSINESS This is the fastest way I have ever seen to make money If you do not call us RIGHT NOW you will regret it for the rest of your life Business opportunities like this do not come around every day you know You would have to be an IDIOT not to BUY NOW Our product is simply the BEST EVER Unless you want to kick yourself later you MUST ORDER NOW END_BUSINESS foreach $line (@tospam) { # Collapse whitespace to help matching. s/^\s+//; s/\s+$//; s/\s+/ /g; warn "Erroneous punctuation (! or .) found in business spam." if m/[!.]/; } return; } if ($needs eq "credit") { $pad = qq' FAX TOLL FREE TO 888.244.4366 or mail to: The Credit Emporium Attn: C. Spambert MailRoom Post Office Box #0715 Coral Springs, FL 33067-0215 ** We respect your privacy and will not share any of the above information with any other persons or companies. ** ............................................. This is a one time email transmission, either requested by you or by someone you know. The information provided is for educational purposes only and FFS Ltd is not providing a service. This offer is void where prohibited. This cannot be considered spam as long as the sender includes a method of removal at no cost to the recipient as stated in bill s.1618 TITLE III passed by the 105th US Congress. This is a one time email transmission; no need for removal is required. If you do not respond, FFS Lts will not contact you and you will be automatically removed.'; @tospam = <<'END_CREDIT' =~ m/(\S.*\S)/g; Good Bad or No Credit is NO PROBLEM with us GET GUARANTEED EXCELLENT CREDIT IN THIRTY DAYS If your credit is less than perfect then you must read this email We have compiled a wonderful ebook GUARANTEED to give you an excellent credit rating John Simmers tried this and removed every negative item off his credit report in two weeks Over the last few years we have received thousands of positive letters from customers With us FINANCIAL FREEDOM COSTS JUST A FEW DOLLARS Print this now or save it to a folder for future reference With us you can learn of the secret federal law that stops ALL your collection calls immediately Thousands of Americans have used our service successfully we want YOU to be next NO MORE will you have to be ashamed of your past The Credit Secrets Manual reveals one of the greatest secrets in the world Our attorneys have discovered a method of creating brand NEW credit files for their clients With us you can destroy bad credit by taking advantage of a special consumer protection law With us you can dump your bad credit using our suberb Credit File Replication Service With our methods anyone can bury the past and put their bad credit behind them forever Our service is really BONAFIDE and PROVEN to work for anyone This product is so easy to use that a sixteen year old could do it Thanks to us you will be in fear of your future NO MORE All this involves is a little thinking and filling out forms and making phone calls This product works just like THAT it is almost MAGICAL I truly do bless the day I ordered this program YOU will too This program has changed my life I now want it to change yours You will be scared to apply for credit NO MORE With us you can learn the Secret Key to getting your new credit file and how easy it is to do We can get your new credit file without you ever leaving your house Our goal is to make this program affordable so everyone can benefit from the power of it Rich people have been using our secrets for years We have a guaranteed way for legally getting an excellent credit rating almost instantly Contact us to guarantee that you will quickly have EXCELLENT CREDIT We will assist you in instantly adding UNLIMITED positive information to your credit file My Proven Credit Advantage Program unconditionally guarantees you will qualify for loans TRIPLE A ONE CREDIT IS WITHIN YOUR REACH Our ebook tells you everything you will ever need to know With ONE CALL we can get your creditors to leave you alone Complete Our Simple Online Form To Receive Your Free Debt Analysis Our programs can get you the cash you need This all comes with our RISK FREE DOUBLE YOUR MONEY BACK GUARANTEE If your credit isnt so great your interest rate will be higher We can tell you the Six Credit Card Secrets Banks Dont Want You to Know With Us You Will Learn The Guerrilla Tactics That Will Give You A Good Credit Rating We know Surefire Methods Of Raising Instant Cash This is NOT another credit scam OUR methods are TOTALLY LEGAL Do NOT get suckered by the cheap waffle packed guides offered elsewhere We will NOT waste your time with flowery sales letters and empty promises WE are the real deal WE tell it like it IS Sign up NOW and become part of our CASH ADVANTAGE PROGRAM WE use the only legitimate way to get you new credit files We can Add YEARS of AAA credit to your PERSONAL credit report in just days You can never lie or be dishonest and STILL get the credit you need and deserve without hassle You should follow the example of thousands of ordinary people who use this system everyday You can use our services to maintain complete anonymity in your financial dealings You can purchase everything you buy at below wholesale prices and on credit Our services will NOT lead you to do anything illegal immoral or unethical We do NOT send you on letter writing campaigns that produce no results We will not have you to use untested methods that do not work in the real world We will NOT make you use a bogus TIN or EIN number on credit applications Our customers are SHOCKED at how quickly and easily they have restored their credit We have perfected a system called the GoldPro Credit Restoration Program which is AWESOME With us you just go through our EASY five step program to establish the credit you deserve If you want to buy a home our methods will virtually GUARANTEE your success With us you will now be able to easily qualify for any credit you desire My program unconditionally guarantees that you will qualify for all kinds of loans If you do not fix your credit you might as well throw MONEY out the window You CAN Save Thousands of Dollars in Interest and Late Charges We offer a NO OBLIGATION FREE CONSULTATION WITH STRICT PRIVACY The credit industry is constantly changing to anticipate the demands of customers like you We look forward to EARNING your business Do not delay in ordering from us your good credit depends on it With our help you will have ULTRA LOW INTEREST RATES When we are finished you will have a copy of YOUR unblemished credit file You Can Join our Lenders Network for FREE YOU SHOULD NEVER SETTLE FOR A SINGLE QUOTE AGAIN WHEN YOU CAN GET MANY OFFERS WITH US The information you provide to our Financial Experts will help you get the results you deserve With us you will discover why bankruptcy may actually improve your credit rating You can learn to Restart your life Completely Debt-Free Find out how to stop your creditors dead in their tracks with our foolproof debt solutions Find out how to know if you need a lawyer to help you Let us help you get out of debt NOW We can even help you consolidate your debts into one low monthly payment Do not even think of filing bankrupcy without reading this message This request is totally risk free since no obligation or costs are incurred By working with us we can cut your payments in HALF We have Special Programs for Self Employed Borrowers We have programs for EVERY credit situation You could get CASH BACK within ONE DAY of approval Our professional debt negotiators can instantly reduce your interest rates We WILL Get Your Creditors Off Your Back Our credit history eraser is NOT a loan WE ARE THE TOP ONLINE SOURCE FOR APPROVING CREDIT CHALLENGED INDIVIDUALS With your new credit rating you will feel like a KING You simple MUST ORDER NOW or you will regret it Without us you might face BANKRUPCY END_CREDIT foreach $line (@tospam) { # Collapse whitespace to help matching. s/^\s+//; s/\s+$//; s/\s+/ /g; warn "Erroneous punctuation (! or .) found in credit spam." if m/[!.]/; } return; } if ($needs eq "cures") { $pad = qq' Order online and save. Visit us at http://www.iscsale.com/ Please print and postal mail to: Chess Industries PO BOX 97-0531 Coconut Creek, FL 33097-0531 or FAX toll free to 800.708.5714. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Your Email Address Removal/Deletion Instructions: We comply with proposed federal legislation regarding unsolicited commercial email by providing you with a method for your email address to be permanently removed from our database and any future mailings from our company. To remove your address, please send an email message with the word REMOVE in the subject line to: processrequest\@adexec.com If you do not type the word REMOVE in the subject line,your request to be removed will not be processed. '; @tospam = <<'END_CURES' =~ m/(\S.*\S)/g; The results have been truly remarkable You will understand once you try it yourself Remember that it wont work if you don't try it Please delete this now if such messages are annoying to you You have been invited to participate in a thirty day free trial This is an UNBELIEVEABLE OFFER for the Ultimate Herbal Experience Absolutely LEGAL and Marvelously POTENT Kiff possess all of the positive virtues fine ganja or cannabis without any of the negatives These all have NO side effects NO dependency and are Vivaciously Mellow It is formulated in accordance with the Taoist herbal principle of botanical interactiveness All products are Satisfaction Guaranteed you will NOT want to miss out on them TRY THE BODY MIND AND SPIRIT HEAVENLY INTRO COMBINATION OFFER GET THIS Erotic Aphrodisia it is a wonderful Sexual Intensifier These are made with herbs of Power which are master blended to emphasize body mind and spirit Our products are best when taken upon an empty stomach Persons taking any precsription medication should consult with their health care providers Try our obscure multidimensional singular leafy smoking and brewing ethnobotanicals TRY our LEGAL CANNABIS ALTERNATIVES they will help you MeLoW OuT There is ABSOLUTELY nothing else quite like our herbs Our HERBS are blended according to ancient Tanatric methods of exploring the pleasure of SEX Using these herbs you can explore ancient and exotic SEXUAL EXPEREMENTS LEGALLY I guarantee your life will never be the same again SEEING IS BELIEVING I truly look forward to making you another SATISFIED CLIENT Use our herbs to enjoy Tantra which is the art of CARNAL SEXUAL exploration These herbs are major mood enhancers they make you feel HAPPY and SERENE Our ginsing increases physical and mental endurance MASSIVELY The ginsenosides in our ginsing have bee proven to help the body to respond to stress This offer is NOT available in stores Order now and get a FREE herb pipe for your SMOKING PLEASURE Use our viripotent cannabis alternatives for blissful regressions of vexatious depressions Our kiff is indeed the BEST marijuana or cannabis alternative on the planet Our amalgamations are high concentrates of rare euphoric herbas for maximum PLEASURE We use only the highest quality Chavana Prash and Black Seed Herbs in our amalgams We have tons of hard to get Asian Herbs for Serenity and Joyful Living With these herbs you can experience the dynamic energization of body mind and spirit Our special compounds prolificate molecular communion to achieve herbal efficaciousness Every item is always on sale on our website so visit there NOW Many people do not realize the hidden dangers of Excessive Stress in their lives Everyone at one time or another can use a health enhancing vitamin supplement or herbal remedy The ISC Wellness Association can help you find the perfect gift Try these today and feel the energy flow you need to get things done Stress has often been referred to as a silent killer We have just what you are looking for CARE FOR YOUR SKIN THE WAY NATURE INTENDED Put your best face forward by using our Skin Care Products Most people love the natural nourishing qualities of our products and you will too We offer more than just vitamins herbs and supplements While the FDA will not allow us to call this a miracle cure we do not know what else to call it Clinical tests of our products have show that they enhance SEXUAL ECTASY Use our androstenedione to unlock your natural sexual potential These offers are NOT available in stores Try our tribulus terrestis to increase Luteinzing hormone levels THOUSANDS OF SATISFIED CUSTOMERS CANNOT BE WRONG Get What Is Perhaps The Most Powerful Aphrodisiac Ever Discovered Get More Energy And Explode Your Sex Life Drop Those Extra Pounds And Feel Like A Teenager Again Turn Your Life Around With Herbal Medicine Get Back In Control Of Your Life Consult With A Herbal Professional Today Get some of our HUNZA DIET BREAD it is said to beat all fad diets hands down IF YOU'VE BEEN LOOKING FOR THE MIRACLE FOR LOSING WEIGHT WITH NO HUNGER THEN READ ON These are all TOTALLY Natural with no negative side effects WE ARE BLOWING THE PHARMACY GUIDE OUT DURING THIS SPECIAL Get all the EXPERIMENTAL DRUGS you need here Order from us and we can even send your presecriptions in by mail We have put together THE COMPLETE PHARMACY GUIDE of MEXICO to help you save BIG MONEY on drugs The Information we have obtained may be Your First Step towards a better tomorrow If you do not have health insurance you are paying extremely high prices for your medications With our services you do not need to leave the privacy and comfort of your home GO TO OUR WEBSITE NOW AND JOIN OUR CLUB You can order EVERYTHING online from us Lose weight and inches without stimulants using our products Lower cholesterol without drugs with our products Control acne without antibiotics with our all NATURAL herbal remedies You Should Use Our Herbal V Which is An Incredible All Natural Natural Alternative to Viagra Welcome to the New Sexual Revolution We Use ONLY The Highest Quality Pharmaceutical Grade Pure Nutriceuticals With The Herbs We Sell You Can Be a Real Man Again These amazing formulas first became popular with Hollywood insiders and the wealthy elite Simply put these can make your sex life INCREDIBLE According to clinical trials our products really are CURE ALLS These cures are so wonderful the FDA is keeping them SECRET You simply have to learn the PLEASURES of these herbs which THEY do not want you to know END_CURES foreach $line (@tospam) { # Collapse whitespace to help matching. s/^\s+//; s/\s+$//; s/\s+/ /g; warn "Erroneous punctuation (! or .) found in cure all spam." if m/[!.]/; } return; } # Just in case someone adds new genres too & is forgetful :] warn "Error: invalid call to get_spamtype($needs)"; }