Skip to content

Instantly share code, notes, and snippets.

@steffengy
Created October 24, 2015 23:08
Show Gist options
  • Save steffengy/d0cb0afc7378f19848f6 to your computer and use it in GitHub Desktop.
Save steffengy/d0cb0afc7378f19848f6 to your computer and use it in GitHub Desktop.
/* port of https://github.com/beautify-web/js-beautify/blob/master/python/jsbeautifier/unpackers/packer.py (MIT) */
var unpacker = {
unpack: function (str) {
var params = unpacker.filterargs(str);
var payload = params[0], symtab = params[1], radix = params[2], count = params[3];
if (count != symtab.length) {
throw new Error("Malformed p.a.c.k.e.r. symtab. (" + count + " != " + symtab.length + ")");
}
var unbase = unpacker.unbaser(radix);
var lookup = (word) => symtab[unbase(word)] || word;
source = payload.replace(/\b\w+\b/g, lookup);
console.log(source);
},
filterargs: function(str) {
/* [\s\S] insteadof . because javascript has no dotall modifier */
var juicers = [
/}\('([\s\S]*)', *(\d+), *(\d+), *'([\s\S]*)'\.split\('\|'\), *(\d+), *([\s\S]*)\)\)/,
/}\('([\s\S]*)', *(\d+), *(\d+), *'([\s\S]*)'\.split\('\|'\)/
];
for (var c = 0; c < juicers.length; ++c) {
var m, juicer = juicers[c];
if (m = juicer.exec(str)) {
return [m[1], m[4].split('|'), parseInt(m[2]), parseInt(m[3])];
}
}
throw new Error("Could not make sense of p.a.c.k.e.r data (unexpected code structure)");
},
alphabet: {
62: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
95: '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
},
unbaser: function(base)
{
if (2 <= base <= 36) return (str) => parseInt(str, base);
var dictionary = {};
var alphabet = unpacker.alphabet[base];
if (!alphabet) throw new Error("Unsupported encoding");
for (var c = 0; c < alphabet.length; ++alphabet) {
dictionary[alphabet[c]] = c;
}
return (str) => str.split("").reverse().reduce((cipher, ind) => Math.pow(base, ind) * dictionary[cipher]);
}
};
@naviocean
Copy link

naviocean commented May 11, 2017

It did not work with this script:
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[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}('0(\'0\').k({j:\'i\',g:\'h%\',l:\'m\',q:p,o:\'n:9\',f:\'/d-5/4/3/1/2.6\',e:\'7\',c:[{b:8("a/s++F/L+K+J+H+I/M+N+S+R/Q+O+P/G/x/w/v/t+u+y/z/E"),D:"C/A",B:"r"}]});',55,55,'jwplayer|images|player|detube|themes|content|jpg|five|javclc||U2FsdGVkX19w|file|sources|wp|skin|image|width|100|html5|primary|setup|height|400px|16|aspectratio|false|autostart|360p|bA82RuulJ4634MjxBwYz00Sy2eXdduVURoptI8htDQW7WKR|nDrzySA9IjTx4rkX9ncjflWwJMHwg6R82Xe9WYCuleW0Wz|D5Toyu3FbvJyhwzJ8SmVc0Y8gXsYaaFqhKUO1P4Z3VURZjhpTD61ch77aD34XsGF3iBvX3J42OWFOMlihfeDKRPlBQ4vRM|BL3Vfy|n6mmsDrwEKh|PZGpq09Ri8wOMGKkaX1cNjBSaoKN1v8jhppHJE2GQBu6H8mMCaIBOBpcmoe0LmHtl1YcKgorjzZkVz54pC3qPuO3iWWTtJ|Sqh65i3FyAnsVGQS6c|4JZZCuwyOdnx520I|mp4|label|video|type|bM|ef1FRT|0R4B6sUBfjZ9QB0iexp1c|OA7vU9P4oJJdXON|rM6|WDfx1JsY4YtINOZJAr5KA7JbDmFK5pinrfGTPioiW0b9T8V|6QcZQg8tqPlQXGLIbpmjq9NLuBe|iuNdoGufB2zIIyUO5z4PGrJ0EKD8C8b73IKTw|X2rkI4NGQneGHPHtwXsko8GQsdHOG76v25C9L4NYyR8W7xt7M|P3C4wKo2PMz64GW5R8lh|PzWNob88DpWK33klNWMReIf|WcbEYjEjvXscN4qxZAjiC3Z|8pQ6EhZOrfMTCysNd3w|9R24ZwEwNM2SZxRi0u5QQmUOB1m0kdVwS|02RKYGxOJcI'.split('|'),0,{}))
Output expected:
jwplayer('jwplayer').setup({ primary: 'html5', width: '100%', height: '400px', autostart: false, aspectratio: '16:9', skin: 'five', sources: [{ file: decode("U2FsdGVkX19w/bA82RuulJ4634MjxBwYz00Sy2eXdduVURoptI8htDQW7WKR++ef1FRT/iuNdoGufB2zIIyUO5z4PGrJ0EKD8C8b73IKTw+6QcZQg8tqPlQXGLIbpmjq9NLuBe+WDfx1JsY4YtINOZJAr5KA7JbDmFK5pinrfGTPioiW0b9T8V+OA7vU9P4oJJdXON+rM6/X2rkI4NGQneGHPHtwXsko8GQsdHOG76v25C9L4NYyR8W7xt7M+P3C4wKo2PMz64GW5R8lh+02RKYGxOJcI+9R24ZwEwNM2SZxRi0u5QQmUOB1m0kdVwS/8pQ6EhZOrfMTCysNd3w+PzWNob88DpWK33klNWMReIf+WcbEYjEjvXscN4qxZAjiC3Z/0R4B6sUBfjZ9QB0iexp1c/PZGpq09Ri8wOMGKkaX1cNjBSaoKN1v8jhppHJE2GQBu6H8mMCaIBOBpcmoe0LmHtl1YcKgorjzZkVz54pC3qPuO3iWWTtJ/n6mmsDrwEKh/BL3Vfy/nDrzySA9IjTx4rkX9ncjflWwJMHwg6R82Xe9WYCuleW0Wz+D5Toyu3FbvJyhwzJ8SmVc0Y8gXsYaaFqhKUO1P4Z3VURZjhpTD61ch77aD34XsGF3iBvX3J42OWFOMlihfeDKRPlBQ4vRM+Sqh65i3FyAnsVGQS6c/4JZZCuwyOdnx520I/bM"), type: "video/mp4", label: "360p" } ] });
Hope you fix it soon.
Thanks

@swan46
Copy link

swan46 commented Apr 25, 2018

The problem is here in your script: ,55,55. It can not handle radix 55.
I have a fix for this here: https://github.com/swan46/js-beautify

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment