HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

perl передать файл через socket
  #1  
Старый 04.07.2009, 14:22
malik555
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
С нами: 9086760

Репутация: 1
По умолчанию perl передать файл через socket

Всем привет !

Подскажите как передать файл через по сокету на
сервер ?

Искал в нете что-то не нашел инфы !
 
Ответить с цитированием

  #2  
Старый 04.07.2009, 14:28
Kaimi
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
С нами: 9851426

Репутация: 1676


По умолчанию

Что есть сервер в данном случае, форма для аплоада файлов или скажем демон самописный принимающий файлы?
 
Ответить с цитированием

  #3  
Старый 04.07.2009, 14:31
ph1l1ster
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
С нами: 9561436

Репутация: 462
По умолчанию

server:

Код:
#!/usr/bin/perl

use strict;
use IO::Socket;

my $filename;

my @command;
 
my $server = IO::Socket::INET->new(
    Listen => 5,
    LocalAddr => '127.0.0.1',
    LocalPort => 5050,
    Proto     => 'tcp'
) or die "Can't create server socket: $!";
$server->autoflush(1);
 
while(my $client = $server->accept)
{
   while (<$client>)
   {
	print $_ ;
	@command = split(/ /, $_);
 
      if(lc(trim($command[0])) eq 'time')   { print $client &getTimeStamp()."\r\n"; }
      elsif(lc(trim($command[0])) eq 'hi')  { print $client "Hello!\r\n"; }
      
      ## if honeypot has some data to send
      elsif(lc(trim($command[0])) eq 'send') 
      {
      		print $client "You said to send some data\r\n";
      }
      
      ## if we see put command then save the file
      
      elsif(lc(trim($command[0])) eq 'put')
      {
      	if(defined($command[1]) && -e trim($command[1]))
      	{
      		$filename = trim($command[1]);
      		print $client "GOAHEAD\r\n";
      		
      		open FILE, ">./filez_t/$filename";
            binmode FILE;
            while (<$client>)
            {
                if (trim($_) eq 'DONE')
                {
                	close FILE;
                	last;
                }
                
                print FILE $_;
            }
            close FILE;
 			print $client "Thanks for sending the file\n"
       }
     }	
      else { print $client "Unknown Command\r\n"; }
      	}
      }

sub getTimeStamp
{
   # Get the all the values for current time
   (my $Second, my $Minute, my $Hour, my $Day, my $Month, my $Year, my $WeekDay, my $DayOfYear, my $IsDST) = localtime(time);
 
   # adding 1900 will create a four digit year value
   $Year = $Year - 100;
 
   # Adding 1 to month because months don't start at 0
   $Month++;
 
   #format the current time into the correct format and return it
   return sprintf("%02d%02d%02d%02d%02d%02d",$Year,$Month,$Day,$Hour,$Minute,$Second);
}
 
 
sub trim($)
{
	my $string = shift;
	$string =~ s/^\s+//;
	$string =~ s/\s+$//;
        $string =~ s/[\r]+//;
        $string =~ s/[\n]+//;
	return $string;
}
client:

Код:
#!/usr/bin/perl
 
use strict;
use IO::Socket;
 
my $server = IO::Socket::INET->new(
    PeerAddr => '127.0.0.1',
    PeerPort => 5050,
    Proto    => 'tcp'
) or die "Can't create client socket: $!";
$server->autoflush(1);
 
my $i = 0;
my $msg;
my @command;
my $filename="who_connected.pl";

while(1)
{
   print "ASAP> ";
   $msg = <STDIN>;
   print $server $msg."\r";
 
   while(<$server>)
   {
      @command = split(/ /, $msg);
 
      if(lc(trim($command[0])) eq 'put')
      {
		$filename = trim($command[1]);
        
            open FILE, "$filename" or die "Can't open: $!";
            binmode FILE;
            while (<FILE>)
            {
               print $server $_;
		print "*";
            }
            close FILE;
            print $server "\nDONE\n";
      }
      		print $_ ."\n";
		last if eof($_);
   }
 
}
 
 
 
sub trim($)
{
	my $string = shift;
	$string =~ s/^\s+//;
	$string =~ s/\s+$//;
        $string =~ s/[\r]+//;
        $string =~ s/[\n]+//;
	return $string;
}
И ещё, http://www.perlmonks.org/?node_id=613739
http://b23.ru/btb
 
Ответить с цитированием

  #4  
Старый 04.07.2009, 14:31
malik555
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
С нами: 9086760

Репутация: 1
По умолчанию

Цитата:
Сообщение от Kaimi  
Что есть сервер в данном случае, форма для аплоада файлов или скажем демон самописный принимающий файлы?

В качестве сервера Демон самописный !

В качестве клиента - тоже обычный скрипт
и передать обычный файл который лежит у клиента на компе !
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если папка окрытая для закачки файлов. Можно ли залить файл через приложения? indikatdupena Уязвимости 17 12.04.2005 20:49



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.