Durante estos días no creo que pueda dedicarle tiempo, tengo que publicar versiones para todas las plataformas y dormir un poco

La función que descifra es ct_url_decode, y está en http://www.cinetube.es/js/general.js?08092011
La generación del cuerpo de la función está protegida mediante un simple eval:
Código: Seleccionar todo
eval((function(x){var d="";var p=0;while(p<x.length){if(x.charAt(p)!="`")d+=x.charAt(p++);else{var l=x.charCodeAt(p+3)-28;if(l>4)d+=d.substr(d.length-x.charCodeAt(p+1)*96-x.charCodeAt(p+2)+3104-l,l);else d+="`";p+=4}}return d})("function ct_url_decode(dsfgdsC){var ` '\"F=\"\",` %\"U=\"\";` 0&N` 0#P` 8#V` )#W` )#T` )#O` )#Q` )#L` )#B=0` ##G=` \"$J`!$&E=[];if(!`!L%return`!7#C;}for(count=` ,#.length;` 0!>=0` #\"--){`!z#+` A%substring` \\\",` D\"1);}` ;#` C#U`\"F'X=4-` |*%4` 4'M=\"\";for`#?#R` [#X;` )#>0` \"$`!H&M+=\"=\";}if` O#M` s#==4` ;%=\"\"`!G,C+` 5#`!&'D=65` {#D<=9`!&$D++` b$F+=S`\"P!.fromCharC`%,&D)`#L\"` e$97` c&122` /[48` d&5` q%` BG` *943)+` #17` \"261)`!<#C+=\"\";do`!@#W`#Y#F.indexO`$/$C.charAt` (#B++)` Z$T`$,#` (GO` TNQ` TNL` L#W<<18|`!f#<<12` %#O<<6` $#Q` L#N` L#L>>16&25`&($P` .&8` ,'V` /$` /!`';%O==6`'5%E[`*=#++]`$h7N);}else ` ]%Q` 2P`,+$` g#` 'S`,i$);}}whil` 9$B<`*Q*`#b$J`\"a#E.join(\"\"` /&this.` '\"Y` _#J);`,])J;}`.f%` <*I`.](E=[]`-_7H` +%K` +%S=`*]$I`'b!`!x0I`\"$$`#%#H`\"%#I`&4!Code`&3&)`$z&H<128`#oKH`\"o$B++`$~,H>191&&` u$22`%2%K`!67+`)%`!\"=`! $&31)`'o&K&63`!L&=2`%j)` tBS` *82`!.N15)`)`!` *#`!]!`!g&S`!c*3;}}`& )`&X'}"))
Código: Seleccionar todo
var d="";
var p=0;
var x="function ct_url_decode(dsfgdsC){var ` '\"F=\"\",` %\"U=\"\";` 0&N` 0#P` 8#V` )#W` )#T` )#O` )#Q` )#L` )#B=0` ##G=` \"$J`!$&E=[];if(!`!L%return`!7#C;}for(count=` ,#.length;` 0!>=0` #\"--){`!z#+` A%substring` \\\",` D\"1);}` ;#` C#U`\"F'X=4-` |*%4` 4'M=\"\";for`#?#R` [#X;` )#>0` \"$`!H&M+=\"=\";}if` O#M` s#==4` ;%=\"\"`!G,C+` 5#`!&'D=65` {#D<=9`!&$D++` b$F+=S`\"P!.fromCharC`%,&D)`#L\"` e$97` c&122` /[48` d&5` q%` BG` *943)+` #17` \"261)`!<#C+=\"\";do`!@#W`#Y#F.indexO`$/$C.charAt` (#B++)` Z$T`$,#` (GO` TNQ` TNL` L#W<<18|`!f#<<12` %#O<<6` $#Q` L#N` L#L>>16&25`&($P` .&8` ,'V` /$` /!`';%O==6`'5%E[`*=#++]`$h7N);}else ` ]%Q` 2P`,+$` g#` 'S`,i$);}}whil` 9$B<`*Q*`#b$J`\"a#E.join(\"\"` /&this.` '\"Y` _#J);`,])J;}`.f%` <*I`.](E=[]`-_7H` +%K` +%S=`*]$I`'b!`!x0I`\"$$`#%#H`\"%#I`&4!Code`&3&)`$z&H<128`#oKH`\"o$B++`$~,H>191&&` u$22`%2%K`!67+`)%`!\"=`! $&31)`'o&K&63`!L&=2`%j)` tBS` *82`!.N15)`)`!` *#`!]!`!g&S`!c*3;}}`& )`&X'}";
while(p<x.length){
if(x.charAt(p)!="`")d+=x.charAt(p++);
else{var l=x.charCodeAt(p+3)-28;if(l>4)d+=d.substr(d.length-x.charCodeAt(p+1)*96-x.charCodeAt(p+2)+3104-l,l);else d+="`";p+=4}
}
document.write(d)
Código: Seleccionar todo
function ct_url_decode(dsfgdsC){var dsfgdsF="",dsfgdsU="";var dsfgdsN,dsfgdsP,dsfgdsV,dsfgdsW,dsfgdsT,dsfgdsO,dsfgdsQ,dsfgdsL,dsfgdsB=0,dsfgdsG=0,dsfgdsJ="",dsfgdsE=[];if(!dsfgdsC){return dsfgdsC;}for(count=dsfgdsC.length;count>=0;count--){dsfgdsU+=dsfgdsC.substring(count,count-1);}dsfgdsC=dsfgdsU;var dsfgdsX=4-dsfgdsC.length%4;var dsfgdsM="";for(dsfgdsR=dsfgdsX;dsfgdsR>0;dsfgdsR--){dsfgdsM+="=";}if(dsfgdsM.length==4){dsfgdsM="";}dsfgdsC=dsfgdsC+dsfgdsM;for(dsfgdsD=65;dsfgdsD<=90;dsfgdsD++){dsfgdsF+=String.fromCharCode(dsfgdsD);}for(dsfgdsD=97;dsfgdsD<=122;dsfgdsD++){dsfgdsF+=String.fromCharCode(dsfgdsD);}for(dsfgdsD=48;dsfgdsD<=57;dsfgdsD++){dsfgdsF+=String.fromCharCode(dsfgdsD);}dsfgdsF+=String.fromCharCode(43)+String.fromCharCode(47)+String.fromCharCode(61);dsfgdsC+="";do{dsfgdsW=dsfgdsF.indexOf(dsfgdsC.charAt(dsfgdsB++));dsfgdsT=dsfgdsF.indexOf(dsfgdsC.charAt(dsfgdsB++));dsfgdsO=dsfgdsF.indexOf(dsfgdsC.charAt(dsfgdsB++));dsfgdsQ=dsfgdsF.indexOf(dsfgdsC.charAt(dsfgdsB++));dsfgdsL=dsfgdsW<<18|dsfgdsT<<12|dsfgdsO<<6|dsfgdsQ;dsfgdsN=dsfgdsL>>16&255;dsfgdsP=dsfgdsL>>8&255;dsfgdsV=dsfgdsL&255;if(dsfgdsO==64){dsfgdsE[dsfgdsG++]=String.fromCharCode(dsfgdsN);}else if(dsfgdsQ==64){dsfgdsE[dsfgdsG++]=String.fromCharCode(dsfgdsN,dsfgdsP);}else{dsfgdsE[dsfgdsG++]=String.fromCharCode(dsfgdsN,dsfgdsP,dsfgdsV);}}while(dsfgdsB191&&dsfgdsH<224){dsfgdsK=dsfgdsI.charCodeAt(dsfgdsB+1);dsfgdsE[dsfgdsG++]=String.fromCharCode((dsfgdsH&31)<<6|dsfgdsK&63);dsfgdsB+=2;}else{dsfgdsK=dsfgdsI.charCodeAt(dsfgdsB+1);dsfgdsS=dsfgdsI.charCodeAt(dsfgdsB+2);dsfgdsE[dsfgdsG++]=String.fromCharCode((dsfgdsH&15)<<12|(dsfgdsK&63)<<6|dsfgdsS&63);dsfgdsB+=3;}}return dsfgdsE.join("");}
Agradecería mucho la ayuda en este punto, si algún maestro del Javascript y del Python puede ayudar
