{"id":534,"date":"2009-01-02T22:29:36","date_gmt":"2009-01-02T20:29:36","guid":{"rendered":"http:\/\/192.168.1.2:8080\/?p=534"},"modified":"2009-01-02T22:29:36","modified_gmt":"2009-01-02T20:29:36","slug":"usar-javascript-desde-python","status":"publish","type":"post","link":"https:\/\/nauj27.com\/blog\/?p=534","title":{"rendered":"Usar Javascript desde Python"},"content":{"rendered":"<div id=\"attachment_536\" style=\"width: 251px\" class=\"wp-caption alignleft\"><img aria-describedby=\"caption-attachment-536\" loading=\"lazy\" class=\"size-full wp-image-536\" title=\"python-logo\" src=\"http:\/\/192.168.1.2:8080\/wp-content\/uploads\/2009\/01\/python-logo.png\" alt=\"Python\" width=\"241\" height=\"101\" \/><p id=\"caption-attachment-536\" class=\"wp-caption-text\">Python<\/p><\/div>\n<p style=\"text-align: justify;\">Desde la web de <a href=\"httphttp:\/\/caja.caja-granada.es\/\">Caja GRANADA<\/a> se pueden enviar 30 SMS al mes si se tiene acceso a la <a href=\"https:\/\/www.caja-granada.es\/2031\/01LOGIN1.htm\">caja electr\u00f3nica<\/a>.<\/p>\n<p style=\"text-align: justify;\">Cuando estoy en casa y env\u00edo un SMS desde el iPhone usando la conexi\u00f3n wifi es <em>realmente inc\u00f3modo<\/em>. La web de Caja GRANADA es&#8230; incre\u00edble. Y lo digo en el m\u00e1s ir\u00f3nico de los sentidos, o no. Es frame sobre frame, tabla sobre tabla, una encrucijada de c\u00f3digo que al iPhone se le atraganta un poco.<\/p>\n<p style=\"text-align: justify;\">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.<\/p>\n<p style=\"text-align: justify;\">Por otro lado hay algo en esta web que hacen bien en mi opini\u00f3n, y es cuidar la seguridad. Sin entrar en detalles dir\u00e9 que la clave que escribes para entrar no es enviada, sino que se env\u00eda el resultado de un cifrado <a href=\"http:\/\/es.wikipedia.org\/wiki\/Triple_DES\">triple des<\/a> de la misma. Hace unos meses usaban tan solo <a href=\"http:\/\/es.wikipedia.org\/wiki\/Data_Encryption_Standard\">des<\/a> y gracias a una librer\u00eda en python consegu\u00ed el mismo resultado. Esta vez no s\u00e9 por qu\u00e9 por m\u00e1s par\u00e1metros que prob\u00e9 no consegu\u00eda el mismo resultado as\u00ed que ten\u00eda b\u00e1sicamente dos opciones:<\/p>\n<h2 style=\"text-align: justify;\"><strong>Implementar el c\u00f3digo javascript de caja granada en python<\/strong><\/h2>\n<p style=\"text-align: justify;\">Me daba mucha pereza y quise buscar algo m\u00e1s antes de ponerme manos a la obra.<\/p>\n<h2 style=\"text-align: justify;\">Ejecutar javascript desde python<\/h2>\n<p>Aqu\u00ed es donde entra en juego <a href=\"http:\/\/code.google.com\/p\/python-spidermonkey\/\">python-spidermonkey<\/a>. La instalaci\u00f3n consiste en seguir los pasos indicados en la web para ello, bajando la versi\u00f3n de SVN. Su uso es muy sencillo de modo que esto es b\u00e1sicamente lo que hice:<\/p>\n<pre lang=\"python\"  line=\"1\">from spidermonkey import Runtime\r\ndef js_des(clave, pin):\r\n    runtime = Runtime()\r\n    context = runtime.new_context()\r\n\r\n    context.eval_script(\"var mod3 = function() {}\")\r\n    context.eval_script(\"\"\"\r\n        mod3.prototype.des = function(hexKey, message, encrypt, mode, iv, padding) {\r\n            \/\/ c\u00f3digo de la funci\u00f3n pegado literalmente del js de cajagranada\r\n            \/\/ ...\r\n    \"\"\")\r\n    context.eval_script(\"\"\"\r\n        mod3.prototype.des_createKeys = function(key) {\r\n            \/\/ blah blah blah...\r\n    \"\"\")\r\n    # ...\r\n    return context.eval_script(\"m = new mod3(); m.des('%s', '%s');\" % (clave, pin))<\/pre>\n<p style=\"text-align: justify;\">Y finalmente para usarlo tan solo habr\u00e1 que hacer algo similar a lo siguiente:<\/p>\n<pre lang=\"python\" line=\"1\">import md3\r\n\r\n# [...]\r\npin_cifrado = mod3.js_des(clave, credenciales.PIN)<\/pre>\n<p>Y de este modo la variable pin_cifrado tomar\u00e1 el valor devuelto por la funci\u00f3n en javascript.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desde la web de Caja GRANADA se pueden enviar 30 SMS al mes si se tiene acceso a la caja electr\u00f3nica. Cuando estoy en casa y env\u00edo un SMS desde el iPhone usando la conexi\u00f3n wifi es realmente inc\u00f3modo. La web de Caja GRANADA es&#8230; incre\u00edble. Y lo digo en el m\u00e1s ir\u00f3nico de los [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[34,4,5],"tags":[203,197],"_links":{"self":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/534"}],"collection":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=534"}],"version-history":[{"count":6,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/534\/revisions"}],"predecessor-version":[{"id":541,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/534\/revisions\/541"}],"wp:attachment":[{"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nauj27.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}