From bf033f2dcf8ac67302fd5f750dc1d8716117b7c6 Mon Sep 17 00:00:00 2001 From: joey Date: Tue, 12 Nov 2002 19:15:30 +0000 Subject: [PATCH] updates --- spammer | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100755 spammer diff --git a/spammer b/spammer new file mode 100755 index 0000000..678e827 --- /dev/null +++ b/spammer @@ -0,0 +1,196 @@ +#!/usr/bin/perl +# Talk like a spammer. Copyright 2002 by Joey Hess +# Licensed under the GPL. +# +# Doesn't always generate proper engrish, but then neither do +# spammers. + +sub c { + return $_[rand @_]; +} + +sub line_of_yelling { + my @lines=split(/\n/, shift); + my $n=rand @lines; + $lines[$n] = uc($lines[$n]); + return join("\n", @lines); +} + +sub for_free { + return c(qw(100% completely totally absolutely))." ".c(qw(f F))."ree"; +} + +my $hits=0; + +if (rand > 0.75) { + $hits++; + $spam .= "Dear Friend, "; +} +elsif (rand > 0.9) { + $hits++; + $spam .= "Below is the result of your feedback form".c(qw{: . ..})."\n"; +} +elsif (rand > 0.75) { + $hits++; + $spam .= "This message is not spam!\n"; +} + +while (<>) { + # Try to trigger spam trappers. Keep count of the number of unique + # ones triggered. + @results = ( + s/^(Subject:\s+.*)/$1. ' ' x (rand(20) + 40) . rand(1000000)/eig, + s/free\b/for_free()/eig, + s/(email|message|e-mail|mail)\b/$1 (sent in compliance with regulations)/i, + s/(join|register|order|apply)/$1 today/ig, + s/money/big bucks/i, + s/check\b/check or money order/i, + s/(amazing|atonishing|neat|interesting)/AMAZING/ig, + s/guarantee\b/GUARANTEE/ig, + s/(profits|money)/PROFITS/ig, + s/(no questions asked|quiet|confidential|secret)\b/NO QUESTIONS ASKED/ig, + s/refund\b/full refund/i, + s/free\b/FREE/ig, + s/\b(full|complete|fully)\b/100% GUARANTEED/ig, + s/(spam|UCE)\b/c(qw(bulk direct mass))." email"/eig, + s/spammer/businessman/ig, + s/(call|phone|contact)\b/CALL NOW/ig, + s/business\b/online business/ig, + s/online\b/online business opportunities/ig, + s/number\b/social security number/ig, + s/addresses\b/addresses on cd/ig, + s/cdrom\b/addresses on cd/ig, + s/click\b/click here/ig, + s/viagra/c('VIAGRA', 'natural viagra', 'herbal viagra')/eig, + s/\btraffic\b/rand > 0.6 ? 'more web traffic' : 'traffic'/eig, + s/targeted/targeted traffic/ig, + s/limited/LIMITED TIME OFFER/ig, + s/buy\b/buy direct/ig, + s/profit\b/PURE PROFIT/ig, + s/opportunity/once in a lifetime opportunity/ig, + s/stock\b/STOCK PICK/ig, + s/access\b/INSTANT ACCESS/ig, + s/(diploma|credential)s?/college diploma$a/ig, + s/(penis|breast)/larger $1/ig, + s/\b(work|job)\b/home employment/ig, + s/experience\b/no experience needed!/ig, + s/printer\b/printer (toner cartridge)/ig, + s/(income|money|savings?)\b/you income/ig, + s/(amazing|amazed|atonished|interesting)/be amazed/ig, + s/(\$\d+\.?\d*)/for only $1!/ig, + s/natural/completly natural/ig, + s/obligation/no obligation/ig, + s/vacation\b/c(qw(dream special free))." vacation"/eig, + s/sign up\b/sign up today/ig, + s/cell (phone)?\b/free cell phone/ig, + s/(offer|trial|membership|website|quote|installation|sample|dvd|preview|leads)\b/free $1/ig, + s/\bvalue/outstanding value/ig, + s/shipping/shopping spree/ig, + s/winning/WINNING/ig, + s/winner\b/WINNER/ig, + s/promotion\b/special promotion/ig, + s/password\b/free password/ig, + s/\bcash\b/extra cash/ig, + s/cancel\b/cancel at any time/ig, + s/\bearn\b/earn up to/ig, + s/(movies|pics|photos|videos)/c(qw(hundreds thousands millions tons))." of $1"/eig, + s/\bporn\b/free porn/ig, + s/\blegal\b/c(qw(absolutely perfectly totall 100%))." legal"/eig, + s/(drugs|medications|pharmacy)/online $1/ig, + s/asset/hidden asset/ig, + s/\bsave\b/save thousands/ig, + s/partner/marketing partner/ig, + s/unlimited/UNLIMITED/ig, + s/\bprice\b/low price/ig, + s/galleries\b/huge galleries/ig, + # Convert phone numbers to 800 numbers. + s/(?:(?:1-)?[0-9]{3}-)?([0-9]{3}-[0-9]{4})/"1-".c(800,888)."-$1"/eg, + # de-http:// urls + s/http:\/\///ig, + ); + + # Merge result table into an overall results table that counts each + # item at most once. + for ($x=0; $x < $#results; $x++) { + if ($results[$x]) { + $overallresults[$x]=1; + } + } + + # Cute things that don't cause real hits. + s/\.(com|org|net|edu)\b/".".c(qw(info biz name))/eig; + s/([Ee])nglish/${1}ngrish/g if rand > 0.66; + $spam .= $_; +} + +$hits += $_ foreach @overallresults; + +if (rand > 0.5) { + # random line breaks make spam look + # more professional + # or is it just written in Notepad? + $spam =~ s/ /rand > 0.95 ? "\n" : " "/eg; +} +elsif (rand > 0.75) { + # I write my spam in MS WORD! + $spam =~ s/\n/ /g; +} +else { + $spam=line_of_yelling($spam); +} + +if (rand > 0.8 || $hits < 5) { + $spam .= "\nThis is a ".c(qw(one 1))." time ".c(qw(email e-mail offer)).c(qw(! .)); + $hits++; +} + +if (rand > 0.7 || $hits < 5) { + $spam .= "\n" . c('-' x 78, '~' x 70, '---', '', '', '', "\n\n\n\n") . "\n" . + c('To remove your address from ', 'To be removed from', 'To get off from', + 'To unsubscribe from', 'To receive no further notices on', + 'If you did not opt in for', 'To be removed from future mailings to') . + " " . + c('this mailing list', 'these mails') . " " . + c('please ', '') . + c('reply', 'send an email', 'write back') . " " . + c('with a subject of', 'and put in the subject the word') . " " . + c("REMOVE", '"remove"') . + c(qw(! . .)) . "\n"; + $hits++; +} + +# Desperate to make it look like a spam now, I insert arbitrary +# junk. +while ($hits < 5) { + if (rand > 0.66) { + $spam=line_of_yelling($spam); + $hits++; + } + elsif (rand > 0.5) { + # Insert a spam phrase after the end of a sentence. + @spam_phrases = ('FREE CONSULATATION', 'INSTANT ACCESS', + 'PURE PROFIT', 'STOCK PICK', 'VIAGRA', 'WINNER', + 'WINNING', 'LIMITED TIME OFFER', 'extra cash', + 'CALL NOW', 'once in a lifetime opportunity', + 'cancel at any time', 'no experience needed', + 'no obligation', 'save millions', 'be amazed', + for_free()); + $hits += $spam =~ s/\.\s+([A-Z])/". ".ucfirst(c(@spam_phrases)). "! $1"/es; + } + elsif (rand > 0.75) { + # large hexadecimal block + my @hex = ('A'..'F', 0..9); + for (1..70 + rand(9)) { + $spam .= $hex[rand @hex]; + } + $spam .= "\n"; + $hits++; + } + elsif (rand > 0.75) { + $spam .= c("SSPLTM ", "{%RAND%} "); + $hits++; + } +} + +$spam =~ s/\n/\r\n/g; +print "$spam\n"; -- 2.30.2