File: /usr/local/www/apache24/cgi-bin/easytecc4/easytecc.pm
package easytecc;
BEGIN {
if(-e '/etc/sudoers'){
my $osversion = `/usr/bin/uname -K`;
chomp $osversion;
my $perl;
if($osversion >= 1300000){
$perl = '5.34';
} elsif($osversion >= 1200000){
$perl = '5.26';
} elsif($osversion >= 1003000){
$perl = '5.24';
} else {
$perl = '5.20';
}
@INC = (
"/usr/iports/lib/perl5/site_perl",
"/usr/iports/lib/perl5/amd64-freebsd-thread-multi",
"/usr/iports/lib/perl5/$perl",
"/usr/iports/lib/perl5/$perl/mach",
"/usr/iports/lib/perl5/site_perl/mach/$perl",
"/usr/local/lib/perl5/site_perl",
"/usr/local/lib/perl5/amd64-freebsd-thread-multi",
"/usr/local/lib/perl5/$perl",
"/usr/local/lib/perl5/$perl/mach",
"/usr/local/lib/perl5/site_perl/mach/$perl",
"/usr/local/www/apache24/cgi-bin/easytecc4"
);
} else {
push @INC, '/home/httpd/cgi-bin/easytecc4';
}
}
use strict;
use IO::Socket;
$ENV{'PATH'} = '/usr/bin:/usr/sbin:/bin';
delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
sub extern_mx{
my $mxhost = `cat /etc/mxhost 2>/dev/null`;
chomp $mxhost;
return ($mxhost);
}
sub make_socket{
my $localhost = `resolveip -s localhost`;
chomp $localhost;
my $mxhost = extern_mx();
unless ($localhost =~ m#^(.*)$#) {
die "'$localhost' has invalid characters.\n";
}
$localhost = $1;
unless ($mxhost =~ m#^(.*)$#) {
die "'$mxhost' has invalid characters.\n";
}
$mxhost = $1;
my $socket=IO::Socket::INET->new(PeerAddr => $mxhost,
PeerPort => 6996,
LocalAddr => $localhost,
Proto => 'tcp',
Type => SOCK_STREAM,
Timeout => 60 )
or die "couldn't open port\n";
$socket->autoflush(1);
return($socket);
}
sub close_socket{
my $socket = shift;
close($socket);
}
sub encrypt{
my ($passwordfile,$encpass) = @_;
my $cyphertext = "";
my $number = '';
my $salt = 0;
my @cypher = unpack('C*',$encpass);
my @salt = ("43","112","120","36","96","94","68","43","62","15","89","12");
foreach $number (@cypher){
$number += $salt[$salt];
$cyphertext .= pack('C*',$number);
$salt++;
}
system("rm -f $passwordfile") if -e $passwordfile;
open (CRYPT , ">>$passwordfile");
print CRYPT $cyphertext;
close(CRYPT);
}
1;