#!/usr/bin/perl
#############################
# Nepokatneza GUI Edition 1.7
#
# Coded by Perforin
#
# www.perforins-software.de.vu
# www.dark-codez.org
#
# [ Neue Filter, neues Aussehen, neuer Code! ]
#
# Userscan ist noch Beta!
# Update folgt vielleicht noch einmal ;-)
#
#
#
#
#############################
use Tk;
use Tk::NoteBook;
use Tk::PNG;
use LWP::UserAgent;
use LWP::Simple;
$version = "1.7";
$main = MainWindow->new();
$main->title ("+++ Nepokatneza +++ V$version Coded by Perforin www.perforins-software.de.vu");
$image = "IMAGES\\icon.gif";
$icon = $main->Photo(-file => $image);
$main->iconimage($icon);
$mb = $main->Frame(-relief => 'sunken', -bd => 1);
$m_Help = $mb->Menubutton(-text => "Befehle",-underline => 1);
$m_About = $mb->Menubutton(-text => "About",-underline => 1);
$m_Exit = $mb->Menubutton(-text => "Exit",-underline => 1);
$mb->pack(-side => "top",-fill => "x");
$m_Help->pack(-side => "left");
$m_About->pack(-side => "left");
$m_Exit->pack(-side => "left");
$m_Help->command(-label => "Autoscan",-command => [\&helpautoscan]);
$m_Help->command(-label => "Userscan",-command => [\&helpuserscan]);
$m_Help->command(-label => "Webscan",-command => [\&helpwebscan]);
$m_Help->command(-label => "Trashscan",-command => [\&helptrashscan]);
$m_Help->command(-label => "Mailgen",-command => [\&helpmailgen]);
$m_Help->command(-label => "Search File",-command => [\&helpsearchfile]);
$m_Help->command(-label => "Listbox Cleanen",-command => [\&listboxclean]);
$m_About->command(-label => "Credits",-command => [\&credits]);
$m_Exit->command(-label => "Exit",-command => [\&exitus]);
$links = $main->Frame(-relief => 'sunken', -bd => 1)->pack(-side => 'left', -anchor => 'nw');
$linksunten = $links->Frame()->pack(-side => 'bottom', -anchor => 's');
$rechts = $main->Frame(-background => 'black')->pack(-side => 'left', -anchor => 'ne');
$linksunten->Photo('mails', '-format' => 'png', -file => "IMAGES\\mails.png");
$linksunten->Label('-image' => 'mails')->pack(-side => 'left', -anchor=>'nw');
$mail_liste = $rechts->Listbox(-height => 25)->pack(-side => 'left',-fill => 'both',-expand => 1,-anchor
=> 'e');
$scroll = $main->Scrollbar(-command => [ 'yview', $mail_liste ]);
$mail_liste->configure(-yscrollcommand => [ 'set', $scroll ]);
$scroll->pack(-side => 'right',-fill => 'y',);
$note = $links->NoteBook()->pack();
$page = $note->add('Notebook-0', -label => ' Index ');
$page1 = $note->add('Notebook-1', -label => ' Autoscan ');
$page2 = $note->add('Notebook-2', -label => ' Userscan ');
$page3 = $note->add('Notebook-3', -label => ' Webscan ');
$page4 = $note->add('Notebook-4', -label => ' Trashscan ');
$page5 = $note->add('Notebook-5', -label => ' Mailgen ');
$page6 = $note->add('Notebook-6', -label => ' Search File ');
$page->Photo('logo', '-format' => 'png', -file => "IMAGES\\LOGO.png");
$page->Label('-image' => 'logo')->pack(-side=> 'top');
$intro_header = $page->Label (-text=>"\n\UNepokatneza v$version [Mail
Extractor]\E",-font=>"system")->pack();
$intro_beschreibung = $page->Label (-text=>"Nepokatneza ist ein Mail Spider,\nder komplett in Perl geschrieben wurde.\nPerfekt
für die Spammer unter euch.\n")->pack();
$funktionen_header = $page->Label (-text=>"+++++[ Funktionen ]+++++",-font=>"system")->pack();
$funktionen_message = $page->Label (-text=>"-Autoscan\n-Userscan\n-Webscan\n -Trashscan\n-Mailgen \n-Search
File\n\n")->pack();
$entry = $page->pack();
$local_welcome = $page1->Label (-text=>"+++[ Autoscan ]+++\n",-font=>"system")->pack();
$local_about = $page1->Label(-text=>"Nepokatneza scannt per Knopfdruck vollautomatisch\nnach Email Adressen mit allen ihm bekannten
Filtern!\n\n")->pack();
$local_pfad_angeben = $page1->Label (-text=>"Dateipfad:")->pack(-side=>"top",-anchor=>'w');
$local_pfad = $page1->Entry (-width=>35)->pack(-side=>"top",-anchor=>'w');
$local_button = $page1->Button(-text=>"Mails suchen",
-font=>"system",
-background=>"green",
-command=>[\&autoscan])
->pack(-side=>"bottom",-anchor=>'e');
$user_welcome = $page2->Label (-text=>"+++[ Userscan ]+++\n",-font=>"system")->pack();
$user_welcome = $page2->Label (-text=>"Hier kann der User entscheiden\nwelche Zeichen gefiltert werden sollen!\n")->pack();
$user_input = $page2->Label (-text=>"Filter:")->pack(-side=>"top",-anchor=>'w');
$user_filterinput = $page2->Entry (-width=>35)->pack(-side=>"top",-anchor=>'w');
$user_fileinput = $page2->Label (-text=>"Dateipfad:")->pack(-side=>"top",-anchor=>'w');
$user_fileinputENTRY = $page2->Entry (-width=>35)->pack(-side=>"top",-anchor=>'w');
$user_checkbox = $page2->Checkbutton(-text => "Default Filterung mitnutzen? ",
-variable => \$user_checkbox_true,
-onvalue => "ready",
-offvalue => "aus")
->pack(-side=>"top",-anchor=>'w');
$user_button = $page2->Button(-text=>"Filter",
-font=>"system",
-background=>"green",
-command=>[\&userscan])
->pack(-side=>"bottom",-anchor=>'se');
$web_welcome = $page3->Label (-text=>"+++[ Webscan ]+++\n",-font=>"system")->pack();
$user_welcome = $page3->Label (-text=>"Durchsucht Websites nach Mail Adressen!\nSucht speziel nach dem mailto:
befehl.\n\n")->pack();
$web_url_angeben = $page3->Label (-text=>"Adresse:")->pack (-side=>"top",-anchor=>'w');
$web_url = $page3->Entry (-width=>35)->pack(-side=>"top",-anchor=>'w');
$web_checkbox = $page3->Checkbutton(-text => "Searchfile benutzen?",
-variable => \$web_checkbox_true,
-onvalue => "ready",
-offvalue => "noe")
->pack(-side=>"top",-anchor=>'w');
$web_button= $page3->Button(-text=>"Mails suchen",
-font=>"system",
-background=>"green",
-command=>[\&webscan])
->pack(-side=>"bottom",-anchor=>'se');
$trash_welcome = $page4->Label (-text=>"+++[ Trashscan ]+++\n",-font=>"system")->pack();
$trash_erklaerung = $page4->Label (-text=>"Um die Scans wirksamer zu machen\nkann man hiermit nach Duplikaten sowie nach Trashmails
suchen.\nDiese werden dann ausgemistet um ein besseres Ergebniss zu erzielen!\n\n")->pack();
$trash_erkannte_header = $page4->Label (-text=>"+++++[Erkannte Trashmails]+++++",-font=>"system")->pack();
$trash_erkannte_trashmails = $page4->Label
(-text=>"-Trash-mail.com\n-sofort-mail.de\n-spambog.com\n-emaildienst.de\n-discardmail.com\n-jetable.org\n-eintagsmail
.de\n-spamgourmet.com")->pack();
$trash_button = $page4->Button(-text=>"Suche Trash",
-font=>"system",
-background=>"green",
-command=>[\&trashscan])
->pack(-side=>"bottom",-anchor=>'e');
$mailGEN_welcome = $page5->Label (-text=>"+++[ Mailgen ]+++",-font=>"system")->pack();
$mailGEN_welcome = $page5->Label (-text=>"Generiert aus einer Wordlist, Mail-Adressen!")->pack();
$mailGEN_checkbox1 = $page5->Checkbutton(-text => '@hotmail.com ',
-variable => \$AThotmail)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox2 = $page5->Checkbutton(-text => '@yahoo.de ',
-variable => \$ATyahoo)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox3 = $page5->Checkbutton(-text => '@gmail.com ',
-variable => \$ATgmail)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox4 = $page5->Checkbutton(-text => '@gmx.com ',
-variable => \$ATgmx)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox5 = $page5->Checkbutton(-text => '@web.de ',
-variable => \$ATweb)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox6 = $page5->Checkbutton(-text => '@mail.ru ',
-variable => \$ATmailru)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox7 = $page5->Checkbutton(-text => '@msn.com ',
-variable => \$ATmsn)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox8 = $page5->Checkbutton(-text => '@firemail.de ',
-variable => \$ATfiremail)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox9 = $page5->Checkbutton(-text => '@directbox.com ',
-variable => \$ATdirectbox)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_checkbox9 = $page5->Checkbutton(-text => '@lycos.de ',
-variable => \$ATlycos)
->pack(-side=>"top",-anchor=>'w');
$mailGEN_button = $page5->Button(-text=>"Generiere Mails",
-font=>"system",
-background=>"green",
-command=>[\&mailgen])
->pack(-side=>"bottom",-anchor=>'se');
$searchfile_header = $page6->Label(-text=>"+++[ Search File ]+++\n",-font=>"system")->pack();
$searchfile_erklaerung = $page6->Label(-text=>"Hier kann man URL Adressen eintragen\ndie danach beim Webscan benutzt werden
können!")->pack();
$searchfile_button = $page6->Button(-text=>"Suchdatei erstellen",
-font=>"system",
-background=>"green",
-command=>[\&search_file])
->pack(-side=>"bottom",-anchor=>'e');
$input = $page6->Text(-height=>10,
-width=>67)
->pack(-side => 'left');
$entry->focus();
print "=> GUI geladen."."\n";
MainLoop();
sub autoscan {
print "=> Autoscan."."\n";
$mailcount = 0;
$pfad = $local_pfad->get;
open(FILE,"<", "$pfad");
open(SORTED,">", "sorted.scan");
foreach $word (<FILE>) {
$word =~ tr/ /\n/;
$word =~ tr/:/\n/;
$word =~ tr/'/\n/;
$word =~ s/_at_/@/i;
$word =~ s/_dot_/./i;
$word =~ s/<at>/@/i;
$word =~ s/<dot>/./i;
$word =~ s/\[at\]/@/i;
$word =~ s/\[dot\]/./i;
$word =~ s/\{at\}/@/i;
$word =~ s/\{dot\}/./i;
print SORTED $word;
}
close(FILE);
close(SORTED);
open(SORTED,"<","sorted.scan");
open(MAILS,">>", "nepokatneza-mails.txt");
foreach $line (<SORTED>) {
if ($line =~ m/(@)/) {
if ($line =~ m/\.\w\w\w?/) {
$mailcount++;
chop($line);
print MAILS "$line\n";
$mail_liste->insert('end',"$line");
}
}
}
close(SORTED);
close(MAILS);
unlink "sorted.scan";
$linksunten->Label(-text => "$mailcount")->pack(-side => 'left', -anchor=>'w');
}
sub userscan {
print "=> Usercan."."\n";
($filter,$pfad) = ($user_filterinput->get,$user_fileinputENTRY->get);
if ($user_checkbox_true =~ m/ready/i) {
print "Userscan mit nutzung der Default Filter\n";
open(FILE,"<", "$pfad");
open(SORTED,">", "sorted.scan");
foreach $word (<FILE>) {
$word =~ tr/ /\n/;
$word =~ tr/:/\n/;
$word =~ tr/'/\n/;
$word =~ s/_at_/@/i;
$word =~ s/_dot_/./i;
$word =~ s/<at>/@/i;
$word =~ s/<dot>/./i;
$word =~ s/\[at\]/@/i;
$word =~ s/\[dot\]/./i;
$word =~ s/\{at\}/@/i;
$word =~ s/\{dot\}/./i;
$word =~ s/$filter/\n/;
print SORTED $word;
}
close(FILE);
close(SORTED);
open(SORTED,"<","sorted.scan");
open(MAILS,">>", "nepokatneza-mails.txt");
foreach $line (<SORTED>) {
if ($line =~ m/(@)/) {
if ($line =~ m/\.\w\w\w?/) {
$mailcount++;
chop($line);
print MAILS "$line\n";
$mail_liste->insert('end',"$line");
}
}
}
close(SORTED);
close(MAILS);
unlink "sorted.scan";
$linksunten->Label(-text => "$mailcount")->pack(-side => 'left', -anchor=>'w');
} else {
print "Userscan ohne nutzung der Default Filter\n";
open(FILE,"<", "$pfad");
open(SORTED,">", "sorted.scan");
foreach $word (<FILE>) {
foreach $filter (@filter) {
$word =~ tr/$filter/\n/;
print SORTED $word;
}
}
close(FILE);
close(SORTED);
open(SORTED,"<","sorted.scan");
open(MAILS,">>", "nepokatneza-mails.txt");
foreach $line (<SORTED>) {
if ($line =~ m/(@)/) {
if ($line =~ m/\.\w\w\w?/) {
$mailcount++;
chop($line);
print MAILS "$line\n";
$mail_liste->insert('end',"$line");
}
}
}
close(SORTED);
close(MAILS);
unlink "sorted.scan";
$linksunten->Label(-text => "$mailcount")->pack(-side => 'left', -anchor=>'w');
}
}
sub webscan {
print "=> Web Benutzung mit URL File."."\n";
$mailcount = 0;
if ($web_checkbox_true =~ m/ready/i) {
print "=> Web Benutzung mit Search File."."\n";
open(SF,"<","nepokatneza.search");
foreach $addy (<SF>) {
chop($getTHEmails = "$addy");
$agent = new LWP::UserAgent;
$request = HTTP::Request->new('GET',$getTHEmails);
$result = $agent->request($request);
$getTHEmails =~ s/.*\///;
$getTHEmails = "temp1.txt";
open(lookME, ">>", "temp1.txt") || die print "Datei konnte nicht erstellt werden!\n";
print lookME $result->content();
close(lookME);
}
close(SF);
open(IP,"<","temp1.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
foreach $line (<IP>) {
$line =~ tr/<//;
$line =~ tr/>//;
$line =~ tr/\///;
$line =~ tr/"/\n/;
$line =~ s/HREF=//g;
$line =~ s/mailto:/\n/g;
push(@temp2,"$line");
}
close(IP);
unlink "temp1.txt" || die print "Datei konnte nicht geloescht werden!\n";
open(temp2, ">", "temp2.txt") || die print "Datei konnte nicht erstellt werden!\n";
print temp2 @temp2;
close(temp2);
open(temp3, "<", "temp2.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
for $mails (<temp3>) {
if ($mails =~ m/.@/) {
if ($mails =~ m/\.\w\w\w?/) {
$mailcount++;
chop($mails);
$mail_liste->insert('end',"$mails");
push(@mails,"$mails");
}
}
}
close(temp3);
unlink "temp2.txt" || die print "Datei konnte nicht geloescht werden!\n";
open(output, ">>", "nepokatneza-mails.txt") || die print "Datei konnte nicht erstellt werden!\n";
print output @mails;
close(output);
$linksunten->Label(-text => "$mailcount")->pack(-side => 'left', -anchor=>'w');
} else {
print "=> Web Benutzung ohne URL File."."\n";
$pfad = $web_url->get;
$getTHEmails = "$pfad";
$agent = new LWP::UserAgent;
$request = HTTP::Request->new('GET',$getTHEmails);
$result = $agent->request($request);
$getTHEmails =~ s/.*\///;
$getTHEmails = "temp1.txt";
open(lookME, ">", "temp1.txt") || die print "Datei konnte nicht erstellt werden!\n";
print lookME $result->content();
close(lookME);
open(IP,"<","temp1.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
foreach $line (<IP>) {
$line =~ tr/</\n/;
$line =~ tr/>/\n/;
$line =~ tr/\//\n/;
$line =~ tr/"/\n/;
$line =~ s/HREF=//;
$line =~ s/mailto:/\n/g;
push(@temp2,"$line");
}
close(IP);
unlink "temp1.txt" || die print "Datei konnte nicht geloescht werden!\n";
open(temp2, ">", "temp2.txt") || die print "Datei konnte nicht erstellt werden!\n";
print temp2 @temp2;
close(temp2);
open(temp3, "<", "temp2.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
for $mails (<temp3>) {
if ($mails =~ m/.@/) {
if ($mails =~ m/\.\w\w\w?/) {
$mailcount++;
chop($mails);
$mail_liste->insert('end',"$mails");
push(@mails,"$mails");
}
}
}
close(temp3);
unlink "temp2.txt" || die print "Datei konnte nicht geloescht werden!\n";
open(output, ">>", "nepokatneza-mails.txt") || die print "Datei konnte nicht erstellt werden!\n";
print output @mails;
close(output);
$linksunten->Label(-text => "$mailcount")->pack(-side => 'left', -anchor=>'w');
}
}
sub trashscan {
print "=> Duplikate und Trashmails loeschen"."\n";
open(duplikate, "<", "nepokatneza-mails.txt") || die print "Datei konnte nicht geoeffnet werden!\n";
$count_dups = 0;
%hash = ();
for (<duplikate>) {
$hash{$_} = 1;
$count_dups++;
}
close(duplikate);
open(dupfrei, ">", "duplikate.scan") || die $page4->messageBox (-message=>"Scan File konnte nicht erstellt
werden!");
@dups = keys(%hash);
@sorted_dups = sort(@dups);
$sorted_dups = int(@sorted_dups);
$anzahl_dups = $count_dups-$sorted_dups;
print dupfrei @sorted_dups;
close(dupfrei);
open(TrashScan,"<","duplikate.scan") || die $page4->messageBox (-message=>"Scan File nicht gefunden!");
open(Clean,">","nepokatneza-mails.txt") || die $page4->messageBox (-message=>"Mail File konnte nicht erstellt
werden!");
$TRASH = 0;
for $MAILS (<TrashScan>) {
if ($MAILS =~ m/\@trash-mail.com/i) {
$MAILS =~ s/$MAILS//;
$TRASH++;
}
if ($MAILS =~ m/\@sofort-mail.de/i) {
$MAILS =~ s/$MAILS//;
$TRASH++;
}
if ($MAILS =~ m/\@spambog.com/i) {
$MAILS =~ s/$MAILS//;
$TRASH++;
}
if ($MAILS =~ m/\@emaildienst.de/i) {
$MAILS =~ s/$MAILS//;
$TRASH++;
}
if ($MAILS =~ m/\@discardmail.com/i) {
$MAILS =~ s/$MAILS//;
$TRASH++;
}
if ($MAILS =~ m/\@jetable.org/i) {
$MAILS =~ s/$MAILS//;
$TRASH++;
}
if ($MAILS =~ m/\@eintagsmail.de/i) {
$MAILS =~ s/$MAILS//;
$TRASH++;
}
if ($MAILS =~ m/\@spamgourmet.com/i) {
$MAILS =~ s/$MAILS//;
$TRASH++;
}
print Clean $MAILS;
}
close(TrashScan);
close(Clean);
unlink "duplikate.scan";
$page4->messageBox (-message=>"Duplikate: $anzahl_dups \nTrashMails: $TRASH \n\ngelöscht!");
print "=> Duplikate und TrashMails geloescht."."\n";
}
sub mailgen {
print "=> Mails generieren."."\n";
print "=> Wordlist runterladen."."\n";
$content=getstore('http://www.milw0rm.com/mil-dic.php','mil-dic.txt');
open(mille,"<","mil-dic.txt");
print "=> Wordlist runtergeladen."."\n";
open(gen,">","nepokatneza-mgen.txt");
foreach $string (<mille>) {
$string =~ s/\n//;
print gen $AThotmail?"$string".'@hotmail.com'."\n":"";
print gen $ATyahoo?"$string".'@yahoo.de'."\n":"";
print gen $ATgmail?"$string".'@gmail.com'."\n":"";
print gen $ATgmx?"$string".'@gmx.com'."\n":"";
print gen $ATweb?"$string".'@web.de'."\n":"";
print gen $ATmailru?"$string".'@mail.ru'."\n":"";
print gen $ATmsn?"$string".'@msn.com'."\n":"";
print gen $ATfiremail?"$string".'@firemail.de'."\n":"";
print gen $ATdirectbox?"$string".'@directbox.com'."\n":"";
print gen $ATlycos?"$string".'@lycos.de'."\n":"";
}
close(mille);
close(gen);
unlink "mil-dic.txt";
$page3->messageBox (-message=>"Mails erstellt!");
print "=> Mails erstellt."."\n";
}
sub search_file {
print "=> Search File erstellen."."\n";
open(SF,">","nepokatneza.search");
print SF $input->get('1.0', 'end');
close(SF);
$page6->messageBox (-message=>"Search File erstellt!");
print "=> URL File erstellt."."\n";
}
sub helpautoscan {
$main->messageBox (-message=>"-Autoscan-\nBeim Autoscan,\nfiltert Nepokatneza mit allen ihm bekannten Filtern.");
}
sub helpuserscan {
$main->messageBox (-message=>"-Userscan-\nBeim Userscan,\nkann der Benutzer selber wählen,\nwelche Zeichen gefiltert
werden sollen.");
}
sub helpwebscan {
$main->messageBox (-message=>"-Webscan-\nBeim Webscan,\nwird in einer Website nach Mails gescannt.");
}
sub helptrashscan {
$main->messageBox (-message=>"-Trashscan-\nBeim Trashcan,\nwerden Mailduplikate entfernt,\nund Trashmails aussortiert.");
}
sub helpmailgen {
$main->messageBox (-message=>"-Mailgen-\nBeim Mailgen,\nwerden Mails von den
Anbietern\n-Hotmail\n-Yahoo\n-Gmail\n-GMX\n-WEB\n-mail.ru\n-MSN\n-lycos\n-firemail\n-directbox\nerstellt.&
quot;);
}
sub helpsearchfile {
$main->messageBox (-message=>"-Search File-\nBei Search File,\nkann der Benutzer URLS eintragen,\ndie beim Webscan getestet
werden!");
}
sub listboxclean {
$size = $mail_liste->size();
$mail_liste->delete(0,$size);
}
sub credits {
$credits = MainWindow->new();
$credits->Label(-text=>"\UNepokatneza v$version\E",-font=>"system")->pack();
$credits->Label(-text=>"\nCoded by Perforin\n\nTrust your
technolust!\n********************\nwww.dark-codez.org\nwww.perforins-software.de.vu")->pack();
}
sub exitus {
exit;
}