Category:
Author/Contact Info grimR@crypt.cc
Description: Script for accessing the shell from anything with an aol instant messager client. I wrote this taking advantage of the Net::OSCAR module. I use it to check the status of my server from my cell phone on aim and other places with aim clients. I thought others might be able to use it so here it is:
#!/usr/bin/perl
# encrypted hash generator for AIM Admin
# by grimR@crypt.cc
print 'Password: ';
chomp($pass = <STDIN>);
$try = "$pass";
$encrypted = crypt $try,MD5;
print 'Your hash is: ';
print "\n";
print $encrypted;
print "\n";
#!/usr/bin/perl
# AIM Admin v.01
# coded by grimR of crypt.cc <grimR@crypt.cc>
# Crypt website: http://www.crypt.cc

use Net::OSCAR qw(:standard);
$screenname = "controlledscreenname";                                 
+    # AIM Admin's screen name
$password = 'botpass';                                                
+    # password for screen name
$cmdtmp = "cmd.tmp";                                                  
+    # temp command log
$servlog = "srv.log";                                                 
+    # log file for access  
$version = ".1";                                                      
+    # access ONLY to this screen name
$botloc = '/home/grim/perl/aim.pl';                                   
+    # full path to this file
$perll = '/usr/bin/perl';                                             
+    # full path to perl
$owenr = 'masterscreennamehere';
$pass = 'mdj7KDOIk6FjY';                                              
+    # hash of encrypted pass
@incorrect = "ACCESS DENIED";                                         
+    # message for unauthorized

sub error {
    my($accessp, $connection, $errno, $error, $fatal) = @_;
    if($fatal) {
           sleep 2;
       exec("$perll $botloc") or print STDERR "couldnt exec $botloc: $
+!";    
 } else {
     print STDERR "Error $errno: $error\n";
    }
}

sub on_attempt {
    my($accessp, $sender, $message) = @_;
     if(1) {
open(ATTEMPT, '>', "atp.tmp");
print ATTEMPT "$message";
close(ATTEMPT);
open(TRY, '<', "atp.tmp");
$try = <TRY>;
@trying = split(/:/, $try);
close(TRY);
$encrypted = crypt($trying[0], $pass);
    if ($encrypted eq $pass) {
          $accessp->send_im("$sender", 'Output: ');
      open(LOG, '>>', "$servlog");
      print LOG "$sender: $trying[1]\n";
      $cm = "$trying[1]";
      system("$cm >$cmdtmp");
      open(CMDTMP, '<', "cmd.tmp");
      @cmdo = <CMDTMP>;
      close(CMDTMP);
      print "$sender: @cmdo";
      $accessp->send_im("$sender","<br>@cmdo");
      system("rm -rf cmd.tmp");
    }
else {
   print LOG "Unauthorized Attempt: $sender: $message\n"; 
   $accessp->send_im("$sender", 'Access attempt logged');
   $accessp->send_im("$sender", 'usage: password:command');
   }
}
}

sub signon_done($) {
    my $accessp = shift;
    print "AIM Admin v$version signed online and awaiting commands\n";
        $accessp->send_im("$owenr","I await your command master"); 
}

$accessp = Net::OSCAR->new();
$accessp->set_callback_error(\&error);
$accessp->set_callback_im_in(\&on_attempt);
$accessp->signon($screenname, $password);
$accessp->set_callback_signon_done(\&signon_done);           

while(1) {   
            $accessp->do_one_loop();
}