<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Неофициальный форум DLNA Home Media Server &mdash; viks.tv]]></title>
		<link>https://hms.lostcut.net/viewtopic.php?id=346</link>
		<atom:link href="https://hms.lostcut.net/extern.php?action=feed&amp;tid=346&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «viks.tv».]]></description>
		<lastBuildDate>Fri, 18 Jan 2019 08:42:16 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13814#p13814</link>
			<description><![CDATA[<p>Я в том смысле,что для расшифровке вам нужен только этот кусок.Скачайте для примера подкаст Tivix,там прописано...<br /><a href="https://hms.lostcut.net/viewtopic.php?id=237">https://hms.lostcut.net/viewtopic.php?id=237</a><br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>&quot;C++&quot;<br />if (HmsRegExMatch(&#039;(eval\\(function\\(w,i,s,e\\).*?\&#039;\\)\\);)&#039;, sHtml, scriptBlock)) {<br />&nbsp; &nbsp; // Распаковываем, пока распаковывается (всегда последний eval, если их несколько)<br />&nbsp; &nbsp; while (HmsRegExMatch(&#039;.*eval(\\(.*\\));&#039;, scriptBlock, scriptBlock)) {<br />&nbsp; &nbsp; &nbsp; scriptBlock = jsEval(scriptBlock);</p></div></div>]]></description>
			<author><![CDATA[null@example.com (Dr.Dru)]]></author>
			<pubDate>Fri, 18 Jan 2019 08:42:16 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13814#p13814</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13813#p13813</link>
			<description><![CDATA[<div class="quotebox"><cite>Dr.Dru пишет:</cite><blockquote><p>Смотрите здесь <a href="https://hms.lostcut.net/viewtopic.php?id=597">https://hms.lostcut.net/viewtopic.php?id=597</a> ,чтоб понять ошибку в расшифровке.</p></blockquote></div><p>Честно говоря не понял, как это относится к viks, ведь со страницы я получаю именно такую JS функцию, которую и повторяю.</p>]]></description>
			<author><![CDATA[null@example.com (PoPsa)]]></author>
			<pubDate>Fri, 18 Jan 2019 07:45:25 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13813#p13813</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13810#p13810</link>
			<description><![CDATA[<p>Смотрите здесь <a href="https://hms.lostcut.net/viewtopic.php?id=597">https://hms.lostcut.net/viewtopic.php?id=597</a> ,чтоб понять ошибку в расшифровке.</p>]]></description>
			<author><![CDATA[null@example.com (Dr.Dru)]]></author>
			<pubDate>Thu, 17 Jan 2019 17:39:26 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13810#p13810</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13809#p13809</link>
			<description><![CDATA[<p>Всем привет. Решил попрактиковаться в расшифровке JS функций на сайте. В качестве подопытного был выбран viks. <br />Написал такой скрипт<br /></p><div class="codebox"><pre><code>import requests
import re

url = &#039;link_herel&#039;
_headers = {&#039;Origin&#039;:&#039;http://viks.tv&#039;,&#039;Referer&#039;:url,&#039;User-Agent&#039; : &#039;Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0&#039;}

req = requests.get(url, headers=_headers)
html = req.text


def Decode(w,i,s,e):
    lIll = 0;
    ll1I = 0;
    Il1l = 0;
    ll1l = [];
    l1lI = [];
    while True:
        if lIll &lt; 5:
            l1lI.append(w[lIll])
        elif lIll &lt; len(w):
            ll1l.append(w[lIll])
        lIll += 1
        if ll1I &lt; 5:
            l1lI.append(i[ll1I])
        elif ll1I &lt; len(i):
            ll1l.append(i[ll1I])
        ll1I += 1
        if Il1l &lt; 5:
            l1lI.append(s[Il1l])
        elif Il1l &lt; len(s):
            ll1l.append(s[Il1l])
        Il1l +=1
        if len(w) + len(i) + len(s) + len(e) == len(ll1l) + len(l1lI) + len(e):
            break

    lI1l = &#039;&#039;.join(ll1l)
    I1lI = &#039;&#039;.join(l1lI)
    ll1I = 0
    l1ll = []

    for lIll in range(0, len(ll1l), 2):
        ll11 = -1

        if (ord(I1lI[ll1I]) % 2):
            ll11 = 1

        l1ll.append(chr(int(lI1l[lIll:lIll+2], 36) - ll11))

        ll1I += 1
        if ll1I &gt;= len(l1lI):
            ll1I = 0;

    return &#039;&#039;.join(l1ll)

def get_url(path):
    r = re.search(&quot;&#039;(http:.*?)&#039;&quot;,path)
    print(r[1])

while True:

    r = re.search(&quot;.*eval\(function\(w,i,s,e\).*?}\(&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?)&#039;,&#039;(.*?)&#039;&quot;, html)
    if r:
        html = Decode(r[1], r[2], r[3], r[4])

    else:
        get_url(html)
        break</code></pre></div><p>В итоге получаю ссылку на m3u8 c хвостом wmAuthSign, вставляю в VLC - не работает. Ловлю в wireshark с той же страницы - работает.<br />Подскажите в чем моя ошибка ?</p>]]></description>
			<author><![CDATA[null@example.com (PoPsa)]]></author>
			<pubDate>Thu, 17 Jan 2019 16:40:14 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13809#p13809</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=10974#p10974</link>
			<description><![CDATA[<p>Здравствуйте!<br />Могли бы описать каким образом разобрались, и как это сделали?<br />Был бы очень признателен!</p>]]></description>
			<author><![CDATA[null@example.com (Dee_Jay)]]></author>
			<pubDate>Sat, 02 Dec 2017 09:06:24 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=10974#p10974</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=8050#p8050</link>
			<description><![CDATA[<p>да, спасибо большое... <br />разобрался, работает...<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="http://rgho.st/7HwYCzHZb/thumb.png" alt="http://rgho.st/7HwYCzHZb/thumb.png" /></span></p></div></div>]]></description>
			<author><![CDATA[null@example.com (baat)]]></author>
			<pubDate>Sat, 04 Mar 2017 21:31:45 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=8050#p8050</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=8037#p8037</link>
			<description><![CDATA[<div class="quotebox"><cite>baat пишет:</cite><blockquote><p>WendyH, эм, вот она как... а автоматизировать как-то можно? вне браузера и подкаста?... а средствами php, например... </p><p>пытаюсь, так...</p><div class="codebox"><pre><code>function visible($eval)
{
   return (&#039;&lt;script type=&quot;text/javascript&quot;&gt;var o = &#039;.$eval.&#039;; document.write(o.innerHTML); &lt;/script&gt;&#039;);
}</code></pre></div><p>но первый же eval возвращает <strong>undefined</strong>...</p></blockquote></div><p>Э... не представляю выполнение js средствами PHP. Только повторять (переписать) функцию распаковки.</p><p>А то, что делаете вы - это просто в браузер отправляете скрипт, где после выполнения в браузере переменная o - это будет строка. У неё нет свойства innerHTML. Это свойство undefined.</p>]]></description>
			<author><![CDATA[null@example.com (WendyH)]]></author>
			<pubDate>Sat, 04 Mar 2017 19:09:27 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=8037#p8037</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=8036#p8036</link>
			<description><![CDATA[<p>WendyH, эм, вот она как... а автоматизировать как-то можно? вне браузера и подкаста?... а средствами php, например... </p><p>пытаюсь, так...</p><div class="codebox"><pre><code>function visible($eval)
{
   return (&#039;&lt;script type=&quot;text/javascript&quot;&gt;var o = &#039;.$eval.&#039;; document.write(o.innerHTML); &lt;/script&gt;&#039;);
}</code></pre></div><p>но первый же eval возвращает <strong>undefined</strong>...</p>]]></description>
			<author><![CDATA[null@example.com (baat)]]></author>
			<pubDate>Sat, 04 Mar 2017 18:58:47 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=8036#p8036</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=8032#p8032</link>
			<description><![CDATA[<p>Там этот код очень страшный только на первый взгляд. Я уже такое видел.<br />В общем, любые eval и запакованные скрипты я раскодирую в инструментах разработчика в Chrome (можно в любом современном браузере), в консоле.</p><p>Переходим в консоль, копируем всё, что между скобок в eval(...) и пишу <br />var aaa = <br />и вставляю скопированный участок. Потом набираем<br />aaa<br />и смотрим, что выводит. Отпугивает начинающих вываливающийся код, который кажется всё тем же самым, на самом деле это новый eval и опять запакованные функции.<br />С ними повторяем то же самое, т.е. копируем всё, что между скобок eval и присваиваем переменной, смотрим что содержит переменная.<br />Только нужно быть внимательным при копировании, ибо там потом на втором или третьем уровне глубины уже подряд встречаются два eval и их нужно раскодировать отдельно и последовательно. В итоге, можно добраться до раскодированного скрипта.<br />А вот там то и будут ссылки с token.</p><p>И да, похоже привязка к IP есть. И вообще, канал euro sport 2 для меня заблокирован по просьбе правообладателей. Пробовал всё на канале setanta sport.</p><p>Ща, попробую видео записать.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Осторожно, большой gif</div><div class="fancy_spoiler"><p><span class="postimg"><img src="https://hms.lostcut.net/img/gifs/decrunch_js_eval.gif" alt="https://hms.lostcut.net/img/gifs/decrunch_js_eval.gif" /></span></p></div></div><p>Также где-то в подкасте я уже использовал раскодировку вложенных eval-ов.<br />Нашёл, в seasonvar было такое. Вот такой скрипт получился:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>///////////////////////////////////////////////////////////////////////////////
// Javascript Eval
string jsEval(string sData) {
  Variant objScript, objJS; string sResult = &#039;&#039;;
  
  try {objScript = CreateOleObject(&#039;MSScriptControl.ScriptControl&#039;);} except {};
  if (VarType(objScript) != varDispatch) { 
    HmsLogMessage(2, &#039;Не могу создать ActiveXObject MSScriptControl.ScriptControl&#039;); 
    return &#039;&#039;; 
  }
  objScript.Language = &#039;JavaScript&#039;;
  try { sResult = objScript.Eval(sData); } except { };
  return sResult;
}

///////////////////////////////////////////////////////////////////////////////
// Получение ссылки с http://viks.tv
void GetLink_vikstv(string sLink) {
  string sHtml, sData, scriptBlock;
  
  sHtml = HmsDownloadURL(sLink);
  
  // Ищем в загруженном html запакованную функцию в eval
  if (HmsRegExMatch(&#039;(eval\\(function\\(w,i,s,e\\).*?\&#039;\\)\\);)&#039;, sHtml, scriptBlock)) {
    // Распаковываем, пока распаковывается (всегда последний eval, если их несколько)
    while (HmsRegExMatch(&#039;.*eval(\\(.*\\));&#039;, scriptBlock, scriptBlock)) {
      scriptBlock = jsEval(scriptBlock);
    }
    // На выходе в scriptBlock - распакованный js код
  }
  
  // Получаем ссылку
  HmsRegExMatch(&#039;[\&#039;&quot;](http://.*?)[\&#039;&quot;]&#039;, scriptBlock, MediaResourceLink);
  // Даём понять программе, чтобы он это не воспринимал как прямую ссылку на поток (HLS не может так)
  if (Pos(&#039;m3u8&#039;, MediaResourceLink)&gt;0) MediaResourceLink = &#039; &#039;+Trim(MediaResourceLink);
  // А ещё прикол в C++Script такой, что если слева и справа есть одна и та же переменная со сложением,
  // то он может интерпретировать это как Переменная+=..., поэтому приходится обворачивать в Trim()...
  
}

///////////////////////////////////////////////////////////////////////////////
//                     Г Л А В Н А Я   П Р О Ц Е Д У Р А                     //
{
  GetLink_vikstv(&#039;http://viks.tv/448-setanta-sport.html&#039;);
}</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (WendyH)]]></author>
			<pubDate>Sat, 04 Mar 2017 17:03:20 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=8032#p8032</guid>
		</item>
		<item>
			<title><![CDATA[Re: viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=8031#p8031</link>
			<description><![CDATA[<p><a href="http://viks.tv/352-evrosport-2.html">http://viks.tv/352-evrosport-2.html</a></p><p>ссылка получается такого плана... вопрос где <strong>token</strong> берёт... и есть ли привязка к ip...</p><p><a href="http://91.234.34.154:8081/eurosport2/index.m3u8?token=a901673ef9fe006c76ab3225109bc419">http://91.234.34.154:8081/eurosport2/in … 25109bc419</a></p><p>хотябы чисто из спортивного интереса понять как оно работает... смотрел и сверху и сбоку, не могу понять откуда ноги растут...</p><p>вот этот кусочек показался интересным...<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="http://rgho.st/6l2fHbQlS/thumb.png" alt="http://rgho.st/6l2fHbQlS/thumb.png" /></span></p></div></div><p>а вот этот очень и очень страшным...<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="http://rgho.st/8vTTCn8VT/image.png" alt="http://rgho.st/8vTTCn8VT/image.png" /></span></p></div></div>]]></description>
			<author><![CDATA[null@example.com (baat)]]></author>
			<pubDate>Sat, 04 Mar 2017 14:20:13 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=8031#p8031</guid>
		</item>
		<item>
			<title><![CDATA[viks.tv]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=8030#p8030</link>
			<description><![CDATA[<div class="quotebox"><cite>vlad514 пишет:</cite><blockquote><p>Здравствуйте. Существует ли подкаст сайта <a href="http://viks.tv/">http://viks.tv/</a>&nbsp; ?</p></blockquote></div><p>видел подобное сообщение... подкаста к данному сайту не встретил...<br />сам этим сайтом не пользовался, пока не отвалились другие сайты с тв... но на нем несколько необходимых каналов работают...</p><p>прошу помощи с выдёргиванием ссылок с этого сайта...</p>]]></description>
			<author><![CDATA[null@example.com (baat)]]></author>
			<pubDate>Sat, 04 Mar 2017 14:14:23 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=8030#p8030</guid>
		</item>
	</channel>
</rss>
