I'm sure that writing the script was a great way to gain knowledge of the language but actively running this would be dangerous on many levels. Running a script that takes an unencrypted username and password across the internet and then runs a back-ticked is a waiting time-bomb.
-Dave ----- Original Message ----- From: "Martin, Greg (CSC)" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, December 23, 2002 3:50 PM Subject: MSN client - (RE: IF help) > You guys were so helpful, I want to share something I was hacking on today. > I saw an article last week on integrating instant messaging with an > application and it got me thinking. I found an MSN.pm and put together this > script which will log in to MSN Messenger and listen for connections. When > it receives a message, it will check to see if it is formatted correctly > (that is "password::cmd") and that the password is correct. If everything > jives, it processes the command and returns the results to the sender. > > Notes: > - This is rough and ugly, but seems to work (ymmv). (except 'password::dir > c:\' will not return the results) > > - requires MSN.PM from > http://www.adamswann.com/library/2002/msn-perl/index.html > (note, on line 135 of MSN.pm, change the host name. I used the > following: > $Host = shift || 'baym-cs71.msgr.hotmail.com'; > #'msgr-ns14.msgr.hotmail.com';) > - May be win32 specific > > - change the userid/password on line 5 to a valid msn messenger id > > - change the $strpwd as well! > > \\Greg Martin > > > -----included script msncl.pl (based on script at damjen.com)------ > #!/usr/bin/perl > > use MSN; > > my $client = MSN->new(); > $client->connect('[EMAIL PROTECTED]','msnpw', '', { > Status => \&Status, > Answer => \&Answer, > Message => \&Message, > Join => \&Join } > ); > > > sub Status { > print "Status() called with parameters:\n"; > print " " . join(",", @_), "\n"; > > } > > sub Message { > $strpwd = "PassW0rd"; > print "Message() called with parameters:\n"; > my ($clnt, $usr, $nicename, $msgtxt) = @_; > print $msgtxt, "\n"; > @fields = split /::/,$msgtxt; > $cmd = $fields[1]; > > if ($fields[0] eq $strpwd) { > $outmsg = "Got pw, executing command"; > print $outmsg . "\n"; > $$clnt->sendmsg($outmsg); > $output = `$cmd 2>&1`; > print $output; > $$clnt->sendmsg($output); > } > else { > $outmsg = "Bad pw"; > print $outmsg . "\n"; > $$clnt->sendmsg($outmsg); > > } > } > > sub Join { > print "Join() called with parameters:\n"; > print " " . join(",", @_), "\n"; > } > > sub Answer { > print "Answer() called with parameters:\n"; > print " " . join(",", @_), "\n"; > } > > > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Monday, December 23, 2002 3:17 PM > To: [EMAIL PROTECTED] > Subject: Re: IF help > > > [...] > MGC> I'm certain this has an obvious answer. Why does this "if" always pass > the > MGC> test? > MGC> $strpwd = "C0ll\@b"; > ... > MGC> if ($fields[0] == $strpwd) { > ... > > as compare operator use 'eq' (for strings) instead of '==' (for > numbers) > > > _______________________________________________ > ActivePerl mailing list > [EMAIL PROTECTED] > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > > > > ************************************************************************** > This e-mail and any files transmitted with it may contain privileged or > confidential information. It is solely for use by the individual for whom > it is intended, even if addressed incorrectly. If you received this e-mail > in error, please notify the sender; do not disclose, copy, distribute, or > take any action in reliance on the contents of this information; and delete > it from your system. Any other use of this e-mail is prohibited. Thank you > for your compliance. > > > > _______________________________________________ > ActivePerl mailing list > [EMAIL PROTECTED] > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > _______________________________________________ ActivePerl mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
