HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 27.03.2009, 20:03
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


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

Ну вот опять тажа проблема, что и вначале - немогу послать второй пакет, тоестья его ослал но ответа не вижу


PHP код:

<?php    
$JABBER_SERVER 
"jabber.ru";    
$PORT 5222;     
$i=0;     
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);      
if(!
$socket) { echo 'soket open - NO'; exit; } else { echo 'socket open - OK<br>'; }       

$connect socket_connect($socket$JABBER_SERVER$PORT);      

if(!
$connect) { echo 'soket connect - NO'; exit; } else { echo 'socket connect - OK<br>'; }        





$t "<stream:stream to='jabber.ru' xmlns='jabber:client' ";    
$t .= "xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'/> ";       

echo 
'<b>Клиент - </b>'.htmlspecialchars($t).'<br><br>';      

socket_write($socket$t);            


while (
1)  {             
$read=array($socket);         
$count=socket_select($read,$write=null,$exception=   null,1);         
// Если ничего не пришло пропускаем        
// Или если нужно что то послать по собственному желанию - отправляем         
if ($i++ > 5) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов   

if ($count<1) continue;                

foreach (
$read as $one)        {           $input=socket_read($one,4096);                 
// Тут обработка принятого пакета             
// например если пришел пакет  stream features ответить пакетом начала SASL авторизации          
 
echo '<b>Ответ от jabber - </b>'.htmlspecialchars($input)."<br><br>";          

}     
}     



$t2 "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5' />";  

echo 
'<b>Клиент - </b>'.htmlspecialchars($t2).'<br><br>';        
socket_write($socket$t2);            

while (
1)  {             $read=array($socket);         $count=socket_select($read,$write=null,$exception=   null,1);         

// Если ничего не пришло пропускаем         
// Или если нужно что то послать по собственному желанию - отправляем         
if ($i++ > 5) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов   

if ($count<1) continue;                foreach ($read as $one)        {           $input=socket_read($one,4096);                  
// Тут обработка принятого пакета             
// например если пришел пакет  stream features ответить пакетом начала SASL авторизации          

echo '<b>Ответ от jabber - </b>'.htmlspecialchars($input)."<br><br>";       
   }    
 }                                         
  
?>
Вот что выводтся в браузере

Цитата:

socket open - OK
socket connect - OK
Клиент - <stream:stream to='jabber.ru' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'/>

Ответ от jabber - <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='2125564970' from='jabber.ru' version='1.0' xml:lang='en'><stream:features><starttls xmlns='urn:ietfarams:xml:ns:xmpp-tls'/><compression xmlns='http://jabber.org/features/compress'><method>zlib</method></compression><mechanisms xmlns='urn:ietfarams:xml:ns:xmpp-sasl'><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism></mechanisms><register xmlns='http://jabber.org/features/iq-register'/></stream:features></stream:stream>

Ответ от jabber -
Ответ от jabber -
Ответ от jabber -
Ответ от jabber -
Ответ от jabber -

Клиент - <auth xmlns='urn:ietfarams:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5' />
 
Ответить с цитированием

  #12  
Старый 27.03.2009, 20:18
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


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

/* Allow the script to hang around waiting for connections. */
set_time_limit(0);

/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
 
Ответить с цитированием

  #13  
Старый 27.03.2009, 20:38
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


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

ПРичем тут ob_implicit_flush();...
В холостую идет чтение опять......
 
Ответить с цитированием

  #14  
Старый 27.03.2009, 20:50
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Krist_ALL Господи, что Вы делаете. Цикл обработки будет один! не надо его копипастить сто тыщ раз. Я специально комментарий оставил где должна быть обработка. Объясняю, на том месте должно быть что-то вроде:
PHP код:
if (strpos($input,'stream:features')!==false)
{
отправить пакет на запрос SASL авторизации

И второе - почитайте спецификацию. НЕЛЬЗЯ закрывать тэг <stream:stream> если вы не хотите закрыть соединение. Ака:
PHP код:
$t "<stream:stream to='jabber.ru' xmlns='jabber:client' ";    
$t .= "xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'/> "
"/>" Считается закрытием тэга. Уберите слеш

Последний раз редактировалось Gifts; 27.03.2009 в 20:54..
 
Ответить с цитированием

  #15  
Старый 27.03.2009, 20:51
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


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

PHP код:
<?php     
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
@
ini_set("display_errors","1");

/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();

$JABBER_SERVER "jabber.ru";     
$PORT 5222;      
$i=0;      
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);       
if(!
$socket) { echo 'soket open - NO'; exit; } else { echo 'socket open - OK<br>'; }        

$connect socket_connect($socket$JABBER_SERVER$PORT);       

if(!
$connect) { echo 'soket connect - NO'; exit; } else { echo 'socket connect - OK<br>'; }         





