авторизация и sin_sha256

Discussion in 'Песочница' started by PitBullko, 30 Jan 2014.

  1. PitBullko

    PitBullko Banned

    Joined:
    6 May 2007
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте. Хочу написать сервис отправки icq-сообщений с сайта. За основу взял web-icq, посмотрел заголовки, все понятно, кроме одного есть переменная sig_sha256, которую мне непонятно откуда взять.
    Читал много форумов, нашел ответ, что эта переменная генрируется так:
    Code:
    $sessionkey = base64_encode(hash_hmac('sha256', 'пароль', 'sessionsecret', true));
    $sig_sha256 = base64_encode(hash_hmac('sha256', $sessionkey, urlencode('GET-запрос'), true));
    Но как бы я не старался - не получается подобрать правильный хэш.

    Исходные данные:
    пароль = "A12345";
    $sessionsecret = VphV8sTeOfcRpxRs;
    строка запроса = "GET&http://api.icq.net/aim/startSession?a=%2FwQAAAAAAACBzNTZhSF%2FZYncgXwYMummemWPCUxPnHkJmo9a8LmVK38E0vPVFp%2BupOkE2qL5gF%2BkSe0C3rOh%2FFlsw8j9a3y07dsbrG1Aep2UynCWgZ4DOScABndofNhWsvuA%2Bgd2EwXQDpBjZl5MWUmd6JfTnsMsew9oVdBfxo0D270dFk9dwosTzLc%3D&assertCaps=0946134E4C7F11D18222444553540000&buildNumber=410&clientName=gromit&clientVersion=v0.1&events=myInfo%2Cpresence%2Cbuddylist%2Ctyping%2Cim%2CsentIM%2CdataIM%2CofflineIM%2CuserAddedToBuddyList%2Clifestream%2Cservice&f=xml&interestCaps=8eec67ce70d041009409a7c1602a5c84&k=ic1Fvhd7u8Msuxui&language=ru-ru&rawMsg=1&sessionTimeout=60&ts=1391111100"

    Что должно из этого получиться:
    sig_sha256=3uQwCJijVG6PhLrCq5QaPt%2FztDZwnZfdmIH711m6TtA%3D

    После этого я должен получить ответ с кодом сессии, но пока что результат - 401Authentication Required. statusDetailCode 100110011391111376

    Буду благодарен за любую помощь :)
     
  2. alkos

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

    Joined:
    28 Mar 2007
    Messages:
    1,148
    Likes Received:
    292
    Reputations:
    271
    Зачем снова изобретать велосипед? Есть готовое решение: WebIcqPro.class.php. Подключаешь этот класс к своей программе и в путь.

    Выглядеть все будет примерно так:
    Code:
    <?php
    define('UIN', '123456');
    define('PASSWORD', 'qwerty');
    
    require_once('WebIcqPro.class.php');
    
    
    $icq = new WebIcqPro();
    
    // коннектимся
    if (!$icq->connect(UIN, PASSWORD)) {
        exit($icq->error . "\n");
    }
    
    // шлем сообщение на номер 100500
    $icq->sendMessage('100500', 'Привет!');
    
    }
    
    $icq->disconnect();
    ?>
     
  3. PitBullko

    PitBullko Banned

    Joined:
    6 May 2007
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Ну ё-маё! вчера пробовал этот класс, он писал мне то refused то establish, менял порты и адреса не помогало.
    А сегодня уже все работает.
    Заработался я видимо :)