Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   jabber: скрипт файл через сообщения (https://forum.antichat.xyz/showthread.php?t=58491)

C!klodoL 13.01.2008 18:47

jabber: скрипт файл через сообщения
 
это боты которые позволяют пересылать файлы как сообщения через жабер, писалось это для одного провайдера у которого есть свой жабер сервер (трафик к которому не оплачивается) но нет анлима, жабер закрыли, а боты остались, выкладываю, может быть кому нибудь пригодится

отправляющий бот
Код:

#!/usr/bin/perl -w

# jabber file transfer, sender bot
# C!klodoL

use strict;
use Net::XMPP;
use MIME::Base64;

my $hostname = 'somehost.net';
my $username = 'bot1';
my $password = 'P@$$w@rD';
my $acceptor = 'acceptor_bot@jabber.ru'; #принимающий бот
my $filesend = shift;
unless ($filesend) {
  print "Usage $0 fileforsend\n";
  exit 1;
}
open (FILE, '<'.$filesend);

my $client = Net::XMPP::Client->new();

$client->SetCallBacks(onauth => \&onAuth,);
$client->SetMessageCallBacks(#normal =>\&messageNormalCB,
                            chat    =>\&messageChatCB);

$client->Execute(hostname => $hostname,
                username => $username,
                password => $password,
                resource => 'Psi');

sub onAuth {
    $client->PresenceSend(show => 'online', priority => 10);
    $client->MessageSend(to  => $acceptor,
                        body => 'xNEWxFILEx:'.$filesend.':xNEWxFILEx',
                        type => 'chat');
}
 
sub messageChatCB {
    my ($sid, $mes) = @_;
    my $sender = $mes->GetFrom();
    my $body  = $mes->GetBody();
    my $thread = $mes->GetThread();
    my $s_jid  = $sender;
    $s_jid    =~ s|\/.*$||;
    my $reply  = '';
   
    print $body."\n";

    if ($body =~ /xNEXTx/)
    {
        sysread(FILE, my $buff, 100);
        if ($buff) {
            $reply = 'xFCONTx:'.encode_base64($buff).':xFCONTx';
        } else {
            $reply = 'xFILEENDx'
        }
    }
    print $reply."\n";
   
    $reply and $client->MessageSend(to      => $sender,
                                                  subject => '',
                                                  body    => $reply,
                                                  type    => 'chat',
                                                thread  => $thread);
}

принимающий бот

Код:

#!/usr/bin/perl -w

# jabber file transfer, acceptor bot
# C!klodoL

use MIME::Base64;
use strict;
use Net::XMPP;

my $hostname = 'somehost.net';
my $username = 'bot2';
my $password = 'P@$$w@rD';

my $directory = '/tmp/'; #директория для принимаемых файлов

my $client = Net::XMPP::Client->new();

$client->SetCallBacks(onauth => \&onAuth,);
$client->SetMessageCallBacks(#normal =>\&messageNormalCB,
                            chat    =>\&messageChatCB);

$client->Execute(hostname => $hostname,
                username => $username,
                password => $password,
                resource => 'Psi');

sub onAuth {
    $client->PresenceSend(show => 'online', priority => 10);
}

sub messageChatCB {
    my ($sid, $mes) = @_;
    my $sender = $mes->GetFrom();
    my $body  = $mes->GetBody();
    my $thread = $mes->GetThread();
    my $s_jid  = $sender;
    $s_jid    =~ s|\/.*$||;
    my $reply  = '';

    if ($body =~ /xNEWxFILEx:(.*):xNEWxFILEx/)
    {
        open (FILE, '>'.$directory.$1);
        print "[+] Opening file $1\n";
        $reply = 'xNEXTx';
    }
   
    if ($body =~ /xFCONTx:(.*):xFCONTx/s)
    {
        print FILE decode_base64($1);
        print $1;
        print "[+] Part of file accepted\n";
        $reply = 'xNEXTx';
    }
   
    if ($body =~ /xFILEENDx/)
    {
            close FILE;
            print "[+] End of file\n";
    }
   
   
    $reply and $client->MessageSend(to      => $sender,
                                                subject => '',
                                                body    => $reply,
                                                type    => 'chat',
                                                thread  => $thread);
}


satana8920 15.01.2008 23:03

хм... нет я имею ввиду что как можно написать socks 5 что б тоже через джабер бот принимающий и отдающий что б через сообщения тоже отдавал и принимал запросы. я знаю такое возможно еси с файлами можно то это тоже прокатит можно еще и с многопоточьностью замутить

Digimortal 15.01.2008 23:08

Цитата:

Сообщение от satana8920
я прошу прощения за может быть глупый вопрос можно как нибудь вот из этого сделать сокс 5 ??? если да то каким образом???

вопрос действительно глупый.. )


Время: 01:43