Usar Javascript desde Python

Python

Python

Desde la web de Caja GRANADA se pueden enviar 30 SMS al mes si se tiene acceso a la caja electrónica.

Cuando estoy en casa y envío un SMS desde el iPhone usando la conexión wifi es realmente incómodo. La web de Caja GRANADA es… increíble. Y lo digo en el más irónico de los sentidos, o no. Es frame sobre frame, tabla sobre tabla, una encrucijada de código que al iPhone se le atraganta un poco.

Se puede llegar a usar pero para colmo tiene un contador de caracteres mientras se escribe el mensaje para el SMS que quita el foco al campo de entrada. Como consecuencia el teclado virtual se esconde con cada letra y no hay manera de escribir unas palabras sin desesperarse.

Por otro lado hay algo en esta web que hacen bien en mi opinión, y es cuidar la seguridad. Sin entrar en detalles diré que la clave que escribes para entrar no es enviada, sino que se envía el resultado de un cifrado triple des de la misma. Hace unos meses usaban tan solo des y gracias a una librería en python conseguí el mismo resultado. Esta vez no sé por qué por más parámetros que probé no conseguía el mismo resultado así que tenía básicamente dos opciones:

Implementar el código javascript de caja granada en python

Me daba mucha pereza y quise buscar algo más antes de ponerme manos a la obra.

Ejecutar javascript desde python

Aquí es donde entra en juego python-spidermonkey. La instalación consiste en seguir los pasos indicados en la web para ello, bajando la versión de SVN. Su uso es muy sencillo de modo que esto es básicamente lo que hice:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from spidermonkey import Runtime
def js_des(clave, pin):
    runtime = Runtime()
    context = runtime.new_context()
 
    context.eval_script("var mod3 = function() {}")
    context.eval_script("""
        mod3.prototype.des = function(hexKey, message, encrypt, mode, iv, padding) {
            // código de la función pegado literalmente del js de cajagranada
            // ...
    """)
    context.eval_script("""
        mod3.prototype.des_createKeys = function(key) {
            // blah blah blah...
    """)
    # ...
    return context.eval_script("m = new mod3(); m.des('%s', '%s');" % (clave, pin))

Y finalmente para usarlo tan solo habrá que hacer algo similar a lo siguiente:

1
2
3
4
import md3
 
# [...]
pin_cifrado = mod3.js_des(clave, credenciales.PIN)

Y de este modo la variable pin_cifrado tomará el valor devuelto por la función en javascript.

Etiquetas: ,

5 comentarios en “Usar Javascript desde Python”

  • iagotb dijo:

    Maestro Juanmar que muro te parará!!!! XD Menos mal que solo te dejan mandar sms y no pagar recibos o cosas peores, que montarías entonces ….

    Un saludo y feliz año

  • nauj27 dijo:

    Hay una segunda y tercera parte. La segunda parte es la web local en django para enviar SMSs desde el iPhone. La tercera es que también he aprovechado para que el SAI me envíe una notificación cuando se va la luz en casa :)

    Del tema del SAI quizá hable en otra ocasión por aquí.

    Feliz año!

  • enlavin dijo:

    Coño, mánda el sms, pero a Endesa :-P

  • Theogonist dijo:

    Hola,

    Una duda. ¿Sabes si es posible con python ejecutar código javascript de una página web a la que llegas gracias a la biblioteca «mechanize» y cómo ver la respuesat de ejecutar ese código?

    Muchas gracias.

  • nauj27 dijo:

    No veo por qué no, coje el javascript y úsalo desde python tal y como describe el artículo :)