расшифровать упаковщик javascript Дина Эдвардса с помощью класса php - PullRequest
4 голосов
/ 10 октября 2011

Файл класса http://pastebin.com/apGPiAXd

Я нашел порт php, который кодирует и декодирует упаковщик dean Edwards для javascript. Расположен здесь http://joliclic.free.fr/php/javascript-packer/en/. Меня не интересует аспект кодирования этого класса, но часть декодирования. Я хотел бы взять что-то вроде этого

eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('4.8=9(a){1 b=e f();1 c=4.g("*");5(1 i=0;i<c.6;i++){2(c[i].3.h(" ")>=0){1 d=c[i].3.k(" ");5(1 j=0;j<d.6;j++){2(d[j]==a){b.7(c[i])}}}l 2(c[i].3==a){b.7(c[i])}}m b}',23,23,'|var|if|className|document|for|length|push|getElementsByClassName|function|||||new|Array|getElementsByTagName|indexOf|||split|else|return'.split('|'),0,{}))

и поместите его в переменную и пропустите через класс для декодирования. Я не уверен, как получить JavaScript в классе для декодирования? Так что может быть что-то вроде этого:

require 'class.JavaScriptPacker.php';
$packed_javascript = $_GET["js"];

/* run $packed_javascript through class*/

return $decoded_javascript;

Ответы [ 3 ]

1 голос
/ 18 апреля 2014

Вы можете просто открыть консоль разработчика в своем браузере (Ctrl + J в Chrome, Firebug и т. Д.), Вставить упакованный код JS в консоль и, прежде чем нажать Enter, просто введите замените "eval" на "console.log" или "alert" .

Я знаю, что это сообщение старое, но у меня возникла та же проблема, и я решил опубликовать свое решение.Не за что.

0 голосов
/ 22 июля 2014

Старый вопрос, но здесь просто расшифровка написана в php

<?php

$a = "eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('4.8=9(a){1 b=e f();1 c=4.g("*");5(1 i=0;i<c.6;i++){2(c[i].3.h(" ")>=0){1 d=c[i].3.k(" ");5(1 j=0;j<d.6;j++){2(d[j]==a){b.7(c[i])}}}l 2(c[i].3==a){b.7(c[i])}}m b}',23,23,'|var|if|className|document|for|length|push|getElementsByClassName|function|||||new|Array|getElementsByTagName|indexOf|||split|else|return'.split('|'),0,{}))";

$pos = strpos($a, '}(');
$a = substr($a, $pos);
$pos = strpos($a, ",'");
$b = substr($a, 0, $pos);
$c = substr($a, $pos+2);
$pos = strpos($c, "'.");
$c = substr($c, 0, $pos);

$items = explode('|', $c);

//var_dump($items);

for ($i = count($items); $i >= 0; $i--) {
    $b = str_replace($i, $items[$i], $b);
}

$b = str_replace("\'", "'", $b);

echo ' procedure: ';
echo $b;

?>
0 голосов
/ 10 октября 2011

здесь распакованный java скрипт выше.ты хочешь ??

document.getElementsByClassName=function(a)
    {
    var b=new Array();
    var c=document.getElementsByTagName("*");
    for(var i=0;
    i<c.length;
    i++)
        {
        if(c[i].className.indexOf(" ")>=0)
            {
            var d=c[i].className.split(" ");
            for(var j=0;
            j<d.length;
            j++)
                {
                if(d[j]==a)
                    {
                    b.push(c[i])
                }
            }
        }
        else if(c[i].className==a)
            {
            b.push(c[i])
        }
    }
    return b
}

Ссылка

...