1

Тема: Расшифровка ссылок с ustore балансера (ustore.bz, u-cdn.top)

Может кому пригодится.

UstoreDecode для зашифрованных ссылок с балансера ustore.

Пример дешифровки на PHP:

<?php

$link = isset($_GET["url"]) ? $_GET["url"] : ""; if (!$link) die("No url!");

// Для запросов на этот русурс нужны в заголовках Referer и Origin
$referer = isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : $link;
$origin  = preg_match('#^(http.*?//[^/]+)#', $link, $m) ? $m[1] : "";

// Притворяемся браузером, передаём куки, подменяем Referer'а
$opts = Array('http'=>Array(
    'method'=>"GET",
    'header'=>"Referer: $referer\r\n" .
              "Origin: $origin\r\n" .
              "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36\r\n"));
// Скачиваем html страницу
$html = file_get_contents($link, false, stream_context_create($opts));

// Получаем значения hash и id
$hash = preg_match('#"hash"\s*:\s*"(.*?)"#s', $html, $m) ? $m[1] : "";
$id   = preg_match(  '#"id"\s*:\s*"(.*?)"#s', $html, $m) ? $m[1] : "";

// Делаем запрос для получения JSON данных о ссылках или плейлисте
$data = file_get_contents("https://ustore.bz/getContentJson.php?hash=$hash&id=$id", false, stream_context_create($opts));
$json = json_decode($data, TRUE);

if (!isset($json["url"])) die($data);

// Теперь можем перебрать все полученные ссылки на файлы, декодируя их
$decodedArray = array();
foreach($json["url"] as $url) {
        $decodedArray[] = str_replace(":hls:manifest.m3u8", "", UstoreDecode($url)); 
}
// Вставляем массив декодированных ссылок на место
$json["url"] = $decodedArray;                                                                  

// Выводим JSON со ссылками
header('Content-Type: application/json');
echo json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);

exit();

///////////////////////////////////////////////////////////////////////////////
// Раскодирование ссылки с сайта ustore.bz
function UstoreDecode($data) {
  if (!$data) return "";
  if ($data[0]=="=") {
    $data = substr($data, 1, strlen($data)-1);
    $s1 = "qwertyuiopxcvQWERTYUIOPXCV123456789";
    $s2 = "ASDFGHJKLZBNMasdfghjklzbnm987654321";
    for ($i=0; $i < strlen($s1); $i++) {
      $data = str_replace($s1[$i],    "__", $data);
      $data = str_replace($s2[$i], $s1[$i], $data);
      $data = str_replace(   "__", $s2[$i], $data);
    }
    $data = urldecode(base64_decode($data));
  }
  return $data;
}

Тест: http://wonky.lostcut.net/ustore.php?url … 5425e16ffb

Для HMS:

///////////////////////////////////////////////////////////////////////////////
// Получение ссылки с балансера ustore
void GetLink_Ustrore(string sLink) {
  string html, data, sVal, sServ, hash, id;
  HmsRegExMatch("^(http.*?//[^/]+)", sLink, sServ);
  html = HmsDownloadURL(sLink, 'Referer: '+mpFilePath+'\r\nOrigin: '+sServ);
  HmsRegExMatch('"hash"\\s*:\\s*"(.*?)"', html, hash);
  HmsRegExMatch(  '"id"\\s*:\\s*"(.*?)"', html, id  );
  data = HmsUtf8Decode(HmsDownloadURL("https://ustore.bz/getContentJson.php?hash="+hash+"&id="+id, 'Referer: '+mpFilePath+'\r\nOrigin: '+sServ));
  HmsRegExMatch('"url"\\s*:\\s*\\[[^\\]]*"(.*?)"', data, sVal, 1, PCRE_SINGLELINE);
  MediaResourceLink = UstoreDecode(sVal);
  HmsRegExMatch('^(.*?\\.mp4):hls:manifest.m3u8', MediaResourceLink, MediaResourceLink);
}

///////////////////////////////////////////////////////////////////////////////
// Декодирование ссылок с ресурса ustore.bz (u-cdn.top)
string UstoreDecode(string data) {
  if (data=="") return "";
  if (data[1]=="=") {
    data = Copy(data, 2, Length(data)-1);
    string s1 = "qwertyuiopxcvQWERTYUIOPXCV123456789";
    string s2 = "ASDFGHJKLZBNMasdfghjklzbnm987654321";
    for (int i=1; i <= Length(s1); i++) {
      data = ReplaceStr(data, s1[i],  "__");
      data = ReplaceStr(data, s2[i], s1[i]);
      data = ReplaceStr(data,  "__", s2[i]);
    }
    data = HmsHttpDecode(HmsBase64Decode(data));
  }
  return data;
}
Sony Bravia KDL-32CX523
Спасибо сказали: foks5050, smsbox32

2

Re: Расшифровка ссылок с ustore балансера (ustore.bz, u-cdn.top)

