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

PHP POP3 Interface [Proxy Support]
  #1  
Старый 09.01.2010, 16:53
CPU0
Участник форума
Регистрация: 05.01.2010
Сообщений: 127
Провел на форуме:
587522

Репутация: 61
Отправить сообщение для CPU0 с помощью ICQ
По умолчанию PHP POP3 Interface [Proxy Support]

PHP POP3 Interface [Proxy Support]

Описание:
Набор функций для работы с POP3(RFC 1939).
Текущий список функций (будут дополняться по Вашим просьбам):
  • pop3_connect()
  • pop3_disconnect()
  • pop3_login()
  • pop3_stat()
  • pop3_list()
  • pop3_retr()
  • pop3_dele()
  • pop3_rset()
=====================================

Функция pop3_connect()
Устанавливает подключение с сервером и возвращает идентификатор соединения при успешном подключении. При ошибке возвращает FALSE
pop3_connect($host, $proxy=FALSE, $phost='', $pport='', $port='110', $timeout='20')
  • $host - адрес POP3-сервера
  • $proxy - использование Proxy-сервера при подключении (TRUE/FALSE)
  • $phost - IP-адрес Proxy-сервера
  • $pport - порт Proxy-сервера
  • $port - порт POP3-сервера
  • $timeout - таймаут соеденения
