erlug
[Top] [All Lists]

[Erlug] Passatempo

To: erlug@xxxxxxxxxxxxxx
Subject: [Erlug] Passatempo
From: Enrico Zini <zinie@xxxxxxxxxxx>
Date: Thu, 18 Dec 2003 23:19:37 +0100
Ciao,

Mi è arrivato per caso uno spam (che è passato sotto ai miei occhi per
caso ancora più fortuito) il cui link "clicca qui per non inviare" era
nella forma
http://womc.info/pass.php?a=donotemail&b=localname@xxxxxxxxxx&c=true

Al ché, uno dice, sai mai...  e fa questo perlino per estrarre un po' di
domini di gente che non vuole essere spammata dalla mailbox ~/mail/spam:

#!/usr/bin/perl -w

my %doms;
while (<>)
{
        if (/http:\/\/(.+?\.(com|biz|org|info|net))\//)
        {
                my $dom = $1;
                $dom =~ s/=2E/./gi;
                $doms{$dom}++;
        }
}
for my $d (keys %doms)
{
        #print "$d: ", $doms{$d}, "\n";
        print "$d\n"
                if ($doms{$d} > 3)
}

Eseguo, salvo, tolgo un paio di domini che certi problemi se li
risolvono da soli, tipo lists.debian.org, dopodiché lo wrappo in questo
shellino:

#!/bin/sh
(
        for i in ~/mail/spam #list other mailboxes here
        do
                ./domainextract < $i | recode html..lat1
        done
) | sort | uniq

E mi vengono un po' di domini che hanno bisogno di aiuto.  Ora, siccome
io non so chi sono gli utenti a quei domini, ma dovranno averne un
casino perché sono molto famosi, facco apt-get install rig (che fa
sempre comodo) e metto assieme quest'altro pezzetto di perl:

#!/usr/bin/perl -w

use strict;
use warnings;

my @domains;
my @names;
my @lnames;

open(IN, "domlist") or die "Can't open domain names";
while(<IN>)
{
        chomp();
        push(@domains, $_);
}
close(IN);

for my $i ("/usr/share/rig/mnames.idx", "/usr/share/rig/fnames.idx")
{
        open(IN, $i) or die "Can't open $i: $!";
        while(<IN>)
        {
                s/[\r\n]+$//;
                push(@names, $_);
        }
        close(IN);
}

for my $i ("/usr/share/rig/lnames.idx")
{
        open(IN, $i) or die "Can't open $i: $!";
        while(<IN>)
        {
                s/[\r\n]+$//;
                push(@lnames, $_);
        }
        close(IN);
}

sub get(\@)
{
        my $list = shift;
        return ${$list}[int(rand(@{$list}))];
}

for (my $i = 0; $i < 2000; $i++)
{
        my $mail;
        my $algo = int(rand(3));
        if ($algo == 0)
        {
                $mail = get(@names);
        } elsif ($algo == 1) {
                $mail = lc((split('', get(@names)))[0]).get(@lnames);
        } elsif ($algo == 2) {
                $mail = lc(get(@names)).'.'.lc(get(@lnames));
        }
        $mail .= int(rand('9' x (1 + int(rand(4))))) if (rand(30) < 100);
        $mail .= '@'.$domains[int(rand(@domains))];
        print "$mail\n";
}

Ecco che ho un po' di mail che, sono sicuro, non vogliono avere più
comunicazioni da quel sito.  A quel punto, provvedo a notificare:

#!/bin/sh
for i in `cat mails`
do
        wget -O/dev/null "http://womc.info/pass.php?a=donotemail&b=$i&c=true";
done


Dite che può essere una cortesia carina?


Ciao,

Enrico

--
GPG key: 1024D/797EBFAB 2000-12-05 Enrico Zini <enrico@xxxxxxxxxx>

<Prev in Thread] Current Thread [Next in Thread>