SpamTools для работы с базами (*NIX)

Discussion in 'Уязвимости Mail-сервисов' started by Un_0, 17 May 2007.

  1. Un_0

    Un_0 Elder - Старейшина

    Joined:
    11 Apr 2007
    Messages:
    43
    Likes Received:
    43
    Reputations:
    17
    Написал скрипт на bash ))

    Данный скрипт предназначен для работы с базами адресов электронной почты.
    Он состоит из нескольких утилит: генерация баз, сортировка, "выдергивание" адресов из файлов, cклеивание баз, разделение баз, вставка контрольного адреса.

    Для изменения консольного интерфейса на графический, раскомментируйте строку

    #"DIALOG=Xdialog"

    и закомментируйте строку

    "DIALOG=dialog".

    ===========

    Скачать скрипт можно с

    http://slil.ru/24381785

    ===========

    В процессе отладки и доводки, собрал базу адресов. Валидность не проверял. Но думаю, что больше 0% ))

    В базе около 1 млн. адресов.

    Скачать:

    http://slil.ru/24381712

    ===========

    Выслушаю пожелания о функциях. Хотелось бы узнать, стоит прикручивать wget + graber или нет. И как можно присобачить к этой ботве проверку на валид.
     
    1 person likes this.
  2. Un_0

    Un_0 Elder - Старейшина

    Joined:
    11 Apr 2007
    Messages:
    43
    Likes Received:
    43
    Reputations:
    17
    Чтоб не париться со slil.ru (то качает, то не качает), выкладываю здесь.

    Code:
    #!/bin/sh
    # Copyright (C) 2007 Un_0 <[email protected]>
    #
    #===========================================================================================================
    #DIALOG=Xdialog
    DIALOG=dialog
    #===========================================================================================================
    
    TITLE="SpamTools"
    MENU=""Select" 0 60 0 "1" "Graber" "2" "Sort" "3" "Generator" "4" "Join" "5" "Include" "6" "Split""
    
    #
    #===========================================================================================================
    #
    
    error()
    {
        echo "$1"
        exit 2
    }
    help()
    {
      cat <<HELP
    	###################################################################################
    	# Данный  скрипт  предназначен   для работы с базами  адресов электронной  почты. #
    	# Он   состоит из нескольких  утилит: генерация  баз, сортировка,  "выдергивание" #
    	# адресов из файлов, cклеивание баз, разделение баз, вставка контрольного адреса. #
    	#										  # 
    	# Для изменения  консольного  интерфейса на графический,  раскомментируйте строку #
    	# "DIALOG=Xdialog" и закомментируйте строку "DIALOG=dialog".                      #
    	###################################################################################
    HELP
      exit 0
    }
    
    #
    #===========================================================================================================
    #
    #опции командной строки
    
    while [ -n "$1" ]; do
    case $1 in
        -h) help;shift 1;;
        --help) help;shift 1;;
        --) shift;break;;
        -*) echo "error: no such option $1. -h for help";exit 1;;
        *)  break;;
    esac
    done
    
    #
    #===========================================================================================================
    #
        $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title $TITLE --menu $MENU 2> /tmp/sel.$$
        rval=$?
        clear
        if [ "$rval" = "0" ]; then
    
    sel=`cat /tmp/sel.$$`
    rm -f /tmp/sel.$$
    
    #
    #===========================================================================================================
    #
    
    if [ "$sel" = "1" ]; then
    
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Graber" \
            --inputbox "File (/base.txt):" 0 0 2> /tmp/inputbox.tmp.$$
    
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Graber" \
            --inputbox "Output (/mails.txt):" 0 0 2> /tmp/outbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
    
    output=`cat /tmp/outbox.tmp.$$`
    rm -f /tmp/outbox.tmp.$$
    
    input=`cat /tmp/inputbox.tmp.$$`
    rm -f /tmp/inputbox.tmp.$$
    
        grep -E -o -h '[-._a-zA-Z0-9]+@[-_.a-zA-Z0-9]+\.[a-zA-Z]{2,4}' $input  | sort | uniq | tr A-Z a-z >>$output
    
        { n=`grep -i . $output | wc -l`; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Found $n mails" 5 28 ; }
    
    rm -f /tmp/num.$$
    
    fi
    fi
    
    #===========================================================================================================
    
    else if [ "$sel" = "2" ]; then
    
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Sort" \
            --inputbox "Input (mails.txt):" 0 0 2> /tmp/inputbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Sort" \
            --inputbox "Output (/sort.txt):" 0 0 2> /tmp/outbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
    
    output=`cat /tmp/outbox.tmp.$$`
    rm -f /tmp/outbox.tmp.$$
    
    input=`cat /tmp/inputbox.tmp.$$`
    rm -f /tmp/inputbox.tmp.$$
    
        cat $input | sort | uniq | tr A-Z a-z >>$output
        
        { n=`grep -i . $output | wc -l`; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Parsed $n lines" 5 28 ; }
    
    fi
    fi
    
    #===========================================================================================================
    
    else if [ "$sel" = "3" ]; then
    
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Generator" \
            --inputbox "Input (/names.txt):" 0 0 2> /tmp/inputbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Generator" \
            --inputbox "Domain (mail.ru):" 0 0 2> /tmp/domain.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Generator" \
            --inputbox "Output (/Gen.txt):" 0 0 2> /tmp/outbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
    
    domain=`cat /tmp/domain.tmp.$$`
    rm -f /tmp/domain.tmp.$$
    
    input=`cat /tmp/inputbox.tmp.$$`
    rm -f /tmp/inputbox.tmp.$$
    
    output=`cat /tmp/outbox.tmp.$$`
    rm -f /tmp/outbox.tmp.$$
    
    	while read -r xx yy
    		do
    			printf "%s%s\n" "$yy" "$xx"@$domain >> $output
    		done < $input
    	
    	{ n=`grep -i . $output | wc -l`; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Create $n mails" 5 28 ; }
    
    fi
    fi
    fi
    
    #===========================================================================================================
    
    else if [ "$sel" = "4" ]; then
    
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Join" \
            --inputbox "Input files (/*.txt):" 0 0 2> /tmp/inputbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Join" \
            --inputbox "Output (/mails.txt):" 0 0 2> /tmp/outbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
    
    output=`cat /tmp/outbox.tmp.$$`
    rm -f /tmp/outbox.tmp.$$
    
    input=`cat /tmp/inputbox.tmp.$$`
    rm -f /tmp/inputbox.tmp.$$
    
        less $input | sort | tr A-Z a-z | uniq >> $output
        
        { n=`grep -i . $output | wc -l`; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Found $n lines" 5 28 ; }
    
    fi
    fi
    
    #===========================================================================================================
    
    else if [ "$sel" = "5" ]; then
    
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Include" \
            --inputbox "Input (/mails.txt):" 0 0 2> /tmp/inputbox.tmp.$$
    
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Include" \
            --inputbox "Mail ([email protected]):" 0 0 2> /tmp/mail.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Include" \
            --inputbox "Lines (10000):" 0 0 2> /tmp/spin.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Include" \
            --inputbox "Output (/include.txt):" 0 0 2> /tmp/outbox.tmp.$$
    
    mail=`cat /tmp/mail.tmp.$$`
    rm -f /tmp/mail.tmp.$$
    
    input=`cat /tmp/inputbox.tmp.$$`
    rm -f /tmp/inputbox.tmp.$$
    
    output=`cat /tmp/outbox.tmp.$$`
    rm -f /tmp/outbox.tmp.$$
    
    spin=`cat /tmp/spin.tmp.$$`
    rm -f /tmp/spin.tmp.$$
    
    n=0
    q=0
    
    while read -r xx yy
    		do
    			printf "%s%s\n" "$yy" "$xx" >> $output
    			n=`expr $n + 1`
    				if [ "$n" = "$spin" ]; then
    					echo $mail >> $output
    					n=0
    					q=`expr $q + 1`
    				fi
    		done < $input
    		
    	{ $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Include $q mails" 5 28 ; }
    
    fi
    fi
    fi
    
    #===========================================================================================================
    		
    else if [ "$sel" = "6" ]; then
    
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Split" \
            --inputbox "Input (/mails.txt):" 0 0 2> /tmp/inputbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Split" \
            --inputbox "Lines (10000):" 0 0 2> /tmp/spin.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
            
    $DIALOG --backtitle "SpamTools by Un_0 v0.3" --title "Split" \
            --inputbox "Output dir (/home/):" 0 0 2> /tmp/outbox.tmp.$$
            
    retval=$?
    
    if [ "$retval" = "0" ]; then
    
    input=`cat /tmp/inputbox.tmp.$$`
    rm -f /tmp/inputbox.tmp.$$
    
    output=`cat /tmp/outbox.tmp.$$`
    rm -f /tmp/outbox.tmp.$$
    
    spin=`cat /tmp/spin.tmp.$$`
    rm -f /tmp/spin.tmp.$$
    
    n=0
    k=1
    
    while read -r xx yy
    		do
    			printf "%s%s\n" "$yy" "$xx"@$domain >> "$output""split_"$k
    			n=`expr $n + 1`
    				if [ "$n" = "$spin" ]; then
    					k=`expr $k + 1`
    					n=0
    				fi
    		done < $input
    		
    	{ k=`expr $k - 1` ; $DIALOG --backtitle "SpamTools by Un_0 v0.3" --msgbox "Create $k files" 5 28 ; }
    	
    fi
    fi
    fi
    fi
    
    #===========================================================================================================
    
    fi
    fi
    fi
    fi
    fi
    fi
    
    #===========================================================================================================
    
    clear
    
    #===========================================================================================================
    
     
  3. bezpaniki

    bezpaniki New Member

    Joined:
    5 Feb 2007
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    вечером попробую потестить.
     
  4. parik

    parik Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    0
    Likes Received:
    6
    Reputations:
    0
    Un_0
    Если занимаешься написанием спам скриптов,то стукни мне,ася в подписи
     
  5. _SploiT_

    _SploiT_ Elder - Старейшина

    Joined:
    9 May 2007
    Messages:
    88
    Likes Received:
    16
    Reputations:
    1
    Не чего такой скриптик... +1 с меня