PHP код:
function pop3_connect($host$port='110'$proxy=FALSE$phost=''$pport=''$timeout='20')
{
    if(
$proxy)
    {
        
$patern_ip="^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$";
        
$patern_port="^([0-9]{2,5})$";
        if(
ereg($pattern_ip$phost) AND ereg($pattern_port$pport))
        {
            
$s=fsockopen("tcp://".$phost$pport);
            if(
$s)
            {
                
stream_set_timeout($s$timeout);
                
fputs($s"CONNECT $host:$port HTTP/1.0\r\n\r\n");
                
$line fread($s256);
                if(
eregi("200"$line))
                {
                    
fputs($s"NOOP\r\n");
                    
$line fread($s256);
                    if(
eregi("\+OK"$line))
                    {
                        return 
$s;
                    }
                } else {
                    return 
false;
                }
            } else {
                return 
false;
            }
        } else {
            return 
false;
        }
    } else {
        
$s=fsockopen($host$port);
        if(
$s)
        {
            
stream_set_timeout($s$timeout);
            
fputs($s"NOOP\r\n");
            
$line=fread($s256);
            if(
eregi("\+OK"$line))
            {
                return 
$s;
            } else {
                return 
false;
            }
        } else {
            return 
false;
        }
    }

Функция pop3_login()
Авторизует пользователя на POP3-сервере, при успешной авторизации возвращает TRUE, при ошибке возвращает FALSE
pop3_login($s, $login, $password)
  • $s - идентификатор соединения
  • $login - имя пользователя для авторизации
  • $password - пароль для авторизации
PHP код:
function pop3_login($s$login$password)
{
    if(
$s)
    {
        
fputs($s"NOOP\r\n");
        
$line fread($s256);
        if(
eregi("\+OK"$line))
        {
            
fputs($s"USER $login\r\n");
            
$line=fread($s256);
            if(
eregi("\+OK"$line))
            {
                
fputs($s"PASS $password\r\n");
                
$line=fread($s256);
                if(
eregi("\+OK",$line))
                {
                    return 
true;
                } else {
                    return 
false;
                }
            } else {
                return 
false;
            }
        } else { 
            return 
false;
        }
    } else {
         return 
false;
    }

Функция pop3_disconnect()
Закрывает соединение с POP3-сервером, возвращает TRUE при успешном закрытии соединения,и FALSE при ошибке
pop3_disconnect($s)
  • $s - идентификатор соединения
PHP код:
function pop3_disconnect($s)
{
    if(
$s)
    {
        
fputs($s"NOOP\r\n");
        
$line fread($s256);
        if(
eregi("\+OK"$line))
        {
                
fputs($s"QUIT\r\n");
                
$line fread($s256);
                if(
eregi("\+OK"$line))
                {
                    unset(
$s);
                    return 
true;
                } else {
                    return 
false;
                }                
        } else {
            return 
false;
        }
    } else {
        return 
false;
    }

Функция pop3_stat()
Возвращает массив, 1ый элемент которого - количество писем в ящике, 2ой - размер всех писем в байтах. Возвращает FALSE при ошибке
pop3_stat($s)
  • $s - идентификатор соединения
PHP код:
function pop3_stat($s)
{
    if(
$s)
    {
        
fputs($s"NOOP\r\n");
        
$line fread($s256);
        if(
eregi("\+OK"$line))
        {
            
fputs($s"STAT\r\n");
            
$line fread($s256);
            if(
eregi("\+OK"$line))
            {
                
$reply=explode(" ",$line);
                return array(
$reply[1], $reply[2]);
            } else {
                return 
false;
            }
        } else { 
            return 
false;
        }
    } else {
         return 
false;
    }

Функция pop3_list()
Возвращает массив, ключи которого - идентификаторы писем, значения - размер письма. Возвращает FALSE при ошибке
pop3_list($s)
  • $s - идентификатор соединения
PHP код:
function pop3_list($s)
{
    if(
$s)
    {
        
fputs($s"NOOP\r\n");
        
$line fread($s256);
        if(
eregi("\+OK"$line))
        {
                
fputs($s"LIST\r\n");
                while(!
feof($s)) { 
                    
$line.=fread($s256);
                    
$stream_meta_data=stream_get_meta_data($s);
                    if(
$stream_meta_data['unread_bytes']<=0) break;
                }
                if(
eregi("\+OK"$line))
                {
                    
preg_match_all('#([0-9]{1,})\s+([0-9]{3,10})#i'$line$reply);
                    unset(
$reply[0]);
                    
$result=array_combine($reply[1], $reply[2]);
                    
ksort($result);
                    return 
$result;
                } else {
                    return 
false;
                }
        } else { 
            return 
false;
        }
    } else {
         return 
false;
    }

Функция pop3_retr()
Возвращает полное содержание письма, по его идентификатору. Возвращает FALSE при ошибке
pop3_retr($s,$mid)
  • $s - идентификатор соединения
  • $mid - идентификатор письма
PHP код:
function pop3_retr($s,$mid)
{
    if(
$s)
    {
        
fputs($s"NOOP\r\n");
        
$line fread($s256);
        if(
eregi("\+OK"$line))
        {
            
$mids=array_keys(pop3_list($s));
            if(
in_array($mid,$mids))
            {
                
fputs($s"RETR $mid\r\n");
                while(!
feof($s)) { 
                    
$line.=fread($s256);
                    
$stream_meta_data=stream_get_meta_data($s);
                    if(
$stream_meta_data['unread_bytes']<=0) break;
                }
                return 
$line;
            } else {
                return 
false;
            }
        } else { 
            return 
false;
        }
    } else {
         return 
false;
    }

Функция pop3_dele()
Удаляет письмо по его идентификатору, при успешном удалении возвращает TRUE, при ошибке возвращает FALSE
pop3_dele($s,$mid)
  • $s - идентификатор соединения
  • $mid - идентификатор письма
PHP код:
function pop3_dele($s,$mid)
{
    if(
$s)
    {
        
fputs($s"NOOP\r\n");
        
$line fread($s256);
        if(
eregi("\+OK"$line))
        {
            
fputs($s"DELE $mid\r\n");
            
$line fread($s256);
            if(
eregi("\+OK"$line))
            {
                return 
true;
            } else {
                return 
false;
            }
        } else { 
            return 
false;
        }
    } else {
         return 
false;
    }

Функция pop3_rset()
Восстанавливает "удаленные письма" текущего соединения, при успешном восстановлении возвращает TRUE, при ошибке возвращает FALSE
pop3_rset($s)
  • $s - идентификатор соединения
PHP код:
function pop3_rset($s)
{
    if(
$s)
    {
        
fputs($s"NOOP\r\n");
        
$line fread($s256);
        if(
eregi("\+OK"$line))
        {
            
fputs($s"RSET\r\n");
            
$line fread($s256);
            if(
eregi("\+OK"$line))
            {
                return 
true;
            } else {
                return 
false;
            }
        } else {
            return 
false;
        }
    } else {
        return 
false;
    }

=====================================

В ближайшем времени (по приоритету):
  • функция обработки письма полученного с помощью pop3_retr()
  • функция скачивания всех писем с ящика
  • функция удаления всех писем
  • функция действий со списком e-mail`ов
  • функция "брутфорсер"
Скрипт(и последующие его версии) Вы можете скачать с сайта:
http://dmtn.ru/develop/pop3_interface/
Пример использования:
PHP код:
include('mail.php');
$s=pop3_connect('pop.yandex.ru');
if(
pop3_login($s'egorka@yandex.ru''preved'))
{
//действия при успешной авторизации
} else {
//ошибка авторизации
}
pop3_disconnect($s); 
Буду рад советам, пожеланиям, критике

Последний раз редактировалось CPU0; 11.01.2010 в 17:01..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



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


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




ANTICHAT.XYZ