ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

28.02.2010, 23:32
|
|
Познающий
Регистрация: 30.11.2009
Сообщений: 46
Провел на форуме: 159271
Репутация:
1
|
|
Вот что получилось после моего шаманства
Файл func.php
PHP код:
<?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($s, 256);
if(eregi("200", $line))
{
fputs($s, "NOOP\r\n");
$line = fread($s, 256);
if(eregi("\+OK", $line))
{
return $s;
}
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
} else {
$s=fsockopen($host, $port, $errno, $errstr, $timeout);
if($s)
{
$line=fgets($s,1024);
stream_set_timeout($s, $timeout);
return $s;
} else {
return false;
}
}
}
function pop3_login($s, $login, $password)
{
if($s)
{
fputs($s, "USER $login\r\n");
$line=fread($s, 256);
//echo "USER $login\r\n";
//echo $line;
if(eregi("\+OK", $line))
{
fputs($s, "PASS $password\r\n");
$line=fread($s, 256);
//echo "PASS $password\r\n";
//echo $line;
if(eregi("\+OK",$line))
{
return true;
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
function pop3_disconnect($s)
{
if($s)
{
fputs($s, "QUIT\r\n");
$line = fread($s, 256);
if(eregi("\+OK", $line))
{
unset($s);
return true;
} else {
return false;
}
} else {
return false;
}
}
function pop3_stat($s)
{
if($s)
{
fputs($s, "STAT\r\n");
$line = fread($s, 256);
if(eregi("\+OK", $line))
{
$reply=explode(" ",$line);
return array($reply[1], $reply[2]);
} else {
return false;
}
} else {
return false;
}
}
//Возвращает массив, ключи которого - идентификаторы писем, значения - размер письма. Возвращает FALSE при ошибке
//$s - идентификатор соединения
function pop3_list($s)
{
if($s)
{
fputs($s, "LIST\r\n");
while(!feof($s)) {
$line.=fread($s, 256);
$stream_meta_data=stream_get_meta_data($s);
if($stream_meta_data['unread_bytes']<=0) break;
}
//echo "LIST\r\n";
//echo "$line\r\n";
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;
}
}
//Возвращает полное содержание письма, по его идентификатору. Возвращает FALSE при ошибке
function pop3_retr($s,$mid){
if($s === FALSE){
return false;
}
fputs($s, "RETR $mid\r\n");
return get_data($s);
}
//Удаляет письмо по его идентификатору, при успешном удалении возвращает TRUE, при ошибке возвращает FALSE
//$s - идентификатор соединения
//$mid - идентификатор письма
function pop3_dele($s,$mid)
{
if($s)
{
fputs($s, "DELE $mid\r\n");
$line = fread($s, 256);
if(eregi("\+OK", $line))
{
return true;
} else {
return false;
}
} else {
return false;
}
}
//Восстанавливает "удаленные письма" текущего соединения, при успешном восстановлении возвращает TRUE, при ошибке возвращает FALSE
function pop3_rset($s)
{
if($s)
{
fputs($s, "RSET\r\n");
$line = fread($s, 256);
if(eregi("\+OK", $line))
{
return true;
} else {
return false;
}
} else {
return false;
}
}
function get_data($pop_conn){
$data="";
while (!feof($pop_conn)) {
$buffer = chop(fgets($pop_conn,1024));
$data .= "$buffer\r\n";
if(trim($buffer) == "."){ break;}
}
return $data;
}
?>
Ну и пример использования
PHP код:
<?php
include('func.php');
$host = 'site.ru';
$proxy = FALSE;
$phost = '';
$pport = '';
$port = 110;
$timeout= 10;
$user = 'username';
$pass = 'password';
$s = pop3_connect($host, $port, $proxy=FALSE, $phost, $pport, $timeout);
if($s===FALSE){exit("\r\npop3_connect error\r\n");}
$logined = pop3_login($s, $user, $pass);
if($logined===FALSE){exit("\r\npop3_login error\r\n");}
$list = pop3_list($s);
if($list===FALSE){exit("pop3_list error");}
foreach($list as $mid => $msize){
$mtext = pop3_retr($s,$mid);
//pop3_dele($s,$mid);
echo "<br />\r\n------------------------------------------------------\r\n<br />";
echo str_replace("\r\n", "<br />",$mtext);
echo "<br />\r\n------------------------------------------------------\r\n<br />";
}
pop3_disconnect($s);
?>
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|