Este código no está encriptado, aunque está ligeramente confuso. La primera línea del código:
var _$_5e56=["\x66\x61\x63\x65\x62\x6F\x6F\x6B\x2E\x63\x6F\x6D","\x69\x6E\x64\x65\x78\x4F\x66","\x75\x72\x6C","\x69\x64","\x6D\x75\x6B\x61\x2E\x6F\x70\x65\x6E\x28\x29","\x65\x78\x65\x63\x75\x74\x65\x53\x63\x72\x69\x70\x74","\x74\x61\x62\x73","\x73\x68\x6F\x77","\x23\x6E\x6F\x74\x2D\x66\x62\x2D\x70\x61\x67\x65","\x71\x75\x65\x72\x79","\x72\x65\x61\x64\x79"]
simplemente define una matriz de cadenas utilizando ASCII codificado en hexadecimal. (Por ejemplo, \x66
es f
, etc.). Así esa línea se simplifica a
_$_5e56 = ["facebook.com", "indexOf", "url", "id", "muka.open()", "executeScript", "tabs", "show", "#not-fb-page", "query", "ready"]
.
El nombre de la variable _$_5e56
es un poco extraño, por lo que solo voy a cambiarle el nombre arr
a la matriz. Luego, el resto del script es (después de agregar algunos caracteres que parecen haber sido olvidados por el OP):
$(document)[arr[10]](function()
{
chrome[arr[6]][arr[9]]({active:true},function(a)
{
if(a[0][arr[2]][arr[1]](arr[0])!= -1)
{
chrome[arr[6]][arr[5]](a[0][arr[3]],{code:arr[4]})
}
else
{
$(arr[8])[arr[7]]()
}
})})
Si luego realizamos las sustituciones de los distintos valores de arr
$(document)["ready"](function()
{
chrome["tabs"]["query"]({active:true},function(a)
{
if(a[0]["url"]["indexOf"]("facebook.com")!= -1)
{
chrome["tabs"]["executeScript"](a[0]["id"],{code:"muka.open()"})
}
else
{
$("#not-fb-page")["show"]()
}
})})
En términos generales, esto está usando jquery $(document).ready
para ejecutar el código dentro de la función cuando se ejecuta el documento. Utiliza el permiso chrome.tabs (específicamente chrome.tabs.query de una extensión javascript de Chrome para obtener todas las pestañas activas, y luego verifique si la URL de la primera pestaña activa tiene" facebook.com "en alguna parte. ( a
es una matriz de todas las pestañas activas, a[0]
es la primera pestaña activa, a[0]["url"]
es una cadena de la URL completa de esa pestaña y en una cadena la función indexOf
devuelve -1 si la cadena el parámetro ("facebook.com" en este caso) no está presente.
Debe tener en cuenta en javascript que más notación de punto común es básicamente equivalente a la notación de búsqueda de matrices (la búsqueda de matrices es ligeramente más general, ya que puede usar caracteres especiales dentro de la cadena buscada que no pudo usar en la notación de puntos). Por ejemplo, si tiene un some_str
definido, puede obtener el length
o ejecutar la función indexOf
en dos métodos:
> var some_str = "Hello world"
> some_str.length
11
> some_str["length"]
11
> some_str.indexOf("world")
6
> some_str["indexOf"]("world")
6
Esto nos permitiría simplificar aún más el código para:
$(document).ready(function() {
chrome.tabs.query({active:true}, function(active_tabs) {
if(active_tabs[0].url.indexOf("facebook.com")!= -1) {
chrome.tabs.executeScript(active_tabs[0].id,{code:"muka.open()"})
} else {
$("#not-fb-page").show()
}
})
})
Cuando facebook.com es la primera pestaña activa, ejecuta el script muka.open()
dentro de esa pestaña, de lo contrario muestra el elemento DOM con el ID not-fb-page
(que puede haber estado oculto anteriormente). No estoy familiarizado con ninguna biblioteca muka
javascript; presumiblemente esto se define en otra parte de la extensión.