Проблема с защитой потоков RTMP из CDN уровня 3 - PullRequest
5 голосов
/ 19 мая 2011

В настоящее время я занимаюсь защитой потоков rtmp из CDN уровня 3.

С документацией можно ознакомиться здесь: https://rapidshare.com/files/1450549534/Token_Components.html (похоже, что вы должны войти в систему для просмотра, поэтому я размещен на Rapidshare. Первоначальный URL: https://mediaportal.level3.com/mediaWeb/help/Content/ServicesDocs-Streaming/StreamingTokenAuth/TokenComponents.htm)

Прокрутка вниз до Пример потокового ввода / вывода по требованию (для файлов MP4)

Я пытаюсь воспроизвести пример и получить тот же URL с теми же значениями. Я написал для этого небольшую функцию:

function flimmithash($file) {
    $streamer = 'pmsales';
    $host = 'pmsalesfs.fplive.net'; 
    $start_time = '20080101120000'; 
    $end_time = '20101231235900'; 
    $customer_secret = 'Secret'; // in the documentation there is also secret with a non capital s, i tried both

    $resouce_path = "/$streamer/$file";                                                     echo "resouce_path: $resouce_path <br>\n";
    $message = "$resouce_path?start_time=$start_time&end_time=$end_time#$customer_secret";  echo "message: $message <br>\n";
    $digest = md5($message);                                                                echo "digest: $digest <br>\n";
    $tokenvalue = "start_time=$start_time&end_time=$end_time&digest=$digest";               echo "tokenvalue: $tokenvalue <br>\n";
    $token = base64_encode($tokenvalue);                                                    echo "token: $token <br>\n";
    $url = "rtmp://$host/$streamer?token=".($token)."/mp4:$file";                           echo "url: $url <br>\n";        
    return $url;
}
echo "url: ".flimmithash('support/lvlt300kbps.mp4')."<br>\n"; 

Я использую те же значения, что и в примере, но просто не могу получить тот же дайджест.

Я использовал md5, потому что он соответствует длине. Я также пробовал секрет с заглавными и не заглавными буквами.

Вы можете перейти к образцам сценариев здесь: https://rapidshare.com/files/2581196874/Appendix.html (Оригинал: https://mediaportal.level3.com/mediaWeb/help/Content/ServicesDocs-Streaming/StreamingTokenAuth/Appendix-SampleScripts.htm)

Но md5 абсолютно не используется, они используют sha1. Но sha1 длиннее, чем дайджест из примера.

Конечно, я пытался заполнить обе версии моими значениями, но ни одна не работала.

Итак, мой вопрос: кто-нибудь может воспроизвести пример и / или сказать мне дайджест или изменить мою функцию для работы в соответствии с примером?

1 Ответ

2 голосов
/ 20 мая 2011

Их пример неверен.Дайджест, который они дают, предназначен для файла /support/lvlt300kbps.flv и может быть легко сгенерирован с помощью md5 для этого имени файла с использованием строчной буквы secret в качестве общего секрета.Вы можете видеть, что он идентичен дайджесту, приведенному в примере FLV чуть выше его в их документации.

...