Semplice script per filtrare virus

Viene allegato un semplice script shell che filtra velocemente i messaggi di posta per un utente locale.
Non è ovviamente il metodo più adeguato per identificare dei virus su un messaggio di posta, ma è rapido ed efficace per spostare su una casella separata (variabile $JUNKFILE) tutta la posta con allegati con estensione: exe, com, bat, pif, dll, vbs, vba, scr che di fatto costituiscono la maggior parte dei virus più diffusi.
Per usarlo basta editare (o creare) il file .forward dentro la propria home e scrivere qualcosa tipo:
"| /home/pizzi/bin/antivirus.sh"
(ovviamente usare il path e il nome dello script effettivo.
Modificare anche la variabile $UID adattandola al proprio username.

Lo script è stato realizzato in pochi minuti da Riccardo Pizzi (troppo pigro per postarlo personalmente su OpenSkills ;-) per gestire velocemente un carico inusuale di virus.
Ovviamente è fornito "AS IS" nessuno si prende alcuna responsabilità sul suo funzionamento.

#!/bin/sh
#
UID=pizzi
#
HOME=/home/$UID
SPOOLFILE=/var/spool/mail/$UID
JUNKFILE=$HOME/Mail/junked.mail
tmpf=/tmp/mfilter.$$
lockfile=/tmp/mfilter.lock
#
lower="abcdefghjkilmnopqrstuvwxyz"
upper="ABCDEFGHJKILMNOPQRSTUVWXYZ"
cat > $tmpf
junk=0
for attch in `head -200 $tmpf | grep "filename=" | tr -d "\"" | tr -s " " |
cut -d"=" -f2`
do
        ext=`echo $attch | awk -F. '{ print $NF }' | tr $upper $lower`
        case "$ext" in
                exe) junk=1; break;;
                com) junk=1; break;;
                bat) junk=1; break;;
                pif) junk=1; break;;
                dll) junk=1; break;;
                vbs) junk=1; break;;
                vba) junk=1; break;;
                scr) junk=1; break;;
                  *) junk=0;;
        esac
done
######################### critical code ################
while true
do
        if [ -f $lockfile ]
        then
                sleep 1
                continue
        fi
        touch $lockfile
        break
done
if [ $junk -eq 1 ]
then
        cat $tmpf >> $JUNKFILE
else
        cat $tmpf >> $SPOOLFILE
fi
rm $lockfile
######################### end critical code ################
rm -f $tmpf
exit 0

Privacy Policy