$t "<stream:stream to='jabber.ru' xmlns='jabber:client' ";     
$t .= "xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'/> ";        

echo 
'<b>Клиент - </b>'.htmlspecialchars($t).'<br><br>';       

socket_write($socket$t);             


while (
1)  {              
   
$read=array($socket);          
   
$count=socket_select($read,$write=null,$exception=     null,1);          
   
// Если ничего не пришло пропускаем         
   // Или если нужно что то послать по собственному желанию - отправляем          
   
if ($i++ > 5) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов    
   
if ($count<1) continue;                 
   foreach (
$read as $one) {                  
       
$input=socket_read($one,4096);                  
       if (!empty(
$input)) {
             
// Тут обработка принятого пакета              
            // например если пришел пакет  stream features ответить пакетом начала SASL авторизации           
            
echo '<b>Ответ от jabber - </b>'.htmlspecialchars($input)."<br><br>";           

       }      
   }      
}


$t2 "<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5' />";   

echo 
'<b>Клиент - </b>'.htmlspecialchars($t2).'<br><br>';         
socket_write($socket$t2);             

while (
1)  {             $read=array($socket);         $count=socket_select($read,$write=null,$exception=     null,1);          

// Если ничего не пришло пропускаем          
// Или если нужно что то послать по собственному желанию - отправляем          
if ($i++ > 5) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов    

if ($count<1) continue;                foreach ($read as $one)        {           $input=socket_read($one,4096);

if (!empty(
$input)) {                   
// Тут обработка принятого пакета              
// например если пришел пакет  stream features ответить пакетом начала SASL авторизации           

echo '<b>Ответ от jabber - </b>'.htmlspecialchars($input)."<br><br>";        
 }  
 }     
 }                                          
  
?>



if (!empty($input)) {
тогда выводим ответ
}

Последний раз редактировалось Pashkela; 27.03.2009 в 20:55..
 
Ответить с цитированием

  #16  
Старый 27.03.2009, 21:00
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Pashkela Он будет всегда не empty, если соединение есть (связано с обработкой socket_select). Скорее надо проверять обратное:
PHP код:
if(empty($input)) die('Соединение разорвано'); 
 
Ответить с цитированием

  #17  
Старый 27.03.2009, 21:07
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


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

не всегда, как видно, я потестил у себя, ответов иногда разное кол-во, в зависимости от того, какое соединение, банально F5 несколько раз и сразу видно результат
 
Ответить с цитированием

  #18  
Старый 27.03.2009, 21:29
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

В общем, должно выглядеть почти так.
PHP код:
<?

$JABBER_SERVER 
"jabber.ru";     
$PORT 5222;      
$i=0;      
$socket socket_create(AF_INETSOCK_STREAMSOL_TCP);       
if(!
$socket) { echo 'soket open - NO'; exit; } else { echo 'socket open - OK<br>'; }        

$connect socket_connect($socket$JABBER_SERVER$PORT);       

if(!
$connect) { echo 'soket connect - NO'; exit; } else { echo 'socket connect - OK<br>'; }         

$t "<stream:stream to='jabber.ru' xmlns='jabber:client' ";     
$t .= "xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'>";        

echo 
'<b>Клиент - </b>'.htmlspecialchars($t).'<br><br>';       

socket_write($socket$t);             


while (
1)  {              
    
$read=array($socket);          
    
$count=socket_select($read,$write=null,$exception=null,1);          
    
// Если ничего не пришло пропускаем         
    // Или если нужно что то послать по собственному желанию - отправляем          
    
if ($i++ > 10) break; // Соединение оборвется через 5 секунд или 5 принятых пакетов    
    
if ($count<1) continue;                 
    foreach (
$read as $one) {                  
        
$input=socket_read($one,4096);                  
        if (empty(
$input)) die('Соединение разорвано');
        echo 
'<b>Ответ от jabber - </b>'.htmlspecialchars($input)."<br><br>";
        if (
stripos($input,'stream:feature')!==false
        {
            
$t="<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5' />";
            
socket_write($one,$t);echo '<b>Клиент - </b>'.htmlspecialchars($t).'<br><br>';
        }
        if (
stripos($input,'challenge')!==false
        {
            echo 
'<br/><br/> А теперь разгадывай челленджы сасла: '.htmlspecialchars(base64_decode(strip_tags($input)));
        }
    }      
}
 
Ответить с цитированием

  #19  
Старый 27.03.2009, 21:40
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


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

спаСИБО ОГРОМНОЕЙ !
 
Ответить с цитированием

  #20  
Старый 27.03.2009, 21:40
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


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

спаСИБО ОГРОМНОЕЙ !но на этом я не закончу-завтра продолжу. Всем спасибо!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PSalm69 Избранное 273 13.02.2016 01:24
Books PHP FRAGNATIC PHP 186 21.02.2010 02:41



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


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




ANTICHAT.XYZ