<?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; openload.co]]></title>
		<link>https://hms.lostcut.net/viewtopic.php?id=579</link>
		<atom:link href="https://hms.lostcut.net/extern.php?action=feed&amp;tid=579&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «openload.co».]]></description>
		<lastBuildDate>Mon, 26 Nov 2018 18:40:23 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: openload.co]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13489#p13489</link>
			<description><![CDATA[<p>Здраствуйте WendyH , удалось мне раскодировать на php AADecoder : </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>&lt;script type=&quot;text/javascript&quot;&gt;ﾟωﾟﾉ= /｀ｍ´）ﾉ ~┻━┻   //*´∇｀*/ [&#039;_&#039;]; o=(ﾟｰﾟ)  =_=3; c=(ﾟΘﾟ) =(ﾟｰﾟ)-(ﾟｰﾟ); (ﾟДﾟ) =(ﾟΘﾟ)= (o^_^o)/ (o^_^o);(ﾟДﾟ)={ﾟΘﾟ: &#039;_&#039; ,ﾟωﾟﾉ : ((ﾟωﾟﾉ==3) +&#039;_&#039;) [ﾟΘﾟ] ,ﾟｰﾟﾉ :(ﾟωﾟﾉ+ &#039;_&#039;)[o^_^o -(ﾟΘﾟ)] ,ﾟДﾟﾉ:((ﾟｰﾟ==3) +&#039;_&#039;)[ﾟｰﾟ] }; (ﾟДﾟ) [ﾟΘﾟ] =((ﾟωﾟﾉ==3) +&#039;_&#039;) [c^_^o];(ﾟДﾟ) [&#039;c&#039;] = ((ﾟДﾟ)+&#039;_&#039;) [ (ﾟｰﾟ)+(ﾟｰﾟ)-(ﾟΘﾟ) ];(ﾟДﾟ) [&#039;o&#039;] = ((ﾟДﾟ)+&#039;_&#039;) [ﾟΘﾟ];(ﾟoﾟ)=(ﾟДﾟ) [&#039;c&#039;]+(ﾟДﾟ) [&#039;o&#039;]+(ﾟωﾟﾉ +&#039;_&#039;)[ﾟΘﾟ]+ ((ﾟωﾟﾉ==3) +&#039;_&#039;) [ﾟｰﾟ] + ((ﾟДﾟ) +&#039;_&#039;) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ ((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ]+((ﾟｰﾟ==3) +&#039;_&#039;) [(ﾟｰﾟ) - (ﾟΘﾟ)]+(ﾟДﾟ) [&#039;c&#039;]+((ﾟДﾟ)+&#039;_&#039;) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ (ﾟДﾟ) [&#039;o&#039;]+((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ];(ﾟДﾟ) [&#039;_&#039;] =(o^_^o) [ﾟoﾟ] [ﾟoﾟ];(ﾟεﾟ)=((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ]+ (ﾟДﾟ) .ﾟДﾟﾉ+((ﾟДﾟ)+&#039;_&#039;) [(ﾟｰﾟ) + (ﾟｰﾟ)]+((ﾟｰﾟ==3) +&#039;_&#039;) [o^_^o -ﾟΘﾟ]+((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ]+ (ﾟωﾟﾉ +&#039;_&#039;) [ﾟΘﾟ]; (ﾟｰﾟ)+=(ﾟΘﾟ); (ﾟДﾟ)[ﾟεﾟ]=&#039;\\&#039;; (ﾟДﾟ).ﾟΘﾟﾉ=(ﾟДﾟ+ ﾟｰﾟ)[o^_^o -(ﾟΘﾟ)];(oﾟｰﾟo)=(ﾟωﾟﾉ +&#039;_&#039;)[c^_^o];(ﾟДﾟ) [ﾟoﾟ]=&#039;\&quot;&#039;;(ﾟДﾟ) [&#039;_&#039;] ( (ﾟДﾟ) [&#039;_&#039;] (ﾟεﾟ+(ﾟДﾟ)[ﾟoﾟ]+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((o^_^o) +(o^_^o) +(c^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (-~0)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ (-~3)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((o^_^o) +(o^_^o) +(c^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+((ﾟｰﾟ) + (ﾟΘﾟ))+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+((ﾟｰﾟ) + (o^_^o))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(-~3)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~1)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((c^_^o)-(c^_^o))+ (-~1)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~1)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~1)+ (-~0)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~1)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ (-~0)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~-~1)+ ((c^_^o)-(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((c^_^o)-(c^_^o))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((c^_^o)-(c^_^o))+ (-~1)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~3)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+((ﾟｰﾟ) + (o^_^o))+ (-~-~1)+ (ﾟДﾟ)[ﾟoﾟ]) (ﾟΘﾟ)) (&#039;_&#039;);</code></pre></div></div></div><p>, а вот здесь :</p><div class="codebox"><pre><code>&lt;div class=&quot;&quot; style=&quot;display:none;&quot;&gt;
&lt;p style=&quot;&quot; id=&quot;baswccx3Pc&quot;&gt;81cb6ce07f116636e8a6b5e4987ac42abac7b3ca21c94e06acef26927924d76ca37221b2784d43704402465a63506b01495d5861500344577f496703604458664503607f777752017679406d5e03467e4f5f115f6545506a026665707e70024a5653571d&lt;/p&gt;
&lt;p style=&quot;&quot; class=&quot;&quot; id=&quot;DtsBlkVFQx&quot;&gt;640K ought to be enough for anybody&lt;/p&gt;
&lt;/div&gt;</code></pre></div><p> я в тупике , не хватает знаний перевести твою HMS C++ </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>///////////////////////////////////////////////////////////////////////////////
// Расшифровка части ссылки с openload.co
string Decode_Openload(string encoded, string known) {
  string  decoded = &quot;&quot;; int i, encByte; Variant magic4Xor = StrToInt64(&quot;0&quot;);
  variant arr4Xor = [1,2,3,4,5,6,7,8,9];
  
  for (i=0; i&lt;9; i++) // fill array by first 9 dwords
    arr4Xor[i] = &#039;0x&#039;+Copy(encoded, i*8+1, 8);
  
  encoded = Copy(encoded, i*8+1, 9999); // skip dwords
  
  int dwCount = 0; i = 0;
  while (i &lt; Length(encoded)) {
    int maxByte = 0x40;
    int count2  = 0;
    Variant val4xor = StrToInt64(&quot;0&quot;);
    do {
      if (i+1 &gt;= Length(encoded)) maxByte = 0x8f;
      encByte = StrToInt(&#039;0x&#039;+Copy(encoded, i+1, 2)); // parseInt(s, 16)
      int masked = encByte &amp;&amp; 0x3F;
      if (count2 &lt; 30) val4xor += masked &lt;&lt; count2;
      else             val4xor += masked * exp(ln(2) * count2); // exp(ln(X) * Y) - возведение в степень на паскале!!
        count2 += 6; i += 2;
    } while (encByte &gt;= maxByte);
    
    // Вот такое извращение для приведения к типу Int64 (другого не придумал)
    Variant i64 = StrToInt64(IntToStr(val4xor));
    Variant deV = i64 ^ StrToInt64(arr4Xor[dwCount % 9]);
    // Если ещё не делали - получаем значения для XOR по известным четырём символам
    if (magic4Xor==0) {
      magic4Xor = StrToInt(Format(&#039;0x%x%x%x%x&#039;, [Ord(known[4])+1, Ord(known[3])+1, Ord(known[2])+1, Ord(known[1])+1])) ^ deV;
    }
    
    deV = deV ^ magic4Xor;
    
    decoded += Chr(deV       &amp;&amp; 0xFF - 1);
    decoded += Chr(deV &gt;&gt;  8 &amp;&amp; 0xFF - 1);
    decoded += Chr(deV &gt;&gt; 16 &amp;&amp; 0xFF - 1);
    decoded += Chr(deV &gt;&gt; 24 &amp;&amp; 0xFF - 1);
    dwCount++;
  }
  return ReplaceStr(decoded, &#039;$&#039;, &#039;&#039;);
}</code></pre></div></div></div><p>Decode_Openload функцию на php&nbsp; <img src="https://hms.lostcut.net/extensions/k_smiles/img/ac.gif" alt=":(" /> <br />Поможете перевести на php ? Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (satelitas)]]></author>
			<pubDate>Mon, 26 Nov 2018 18:40:23 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13489#p13489</guid>
		</item>
		<item>
			<title><![CDATA[Re: openload.co]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13200#p13200</link>
			<description><![CDATA[<p>Ооо, опенлоад. Это боги шифрования!<br />Я его тут давеча вместе со <strong>Spell</strong> победил. Без всяких PhantomJS. Это было эпично.<br />Сказал <strong>Spell</strong>-у, что выложу статью, как такие защиты ломать.. Но несколько раз начав, понял, что это тот ещё труд (статьи писать) и времени так и не хватило. Надеюсь напишу, всё-таки. Вроде простые вещи нужно донести, но пока эти картинки и gif-ы подготовишь, да так, чтобы выглядело прилично - уйма времени уходит.</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"><div class="codebox"><pre><code>&lt;script type=&quot;text/javascript&quot;&gt;ﾟωﾟﾉ= /｀ｍ´）ﾉ ~┻━┻   //*´∇｀*/ [&#039;_&#039;]; o=(ﾟｰﾟ)  =_=3; c=(ﾟΘﾟ) =(ﾟｰﾟ)-(ﾟｰﾟ); (ﾟДﾟ) =(ﾟΘﾟ)= (o^_^o)/ (o^_^o);(ﾟДﾟ)={ﾟΘﾟ: &#039;_&#039; ,ﾟωﾟﾉ : ((ﾟωﾟﾉ==3) +&#039;_&#039;) [ﾟΘﾟ] ,ﾟｰﾟﾉ :(ﾟωﾟﾉ+ &#039;_&#039;)[o^_^o -(ﾟΘﾟ)] ,ﾟДﾟﾉ:((ﾟｰﾟ==3) +&#039;_&#039;)[ﾟｰﾟ] }; (ﾟДﾟ) [ﾟΘﾟ] =((ﾟωﾟﾉ==3) +&#039;_&#039;) [c^_^o];(ﾟДﾟ) [&#039;c&#039;] = ((ﾟДﾟ)+&#039;_&#039;) [ (ﾟｰﾟ)+(ﾟｰﾟ)-(ﾟΘﾟ) ];(ﾟДﾟ) [&#039;o&#039;] = ((ﾟДﾟ)+&#039;_&#039;) [ﾟΘﾟ];(ﾟoﾟ)=(ﾟДﾟ) [&#039;c&#039;]+(ﾟДﾟ) [&#039;o&#039;]+(ﾟωﾟﾉ +&#039;_&#039;)[ﾟΘﾟ]+ ((ﾟωﾟﾉ==3) +&#039;_&#039;) [ﾟｰﾟ] + ((ﾟДﾟ) +&#039;_&#039;) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ ((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ]+((ﾟｰﾟ==3) +&#039;_&#039;) [(ﾟｰﾟ) - (ﾟΘﾟ)]+(ﾟДﾟ) [&#039;c&#039;]+((ﾟДﾟ)+&#039;_&#039;) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ (ﾟДﾟ) [&#039;o&#039;]+((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ];(ﾟДﾟ) [&#039;_&#039;] =(o^_^o) [ﾟoﾟ] [ﾟoﾟ];(ﾟεﾟ)=((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ]+ (ﾟДﾟ) .ﾟДﾟﾉ+((ﾟДﾟ)+&#039;_&#039;) [(ﾟｰﾟ) + (ﾟｰﾟ)]+((ﾟｰﾟ==3) +&#039;_&#039;) [o^_^o -ﾟΘﾟ]+((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ]+ (ﾟωﾟﾉ +&#039;_&#039;) [ﾟΘﾟ]; (ﾟｰﾟ)+=(ﾟΘﾟ); (ﾟДﾟ)[ﾟεﾟ]=&#039;\\&#039;; (ﾟДﾟ).ﾟΘﾟﾉ=(ﾟДﾟ+ ﾟｰﾟ)[o^_^o -(ﾟΘﾟ)];(oﾟｰﾟo)=(ﾟωﾟﾉ +&#039;_&#039;)[c^_^o];(ﾟДﾟ) [ﾟoﾟ]=&#039;\&quot;&#039;;(ﾟДﾟ) [&#039;_&#039;] ( (ﾟДﾟ) [&#039;_&#039;] (ﾟεﾟ+(ﾟДﾟ)[ﾟoﾟ]+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((o^_^o) +(o^_^o) +(c^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (-~0)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ (-~3)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((o^_^o) +(o^_^o) +(c^_^o))+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+((ﾟｰﾟ) + (ﾟΘﾟ))+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((o^_^o) +(o^_^o) +(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+((ﾟｰﾟ) + (o^_^o))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(-~3)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~1)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((c^_^o)-(c^_^o))+ (-~1)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~1)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~1)+ (-~0)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~1)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ (-~0)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~-~1)+ ((c^_^o)-(c^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((c^_^o)-(c^_^o))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ ((c^_^o)-(c^_^o))+ (-~1)+ (ﾟДﾟ)[ﾟεﾟ]+(-~0)+ (-~3)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+(-~3)+ ((ﾟｰﾟ) + (o^_^o))+ (ﾟДﾟ)[ﾟεﾟ]+((ﾟｰﾟ) + (o^_^o))+ (-~-~1)+ (ﾟДﾟ)[ﾟoﾟ]) (ﾟΘﾟ)) (&#039;_&#039;);var _0x9495=[&#039;\x5a\x66\x74&#039;,&#039;\x70\x6f\x77&#039;,&#039;\x74\x63\x56&#039;,&#039;\x45\x41\x6b&#039;,&#039;\x51\x48\x62&#039;,&#039;\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74&#039;,&#039;\x31\x31\x7c\x31\x32\x7c\x31\x33\x7c\x30\x7c\x31\x34\x7c\x33\x7c\x32\x7c\x39\x7c\x31\x36\x7c\x31\x7c\x34\x7c\x38\x7c\x35\x7c\x36\x7c\x31\x35\x7c\x31\x30\x7c\x37&#039;,&#039;\x73\x70\x6c\x69\x74&#039;,&#039;\x78\x58\x4d&#039;,&#039;\x6c\x65\x6e\x67\x74\x68&#039;,&#039;\x6a\x4c\x61&#039;,&#039;\x73\x75\x62\x73\x74\x72\x69\x6e\x67&#039;,&#039;\x61\x5a\x50&#039;,&#039;\x64\x4f\x44&#039;,&#039;\x50\x6f\x79&#039;,&#039;\x77\x72\x69\x74\x65&#039;,&#039;\x70\x75\x73\x68&#039;,&#039;\x64\x6b\x46&#039;,&#039;\x74\x65\x78\x74&#039;,&#039;\x74\x6a\x66&#039;,&#039;\x48\x49\x5a&#039;,&#039;\x57\x79\x58&#039;,&#039;\x66\x61\x7a&#039;,&#039;\x47\x63\x79&#039;,&#039;\x75\x63\x73&#039;,&#039;\x32\x7c\x30\x7c\x35\x7c\x34\x7c\x33\x7c\x31&#039;,&#039;\x64\x68\x68&#039;,&#039;\x70\x51\x75&#039;,&#039;\x65\x4d\x7a&#039;,&#039;\x5a\x42\x44&#039;,&#039;\x4c\x6e\x6b&#039;,&#039;\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65&#039;,&#039;\x44\x59\x6c&#039;,&#039;\x34\x7c\x33\x7c\x30\x7c\x35\x7c\x36\x7c\x32\x7c\x31&#039;,&#039;\x57\x4f\x61&#039;,&#039;\x67\x7a\x77&#039;,&#039;\x63\x42\x56&#039;];(function(_0x1f55fe,_0x45ae62){var _0x3d4039=function(_0x32de24){while(--_0x32de24){_0x1f55fe[&#039;\x70\x75\x73\x68&#039;](_0x1f55fe[&#039;\x73\x68\x69\x66\x74&#039;]());}};_0x3d4039(++_0x45ae62);}(_0x9495,0xbf));var _0x5949=function(_0x1f55fe,_0x45ae62){_0x1f55fe=_0x1f55fe-0x0;var _0x3d4039=_0x9495[_0x1f55fe];return _0x3d4039;};$(document)[&#039;\x72\x65\x61\x64\x79&#039;](function(){var _0x45ae41={&#039;\x78\x58\x4d&#039;:function _0x184df4(_0x3f842b,_0x6062d8){return _0x3f842b&lt;_0x6062d8;},&#039;\x6a\x4c\x61&#039;:function _0x3457b8(_0x38f439,_0x457b87){return _0x38f439*_0x457b87;},&#039;\x61\x5a\x50&#039;:function _0x961da7(_0x56acea,_0x37f246){return _0x56acea+_0x37f246;},&#039;\x64\x4f\x44&#039;:function _0x2dfccb(_0x44ea34,_0xe1a069,_0x49022f){return _0x44ea34(_0xe1a069,_0x49022f);},&#039;\x50\x6f\x79&#039;:function _0x170b95(_0x49e0ac,_0x204c53){return _0x49e0ac in _0x204c53;},&#039;\x64\x6b\x46&#039;:function _0x275cbe(_0x48d105,_0x930083){return _0x48d105(_0x930083);},&#039;\x74\x6a\x66&#039;:function _0x2af2f3(_0x5d6e96,_0x41b58f){return _0x5d6e96*_0x41b58f;},&#039;\x48\x49\x5a&#039;:function _0x1ccc24(_0x2f473c,_0xef0da5){return _0x2f473c^_0xef0da5;},&#039;\x57\x79\x58&#039;:function _0x83e7c(_0x4fa9eb,_0x4fc60d){return _0x4fa9eb^_0x4fc60d;},&#039;\x66\x61\x7a&#039;:function _0x7ec967(_0x1d25ce,_0x2d0418){return _0x1d25ce^_0x2d0418;},&#039;\x47\x63\x79&#039;:function _0x3346a1(_0x5cef79,_0x59b5a3){return _0x5cef79%_0x59b5a3;},&#039;\x75\x63\x73&#039;:function _0x2f75f3(_0x3e1dda,_0x192d4c){return _0x3e1dda&lt;_0x192d4c;},&#039;\x64\x68\x68&#039;:function _0x2cc0da(_0x240c12,_0x5b7c4c){return _0x240c12*_0x5b7c4c;},&#039;\x70\x51\x75&#039;:function _0xe29029(_0x45e457,_0x88979d){return _0x45e457/_0x88979d;},&#039;\x65\x4d\x7a&#039;:function _0xe40d05(_0x5a668a,_0x2c7bd1){return _0x5a668a&lt;&lt;_0x2c7bd1;},&#039;\x5a\x42\x44&#039;:function _0x46f50e(_0x5ba232,_0x312024){return _0x5ba232&amp;_0x312024;},&#039;\x4c\x6e\x6b&#039;:function _0x56789d(_0x3aa5f8,_0x3172ef){return _0x3aa5f8!=_0x3172ef;},&#039;\x44\x59\x6c&#039;:function _0x19031e(_0x144a2e,_0x309a9f){return _0x144a2e&gt;&gt;_0x309a9f;},&#039;\x57\x4f\x61&#039;:function _0x1689bf(_0x39dbf0,_0x42e9f7){return _0x39dbf0 in _0x42e9f7;},&#039;\x67\x7a\x77&#039;:function _0x5cedc0(_0x21a7ef,_0x482441){return _0x21a7ef&lt;_0x482441;},&#039;\x63\x42\x56&#039;:function _0x47a063(_0x47d3f1,_0x4bebf9){return (parseInt,_0x1fa71e,0x10);continue;}break;}}while(_0x45ae41[_0x5949(&#039;0x23&#039;)](_0x3d9c8e,_0x5eb93a));continue;case&#039;\x31\x31&#039;:var  _1x4bfb36=parseInt(&#039;15014242734&#039;,8)-26;continue;case&#039;\x31\x32&#039;:var _0x1a873b=0x0;continue;case&#039;\x31\x33&#039;:var _0x3d9c8e=0x0;continue;}break;}}continue;case&#039;\x31\x31&#039;:var _0x531f91=_0x45ae41[&#039;\x64\x6b\x46&#039;]($,_0x45ae41[_0x5949(&#039;0x6&#039;)](&#039;\x23&#039;,ffff))[_0x5949(&#039;0xc&#039;)]();continue;case&#039;\x31\x32&#039;:var _0x5d72cd=_0x531f91[_0x5949(&#039;0x24&#039;)](0x0);continue;case&#039;\x31\x33&#039;:_0x5d72cd=_0x531f91;continue;case&#039;\x31\x34&#039;:var _0x41e0ff=_0x45ae41[_0x5949(&#039;0x14&#039;)](0x9,0x8);continue;case&#039;\x31\x35&#039;:var _0x145894=0x0;continue;case&#039;\x31\x36&#039;:var _0x31f4aa={&#039;\x6b&#039;:_0x439a49,&#039;\x6b\x65&#039;:[]};continue;}break;}});
ﾟωﾟﾉ= /｀ｍ´）ﾉ ~┻━┻   //*´∇｀*/ [&#039;_&#039;]; o=(ﾟｰﾟ)  =_=3; c=(ﾟΘﾟ) =(ﾟｰﾟ)-(ﾟｰﾟ); (ﾟДﾟ) =(ﾟΘﾟ)= (o^_^o)/ (o^_^o);(ﾟДﾟ)={ﾟΘﾟ: &#039;_&#039; ,ﾟωﾟﾉ : ((ﾟωﾟﾉ==3) +&#039;_&#039;) [ﾟΘﾟ] ,ﾟｰﾟﾉ :(ﾟωﾟﾉ(ﾟДﾟ) [&#039;c&#039;]+(ﾟДﾟ) [&#039;o&#039;]+(ﾟωﾟﾉ +&#039;_&#039;)[ﾟΘﾟ]+ ((ﾟωﾟﾉ==3) +&#039;_&#039;) [ﾟｰﾟ] + ((ﾟДﾟ) +&#039;_&#039;) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ ((ﾟｰﾟ==3) +&#039;_&#039;) [ﾟΘﾟ]+((ﾟｰﾟ==3) +&#039;_&#039;) [(ﾟｰﾟ) - (ﾟΘﾟ)]+(ﾟДﾟ) [&#039;c&#039;]+((ﾟДﾟ)+&#039;_&#039;) [(ﾟ</code></pre></div></div></div><p>Напрочь обфусцированный код. С подсказок <strong>Spell</strong>, первая и последняя часть кода деобфусцируется декодером <a href="https://cat-in-136.github.io/2010/12/aadecode-decode-encoded-as-aaencode.html">https://cat-in-136.github.io/2010/12/aa … ncode.html</a><br />А вот среднюю часть приходится декодировать вручную. И это нифига не быстро.</p><p>Но суть там следующая. После загрузки кода страницы и исполнения JavaScript в значении тега на странице появляется ссылка на видео (вместо слов Била Гейтса &quot;640K ought to be enough for anybody&quot;).<br /></p><div class="codebox"><pre><code>&lt;div class=&quot;&quot; style=&quot;display:none;&quot;&gt;
&lt;p style=&quot;&quot; id=&quot;baswccx3Pc&quot;&gt;81cb6ce07f116636e8a6b5e4987ac42abac7b3ca21c94e06acef26927924d76ca37221b2784d43704402465a63506b01495d5861500344577f496703604458664503607f777752017679406d5e03467e4f5f115f6545506a026665707e70024a5653571d&lt;/p&gt;
&lt;p style=&quot;&quot; class=&quot;&quot; id=&quot;DtsBlkVFQx&quot;&gt;640K ought to be enough for anybody&lt;/p&gt;
&lt;/div&gt;</code></pre></div><p>Эта ссылка расшифровывается с помощью кода, привязана к IP и код с каждой загрузкой страницы немного меняется. Точнее меняются значения для дешифрования.</p><p>Так вот эти меняющиеся значения сильно добавляли головной боли. Т.е. их можно было получить только после деобфускации. Но я придумал, как получить их значения по уже частично известным данным.<br />Дело в том, что в зашифрованной ссылке, начало всегда начиналось с кода, который можно получить в открытом виде из html.<br />Например, ссылка iframe такая: <br /></p><div class="codebox"><pre><code>https://openload.co/embed/CWaAkV9Rp4I/Like.Father.2018.720p.WEBRip.HiWayGrope.mkv.mp4</code></pre></div><p>а зашифрованная ссылка на странице на видео поток получалась такая: <br /></p><div class="codebox"><pre><code>CWaAkV9Rp4I~1540044612~2.94.0.0~eHngQiDs?mime=true</code></pre></div><p>(к ней ещё нужно потом добавить /stream/ в начало, чтобы получилось что-то вроде <a href="https://openload.co/stream/CWaAkV9Rp4I~1540044612~2.94.0.0~eHngQiDs?mime=true">https://openload.co/stream/CWaAkV9Rp4I~ … ?mime=true</a>)<br />Так вот этот код: <strong>CWaAkV9Rp4I</strong>, известен заранее. Что помогает вычислить первоначальные значения magic чисел, с помощью которых идёт дешифрация (которые как раз меняются при каждом обращении к странице).</p><p>В общем, на PHP я пока такое не реализовывал, но может быть, поможет код для HMS на C++Script?<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>///////////////////////////////////////////////////////////////////////////////
// Расшифровка части ссылки с openload.co
string Decode_Openload(string encoded, string known) {
  string  decoded = &quot;&quot;; int i, encByte; Variant magic4Xor = StrToInt64(&quot;0&quot;);
  variant arr4Xor = [1,2,3,4,5,6,7,8,9];
  
  for (i=0; i&lt;9; i++) // fill array by first 9 dwords
    arr4Xor[i] = &#039;0x&#039;+Copy(encoded, i*8+1, 8);
  
  encoded = Copy(encoded, i*8+1, 9999); // skip dwords
  
  int dwCount = 0; i = 0;
  while (i &lt; Length(encoded)) {
    int maxByte = 0x40;
    int count2  = 0;
    Variant val4xor = StrToInt64(&quot;0&quot;);
    do {
      if (i+1 &gt;= Length(encoded)) maxByte = 0x8f;
      encByte = StrToInt(&#039;0x&#039;+Copy(encoded, i+1, 2)); // parseInt(s, 16)
      int masked = encByte &amp;&amp; 0x3F;
      if (count2 &lt; 30) val4xor += masked &lt;&lt; count2;
      else             val4xor += masked * exp(ln(2) * count2); // exp(ln(X) * Y) - возведение в степень на паскале!!
        count2 += 6; i += 2;
    } while (encByte &gt;= maxByte);
    
    // Вот такое извращение для приведения к типу Int64 (другого не придумал)
    Variant i64 = StrToInt64(IntToStr(val4xor));
    Variant deV = i64 ^ StrToInt64(arr4Xor[dwCount % 9]);
    // Если ещё не делали - получаем значения для XOR по известным четырём символам
    if (magic4Xor==0) {
      magic4Xor = StrToInt(Format(&#039;0x%x%x%x%x&#039;, [Ord(known[4])+1, Ord(known[3])+1, Ord(known[2])+1, Ord(known[1])+1])) ^ deV;
    }
    
    deV = deV ^ magic4Xor;
    
    decoded += Chr(deV       &amp;&amp; 0xFF - 1);
    decoded += Chr(deV &gt;&gt;  8 &amp;&amp; 0xFF - 1);
    decoded += Chr(deV &gt;&gt; 16 &amp;&amp; 0xFF - 1);
    decoded += Chr(deV &gt;&gt; 24 &amp;&amp; 0xFF - 1);
    dwCount++;
  }
  return ReplaceStr(decoded, &#039;$&#039;, &#039;&#039;);
}

///////////////////////////////////////////////////////////////////////////////
// Получение ссылки с openload.co
void GetLink_Openload(string link) {
  string html, code, encrypted;
  
  html = HmsDownloadURL(link);
  // Получаем код для расшифровки
  HmsRegExMatch(&#039;embed/(.*?)/&#039;, link, code); // вида &quot;CWaAkV9Rp4I&quot; - известное начало дешифрованной ссылки
  // Получаем зашифрованный участок
  if (HmsRegExMatch(&#039;&lt;p[^&gt;]+id=&quot;\\w{10}&quot;&gt;(.*?)&lt;&#039;, html, encrypted)) // в переменную encrypted получаем зашифрованные данные, которые нужно дешифровать
    MediaResourceLink = &#039;https://openload.co/stream/&#039;+Decode_Openload(encrypted, code)+&#039;?mime=true&#039;;
  else
    HmsLogMessage(2, mpTitle+&quot;: Not found encrypted data in embeded iframe.&quot;);
}

///////////////////////////////////////////////////////////////////////////////
//                     Г Л А В Н А Я   П Р О Ц Е Д У Р А                     //
{
  mpFilePath = &quot;https://recentfilms.info/komediya/258-kak-otec-like-father-2018.html&quot;; // для примера
  string html = HmsDownloadURL(mpFilePath);
  if (HmsRegExMatch(&#039;(https?://openload.co/embed/.*?)&quot;&#039;, html, mpFilePath))
    GetLink_Openload(mpFilePath);
  else
    HmsLogMessage(2, mpTitle+&quot;: No openload iframe in loaded page.&quot;);
}</code></pre></div></div></div><p>Сразу оговорюсь - очень много сил ушло на борьбу с перегрузкой чисел INT64, которые в HMS вообще вели себя не так как в JavaScript. Поэтому данный код напичкан странными StrToInt64(&quot;0&quot;) и проч. Без которых вообще, как оказалось, невозможно получить число, не приводя его к Int или Double. А это вообще не одно и то же.</p><p>Потом, может завтра, попробую перевести это дело на PHP, если интересует. Мне это будет сделать проще, ибо извращался тут я сам.</p><p>Ну а по поводу использования PhantomJs - тут задача сильно упрощается. Прям завидую тем, кто может использовать Phyton для своих медиа-серверов и проч. Тут приходится иметь дело с тем, что есть. <a href="https://www.fastreport.ru/ru/product/fast-script/documentation/">FastScript</a> убог, на самом деле.</p><p>И <strong>satelitas</strong>, я вообще не представляю, как вы хотели &quot;этот плагин переписать c phyton на php без phantomjs&quot;. В том то и подход там, чтобы использовать phantomjs. Без него вам нужно придумывать что-то абсолютно другое.<br />Типа как я - разбираться, как генерятся нужные ссылки, как они дешифруются и писать подобное самому.</p><p>В общем, для кучи, даю ссылку на подкаст для зарубежного сайта openloadmovie.org (фильмы только на английском):</p><p>Чтобы можно было на нём поизучать, как работает мною приведённый код.</p><p>P.S.: Кстати, есть <a href="https://github.com/jonnnnyw/php-phantomjs">php-phantomjs</a>, но с ним я ещё дело не имел.</p>]]></description>
			<author><![CDATA[null@example.com (WendyH)]]></author>
			<pubDate>Fri, 19 Oct 2018 14:51:14 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13200#p13200</guid>
		</item>
		<item>
			<title><![CDATA[openload.co]]></title>
			<link>https://hms.lostcut.net/viewtopic.php?pid=13197#p13197</link>
			<description><![CDATA[<p>Есть ресурс на видео - openload . На линуксе установил пакеты youtube-dl и phantomjs . Там все заработало .<br />Здесь - <a href="https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/openload.py">https://github.com/rg3/youtube-dl/blob/ … penload.py</a> , вот пробую этот плагин переписать c phyton на php без phantomjs . Сохранил openload.html в tmp.html и cookies в tmp , а что дальше? Парсил на curl .<br /> Читал здесь <a href="https://hms.lostcut.net/viewtopic.php?id=430">https://hms.lostcut.net/viewtopic.php?id=430</a> . Прошу помощи , как раскодировать openload .Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (satelitas)]]></author>
			<pubDate>Fri, 19 Oct 2018 09:25:06 +0000</pubDate>
			<guid>https://hms.lostcut.net/viewtopic.php?pid=13197#p13197</guid>
		</item>
	</channel>
</rss>
