ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

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

Всем привет !

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

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

  #2  
Старый 04.07.2009, 14:28
Аватар для Kaimi
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

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

  #3  
Старый 04.07.2009, 14:31
Аватар для ph1l1ster
ph1l1ster
Постоянный
Регистрация: 11.03.2008
Сообщений: 347
Провел на форуме:
2075230

Репутация: 462
Отправить сообщение для ph1l1ster с помощью ICQ
По умолчанию

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
malik555
Участник форума
Регистрация: 04.02.2009
Сообщений: 132
Провел на форуме:
350627

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

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

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

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL-injection и не только, через cookies k00p3r Чужие Статьи 0 12.06.2005 12:46
Безопасность приложений на Perl k00p3r Чужие Статьи 0 12.06.2005 09:39
Получение шела через Cgi приложения k00p3r Чужие Статьи 0 08.06.2005 15:04
Если папка окрытая для закачки файлов. Можно ли залить файл через приложения? indikatdupena Уязвимости 17 12.04.2005 20:49
Использование .htaccess foreva Чужие Статьи 0 07.02.2005 13:01



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


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




ANTICHAT.XYZ