从控制台运行用户脚本/

时间:2019-01-24 06:43:04

标签: javascript encryption userscripts

从以下位置运行用户脚本时,我尝试从URL http://kissasian.sh/Drama/My-Mister/Episode-1?id=36170(特定页面)中提取链接  http://kissasian.sh/Drama/My-Mister(通用页)。但是,该网站会加密我尝试访问的链接。

运行以下代码

var url = "http://kissasian.sh/Drama/My-Mister/Episode-1?id=36170";
var msg = $.ajax({type: "GET", url: url, async: false}).responseText;
console.log(msg);

$kissenc.decrypt()函数中的responseText中提供加密的视频链接。

在特定页面上从控制台运行此功能时,将返回解密的链接;但是,此函数未在运行脚本的常规页面上定义,如以下代码所示。

var url = "http://kissasian.sh/Drama/My-Mister/Episode-1?id=36170";
var decrypted = "";

var msg = "ui0uI3/FNJEDeMXFKFzBVr30Yc6w34jKMp2NWjnnv355ptM/1h5bostMEAZVqsyi";

$.support.cors = true;
$.ajax({type: "GET", url:url, async: false, crossDomain: true}).done(function(){decrypted = $kissenc.decrypt(msg)});

alert(decrypted);

我不熟悉CORS,并且不确定在尝试运行该功能时是否会造成问题。

同样,我无法通过在常规页面或特定页面上合并来自kissasian.sh域的脚本来运行$kissenc.decrypt()函数:

var rootUrl = "http://kissasian.sh/Scripts/";
$.ajaxSetup({async:false});

var jsS = [
    "common.js",
    "aes.js",
    "sha256.min.js",
    "subo.min.js?v=3.19"
];
console.log('Loading scripts ...');
for (var i=0; i < jsS.length; i++){
    console.log(jsS[i]);
   $.getScript(rootUrl + jsS[i]);
}

var msg = "ui0uI3/FNJEDeMXFKFzBVr30Yc6w34jKMp2NWjnnv355ptM/1h5bostMEAZVqsyi";
var decrypted = $kissenc.decrypt(msg);
alert(decrypted);

这两种方法都依赖于解密功能的成功执行。以下代码在不使用$kissenc.decrypt()的情况下在更特定的页面上执行:

 $.ajax({
        url: "http://kissasian.sh/Drama/My-Mister/Episode-1?id=36170", 
        success: function(result) {
            var msg = document.getElementById('containerRoot').outerHTML;
            console.log(msg);
        },
        crossDomain: true,
        async:   false, 
        script:  true
    });

但是,当我尝试通过从常规页面检索元素来查找链接时,代码再次无法正常运行。我希望document.getElementById从特定页面提供正确的containerRoot,但是它为从其执行的常规页面提供了一个。

在我需要工作的三种不同情况下,我不确定是什么导致了问题。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

有点复杂。 $kissenc对象在subo.min脚本中定义,该脚本被混淆了,这取决于已经加载的其他四个脚本,其中包括 {{1} }。像执行操作一样,将这些脚本放入数组中,然后jquery.allofthelights-min.js

此后,eval被定义,因此可以与之交互。但是还有另一个问题:其window.$kissenc方法的结果不仅取决于传入的参数,而且取决于先前对decrypt 调用的属性。 $kissenc 取决于运行$kissenc脚本之前已经执行过的剧集页面顶部的某个内联脚本标签,否则subo将返回空字符串。因此,在加载外部脚本之前先decrypt先插入eval标签。

然后,页面上有一堆 other 混淆的嵌入式脚本标签。您需要先<script>每个,直到到达调用eval的那个为止-然后,您可以调用decrypt 自己并获取输出您正在寻找。

decrypt