WendyH пишет:

Может кому пригодится.

Обязательно пригодится! Спасибище!

3

Re: Расшифровка ссылок с ustore балансера (ustore.bz, u-cdn.top)

WendyH пишет:

Может кому пригодится.

UstoreDecode для зашифрованных ссылок с балансера ustore.

Пример дешифровки на PHP:

<?php

$link = isset($_GET["url"]) ? $_GET["url"] : ""; if (!$link) die("No url!");

// Для запросов на этот русурс нужны в заголовках Referer и Origin
$referer = isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : $link;
$origin  = preg_match('#^(http.*?//[^/]+)#', $link, $m) ? $m[1] : "";

// Притворяемся браузером, передаём куки, подменяем Referer'а
$opts = Array('http'=>Array(
    'method'=>"GET",
    'header'=>"Referer: $referer\r\n" .
              "Origin: $origin\r\n" .
              "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36\r\n"));
// Скачиваем html страницу
$html = file_get_contents($link, false, stream_context_create($opts));

// Получаем значения hash и id
$hash = preg_match('#"hash"\s*:\s*"(.*?)"#s', $html, $m) ? $m[1] : "";
$id   = preg_match(  '#"id"\s*:\s*"(.*?)"#s', $html, $m) ? $m[1] : "";

// Делаем запрос для получения JSON данных о ссылках или плейлисте
$data = file_get_contents("https://ustore.bz/getContentJson.php?hash=$hash&id=$id", false, stream_context_create($opts));
$json = json_decode($data, TRUE);

if (!isset($json["url"])) die($data);

// Теперь можем перебрать все полученные ссылки на файлы, декодируя их
$decodedArray = array();
foreach($json["url"] as $url) {
        $decodedArray[] = str_replace(":hls:manifest.m3u8", "", UstoreDecode($url)); 
}
// Вставляем массив декодированных ссылок на место
$json["url"] = $decodedArray;                                                                  

// Выводим JSON со ссылками
header('Content-Type: application/json');
echo json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);

exit();

///////////////////////////////////////////////////////////////////////////////
// Раскодирование ссылки с сайта ustore.bz
function UstoreDecode($data) {
  if (!$data) return "";
  if ($data[0]=="=") {
    $data = substr($data, 1, strlen($data)-1);
    $s1 = "qwertyuiopxcvQWERTYUIOPXCV123456789";
    $s2 = "ASDFGHJKLZBNMasdfghjklzbnm987654321";
    for ($i=0; $i < strlen($s1); $i++) {
      $data = str_replace($s1[$i],    "__", $data);
      $data = str_replace($s2[$i], $s1[$i], $data);
      $data = str_replace(   "__", $s2[$i], $data);
    }
    $data = urldecode(base64_decode($data));
  }
  return $data;
}

Тест: http://wonky.lostcut.net/ustore.php?url … 5425e16ffb

Для HMS:

///////////////////////////////////////////////////////////////////////////////
// Получение ссылки с балансера ustore
void GetLink_Ustrore(string sLink) {
  string html, data, sVal, sServ, hash, id;
  HmsRegExMatch("^(http.*?//[^/]+)", sLink, sServ);
  html = HmsDownloadURL(sLink, 'Referer: '+mpFilePath+'\r\nOrigin: '+sServ);
  HmsRegExMatch('"hash"\\s*:\\s*"(.*?)"', html, hash);
  HmsRegExMatch(  '"id"\\s*:\\s*"(.*?)"', html, id  );
  data = HmsUtf8Decode(HmsDownloadURL("https://ustore.bz/getContentJson.php?hash="+hash+"&id="+id, 'Referer: '+mpFilePath+'\r\nOrigin: '+sServ));
  HmsRegExMatch('"url"\\s*:\\s*\\[[^\\]]*"(.*?)"', data, sVal, 1, PCRE_SINGLELINE);
  MediaResourceLink = UstoreDecode(sVal);
  HmsRegExMatch('^(.*?\\.mp4):hls:manifest.m3u8', MediaResourceLink, MediaResourceLink);
}

///////////////////////////////////////////////////////////////////////////////
// Декодирование ссылок с ресурса ustore.bz (u-cdn.top)
string UstoreDecode(string data) {
  if (data=="") return "";
  if (data[1]=="=") {
    data = Copy(data, 2, Length(data)-1);
    string s1 = "qwertyuiopxcvQWERTYUIOPXCV123456789";
    string s2 = "ASDFGHJKLZBNMasdfghjklzbnm987654321";
    for (int i=1; i <= Length(s1); i++) {
      data = ReplaceStr(data, s1[i],  "__");
      data = ReplaceStr(data, s2[i], s1[i]);
      data = ReplaceStr(data,  "__", s2[i]);
    }
    data = HmsHttpDecode(HmsBase64Decode(data));
  }
  return data;
}

Не подскажете может есть api у этого балансира или сайт из списком файлов ?