Página 1 de 1

js unpacker

Publicado: 25 Feb 2016, 17:03
por robalo
El resultado de juguetear con jsunpack+viedomega+powvideo+flashx

Código: Seleccionar todo

# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# Js unpack: simple library for use in pelisalacarta
# @robalo
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
# ------------------------------------------------------------

import re

def unPack(packed):

    pattern = "}\('(.*)', *(\d+), *\d+, *'(.*)'\.split\('\|'\)"
    a = dict( (n, m) for n, m in enumerate( re.search(pattern, packed, re.DOTALL).groups() ) )

    pattern = r"(\b\w+\b)"
    b = re.compile(pattern, re.DOTALL).findall(a[0])
    ss = re.sub(pattern, r'<#\1#>',a[0])

    c = dict( (n, m) for n, m in enumerate( a[2].split('|') ) )

    if int(a[1]) <= 62:
        d = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    else:
        d = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
    e = dict( (m, n) for n, m in enumerate( d[:int(a[1])] ) )

    for n, m in enumerate( b ):
        f = e[m[0]] * int(a[1]) if len(m) == 2 else 0
        g = e[m[1]] if len(m) == 2 else e[m]
        kk = c[f + g] if c[f + g] != "" else m
        ss = ss.replace("<#" + m + "#>", kk)

    return ss
:lol: :lol: :lol: :lol:

EDITO: Editada la línea 'f = e[m[0]] * base if len(m) == 2 else 0' para eliminar 'base' por la variable que la recoje. Se quedo sin cambiar en el copy/paste.

Re: js unpacker

Publicado: 26 Feb 2016, 20:37
por jesus
¿Eso sustituye al código que tenemos ahora?

Mmmm

Me voy a llorar a un rincón, y yo que nunca he entendido ese código y tu llegas y lo optimizas ja ja ja

Re: js unpacker

Publicado: 26 Feb 2016, 21:50
por robalo
:lol: :lol: :lol: :lol:
Es ponerte a jugar y en una de esas ves el el algoritmo casi sin darte cuenta :lol: :lol: :lol:

En teoría sí lo sustituye

De momento todo lo que he podido probar se lo traga sin problemas

Si tienes empaquetados perdio en alguna carpeta me lo pasas y los pruebo

Para comparar los desempaquetados uso un html tambien sencillo que te lo pego por si te aburres, que me estraña, y te pones a probar como funciona la función

Código: Seleccionar todo

<head>
	<meta charset="UTF-8">
	<title>Basic jsunpack</title>
</head>
<body style="font-size: 8pt; font-family: courier new;">
	<pre><hr size='1' noshade />	<label for="jspack">Basic jsunpack<hr size='1' noshade />	jspack:</label>
	<textarea id="jspack" value="" cols="184" rows="18" style="font-size: 8pt; font-family: courier new;"></textarea>
	<hr size='1' noshade />	jsunpack:</label>
	<textarea id="jsunpack" value="" cols="184" rows="8" style="font-size: 8pt; font-family: courier new;"></textarea>
	<hr size='1' noshade />	<input id="jsunpackSubmit" type="submit" value="unpack" onclick="jsunpack()"></pre>

	<script type="text/javascript">

		function jsunpack(){
			var text_jspack = document.getElementById("jspack");
			var text_jsunpack = document.getElementById("jsunpack");
			var e = {eval:function(c){text_jsunpack.value=c;}};
			eval( "with(e) {" + text_jspack.value.replace(/\n/g,'').replace(/\t/g,'') + "}" );
		}

	</script>

</body>
</html>

Re: js unpacker

Publicado: 26 Feb 2016, 22:17
por jesus
Si es por probar, añádelo como opción 1 y si no encuentra nada, deja que lo busque el unpacker actual como opción 2 :)

Es cierto que ví que tenían un par de alternativas, pero al final son todos similares en cuanto al algoritmo.

Re: js unpacker

Publicado: 27 Feb 2016, 00:17
por robalo
Pues sí, no se me había ocurrido. Lo voy a poner en todos los canales y conectores de la forma que dices en la rasp y en el pc e iré echando un ojo al log de rasp de lo que vea la jefa y en mis momentos de cafés le doy un buen repaso a los canales y conectores y a ver si explota :)

Re: js unpacker

Publicado: 27 Feb 2016, 00:44
por jesus
Poner a la jefa a probar... eso te convierte en un maestro de nivel 5 por lo menos ja ja ja

Re: js unpacker

Publicado: 27 Feb 2016, 00:56
por robalo
:lol: :lol: :lol: Es el precio de decir desde el salón "Niñoooo streamcloud!!, Niñooo seriesblanco!!... y ala, el niño a dejar de hacer lo que estba haciendo y a buscarle solución o darle opciones para tenerla contenta, somos unos pringaos :lol:

Re: js unpacker

Publicado: 27 Feb 2016, 16:27
por robalo
Bueno he estado metiendo empaquetados del código fuente de paginas web completas con contenidos js, css y html con algo más de 2.500 palabras de reemplazo en base <= 62 y se las traga muy bien y bastante rápido al menos en el pc por lo que en situaciones normales irá como un tiro en cualquier equipo y no fallará. Las bases que he probado han sido desde 2 a 62 y con cualquier longitud de palabras de reemplazo mayor a cero y menor a base*base-1.

Lo que no he visto son empaquetados en base 95 para probar pero creo que funcionará igualmente. Para que no funcionara tendría que ser empaquetados con logitudes de palabras de reemplazo superiores a base*base-1 o lo que es lo mismo, números en base x no superiores a dos caracteres que pertenezcan a su base. Lás logitudes máximas de reemplazos para este algoritmo es de 3.843 para la base 62 y de 9.024 para la base 95. No creo que nos encontremos con casos que superen esas logitudes de palabras de reemplazo :)

Re: js unpacker

Publicado: 28 Feb 2016, 10:22
por jesus
Mola :)