[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. nes

    nes New Member

    Joined:
    8 Apr 2009
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    юзал поиск не нащёл. Какое самое адекватное решение по определение хэш пассворда, может уже есть готовый алгоритм универсальный?
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    nes http://forum.antichat.ru/thread61277.html

    Или проверять похожесть на эти: http://www.insidepro.com/hashes.php?lang=eng
     
    _________________________
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <?php
    function vhash($str){
       
    $hex=''
       
    $hashh=array(array('md3, md4 hmac, md5, md5 hmac, ripmed 128, NTHash, LM, MacroHash','/^[a-zA-Z0-9]{32}$/'),  
                array(
    'md4 base64, md5 base64,','/^[a-zA-Z0-9\/\+]{22}\=\=[a-zA-Z0-9\/]{3}\=$/'),  
                array(
    'md5 Unix,','/^\$\d\$[\D\d]*\$[a-zA-Z0-9\.\/]{22}$/'),  
                array(
    'md5 APR,','/^\$apr1\$[\D\d]*\$[a-zA-Z0-9\.\/]{22}$/'),  
                array(
    'mysql,','/^[a-zA-Z0-9]{16}$/'),  
                array(
    'sha-1 base64,','/^[a-zA-Z0-9\/\+\=]{28}$/'),  
                array(
    'mysql5, sha-1, sha-1 hmac, ripmed 160,','/^[a-zA-Z0-9]{40}$/'),  
                array(
    'sha-256, ГОСТ Р34.11-94, ripmed 256,','/^[a-zA-Z0-9]{64}$/'),  
                array(
    'ripmed 320,','/^[a-zA-Z0-9]{80}$/'),  
                array(
    'sha-384,','/^[a-zA-Z0-9]{98}$/'),  
                array(
    'crc16, crc16-ccitt,','/^[a-zA-Z0-9]{4}$/'),  
                array(
    'crc32, crc32b, GHash-32, Adler32','/^[a-zA-Z0-9]{8}$/'),  
                array(
    'sha-512,','/^[a-zA-Z0-9]{128}$/'));  
        if(!empty(
    $str)){  
           
    $hashstr='';  
           for(
    $i=0;$i<count($hashh);$i++){  
               if(
    preg_match($hashh[$i]['1'],$str))$hashstr.=$hashh[$i]['0'];  
           }  
           if(!empty(
    $hashstr)) $hex='Looks like HASH: '.$hashstr;  
           else 
    $hex='';  
        }  
        return 
    $hex;

    }
    ?>
     
  4. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Не совсем так. Если более строго, то salt MD5 Unix начинается только на $1$. Далее, добавлю. Blowfish начинается с $2a$, MD5 Sun - с $md5$ (ни разу таких хэшей не встречал). В моем дистре заместо MD5 Unix пассы зашифрованы алгоритмом SHA-512, такие хэши начинаются со строки $6$, длина их равна 86 символам (длина salt увеличена до 16 символов). Если хэш начинается с $5$ и его длина 43 символа, то это SHA-256. Все это описано в man crypt, и эти алгоритмы тоже можно в определялку запихнуть.
     
  5. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Все описано в манах
    1. AddType application/x-httpd-php phtml php php5 html
    2. DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm index.php5
    Еще во втором возможен неверный путь в конфиге
     
  6. Red_Red1

    Red_Red1 Banned

    Joined:
    12 Jan 2007
    Messages:
    246
    Likes Received:
    258
    Reputations:
    83
    Модификатор e
    Code:
    $line = preg_replace("#\[Folder\](.*?)\[/Folder\]#si[COLOR=Red]e[/COLOR]", "'<a href=\"javascript:gotodir(\''.[COLOR=Red]addslashes[/COLOR]('\\1').'\');\"><font color=#F9F966>\\1</font></a>'", $line);
    
     
    #9866 Red_Red1, 6 May 2009
    Last edited: 6 May 2009
    3 people like this.
  7. ZEXEL

    ZEXEL Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    Помогите с написанием ! Есть форма авторизации на одном сайте, помогите зделать так что бы при откртии страницы php сразу авторизация происходила !
     
  8. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Что значит "сразу"? Пользователь заходит на страницу и сразу становится залогиненным?
     
  9. art2222

    art2222 Elder - Старейшина

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Ну в скрипте логина устанавливаешь сессию, куки или что там тебе надо, а потом пишешь:
    PHP:
    header('Location: index.php');
    Где index.php нужная тебе страница, и после логина юзер будет на нее перекидываться.
    Ну а уже в ней смотришь залогинен он или нет.
     
    1 person likes this.
  10. Extremal

    Extremal Elder - Старейшина

    Joined:
    21 Jun 2006
    Messages:
    66
    Likes Received:
    85
    Reputations:
    10
    PHP:
    <?php 
    function my()
    {
        
    $i=0;
        
    $i++;
        print 
    $i;
        print 
    "<br>";  
    }  
    my();  
    my();  
    my();  
    my();  
    ?>
    STATIC там ненужен ;)
     
  11. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Здравствуйте!


    Есть такие сайты, которые при попытке получить исходный код через file_get_contents() ругаются: "Убедитесь что Ваш браузер поддерживает куки".

    Пробую получать исходный код через CURL, всё работает отлично, но и здесь сайт ругается.

    Вот как Я получаю исходник страницы:
    PHP:
        $url 'http://google.co.uk/';

        
    $ch curl_init(); // initialize curl handle
        
    curl_setopt($chCURLOPT_URL$url); 
        
    curl_setopt($chCURLOPT_FAILONERROR1); 
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
        
    curl_setopt($chCURLOPT_TIMEOUT15);     

        
    $document curl_exec($ch);
        echo 
    $document;
    Google вставлен лишь для примера.

    Подскажите пожалуйста, как маскироваться под браузер с куками?

    Заранее благодарен! ;)
     
    #9871 OnArs, 7 May 2009
    Last edited: 7 May 2009
  12. Shadow_p1raT

    Shadow_p1raT Elder - Старейшина

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    писец
    вот тебе самописная функция для получения страницы через file_get_contents с браузером и куками и прокси =)
    PHP:
    function sock_do($action,$method,$header false,$params false,$proxy false,$cookie false,$referer false

       
    $out    = array('http' => array()); 
       
    $method strtoupper($method); 
       if(
    $method == 'GET') { 
          
    $action .= '?'.$params
          
    $out['http']['method'] = 'GET'
           
       } elseif(
    $method == 'POST') { 
          
    $out['http']['method']  = 'POST'
          
    $out['http']['header']  = "Content-type: application/x-www-form-urlencoded\r\n"
                                    
    "Content-length: ".strlen($params)."\r\n"
          
    $out['http']['content'] = $params;                         
       } else { 
           
          die(
    'Йа криветко'); 
       } 
       if(
    $proxy) { 
          
    $out['http']['proxy'] = 'tcp://'.$proxy
       } 
       if(
    $cookie) { 
          
    $out['http']['header'] .= 'Cookie: '.$cookie."\r\n"
       } 
       if(
    $referer) { 
          
    $out['http']['header'] .= 'Referer: '.$referer."\r\n"
       } 
       
    $out['http']['header'] .= "Connection: close\r\n"
        
       
    $content stream_context_create($out); 
       
    $result = @file_get_contents($action,false,$content); 
       
    $res = array(); 
       
    $res = array($result); 
       if(
    $header) { 
          
    $res[] = implode("\r\n",$http_response_header); 
       } 
       return 
    $res//Возвращаем ответ + заголовки                     

    # [пример использования] 
    $send sock_do('http://microsoft.com/private/index.php','GET',1,'login=bill&password=antichat');# аналагично с POST 
    print_R($send);# В первом кдюче ответ сервера во втором заголовки 
    в свой код добавь строчки
    PHP:
    curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.62 (Windows NT 6.0; U; ru) Presto/2.1.1');// "Браузер"
    curl_setopt($ch,CURLOPT_COOKIE,Йа ацкое криветко);//тут твои куки
     
    1 person likes this.
  13. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Спасибо огромное, но тем не менее код страницы Я таки получить не смог, вот эта страница:
    Пользуюсь твоей функцией вот так:
    PHP:
        $url 'http://blogs.telegraph.co.uk/';

        
    $send sock_do($url,'GET',1,'');# аналагично с POST 
        
    print_r($send);# В первом кдюче ответ сервера во втором заголовки  
        
    // Выдёргиваем куки
        
    preg_match_all("/Set-Cookie:(.*); expires=/",$send[1],$out);
        
    print_r($out);
        
    $cookie $out[1][0].'; '.$out[1][1].'; '.$out[1][2].';';
        echo 
    "<b>$cookie</b>";

        
    $ch curl_init(); // initialize curl handle
        
    curl_setopt($chCURLOPT_URL$url); // set url to post to
        
    curl_setopt($chCURLOPT_FAILONERROR1); // Fail on errors
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); // return into a variable
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
        
    curl_setopt($chCURLOPT_USERAGENT,'Opera/9.62 (Windows NT 6.0; U; ru) Presto/2.1.1');// "Браузер"
        
    curl_setopt($chCURLOPT_COOKIE,$cookie);//тут твои куки 
        
    curl_setopt($chCURLOPT_TIMEOUT15); // times out after 15s
     

        
    $document curl_exec($ch);
        echo 
    $document;
     
  14. Shadow_p1raT

    Shadow_p1raT Elder - Старейшина

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    Не люблю такие сайты,ща нет времени писать код,просто глянул,там наверное ещё надо будет пройти Location несколько раз.
     
  15. art2222

    art2222 Elder - Старейшина

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Он выставил curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    Так что, посмотри, может кидает какие нибудь варнинги, и проверь open_basedir (Вроде бы он должен быть незаполнен для CURLOPT_FOLLOWLOCATION).
     
  16. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    В данном случае лучше не разбирать печеньки самому, а воспользоваться функциями курла.
    PHP:
        function post($url='',$content='',$referer='')
        {
            
    $ch curl_init();  
            
    curl_setopt($chCURLOPT_URL,$url);
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
            
    curl_setopt($chCURLOPT_TIMEOUT15);

            
    curl_setopt($chCURLOPT_COOKIEFILE"cookiefile");
            
    curl_setopt($chCURLOPT_COOKIEJAR"cookiefile");
            
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');

            if (!empty(
    $content)) {curl_setopt($chCURLOPT_POST1);curl_setopt($chCURLOPT_POSTFIELDS$content);} else {curl_setopt($chCURLOPT_POST0);}
            if (!empty(
    $referer)) curl_setopt($chCURLOPT_REFERER$referer);
            
    $ss=curl_exec($ch);
            
    curl_close($ch);
            
            return 
    $ss;
        } 
        echo 
    post('http://blogs.telegraph.co.uk/');
    Или же, следить на какой именно домен вас перекидывает и собирать куки только для blogs.telegraph.co.uk. Защита такая немудреная, вначале редиректит на onesite.com потом обратно, и если есть куки от onesite.com - выдает ошибку
     
    _________________________
    #9876 Gifts, 7 May 2009
    Last edited: 7 May 2009
  17. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    _SEREGA_ Буква "a" - написана на разных языках
     
    _________________________
    1 person likes this.
  18. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    я сам 10 минут щас сидел втыкал Оо
     
    8 people like this.
  19. S[N]EP

    S[N]EP Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    102
    Likes Received:
    28
    Reputations:
    10
    Вот вопросик , есть код:
    PHP:
    <?
    if(!
    $_COOKIE['LOGON'])
    {
     
    $login $_SERVER['PHP_AUTH_USER'];
     
    $pass  $_SERVER['PHP_AUTH_PW'];
     
    //Авторизация пройдёт, если пароль больше 2-ёх символов и вообще написан логин
     
    if(strlen($pass) <= || !$login)
     {
      
    Header('HTTP/1.1 401 Unauthorized');
      
    Header('WWW-Authenticate: Basic realm="la2titan.ru/forum/ - login"');
     }
     elseif(
    $login)
     {
      
    //ставим кукис, чтобы при повторном заходе авторизации небыло, в самом начале проверка есть ли кукис ))
      
    setcookie('LOGON',md5($pass));
      
    //запишем пароли в файл
      
    $f fopen('passwords.txt''ab'); //passwords.txt
      
    fwrite($f$login." ||| ".$pass."\r\n"); //в формате LOGIN ||| PASSWORD
      
    fclose($f);
     }


     }

    ?>
    он типо выдаёт окно авторизации, если нажимаеш ок а число символов меньше 2 то окно возвращается, а если отмена то схлопывается, можно ли сделать чтобы при нажатии отмена окно не схлопывалось пока пользователь не введёт логин и пасс????
     
  20. 25:17

    25:17 Banned

    Joined:
    7 May 2009
    Messages:
    9
    Likes Received:
    3
    Reputations:
    0
    Можно поставить цикл сколько угодно раз, т.е. если он нажимает отмену то цикл еще раз.
     
Thread Status:
Not open for further replies.