El peor/mejor escenario posible con JS y XSS que se me ocurre


Computer Worm

Sin entrar a muchos detalles (eso lo haré en otro post), tuve la idea de hacer un programa que me permitiera en tiempo real conectarme a la sesión de un usuario en un browser en una página que yo controlo.

Hay muchas buenas razones para hacer algo así, yo lo pensé porque se podría ofrecer un servicio a clientes en tiempo real, algo que estaría muy cotorro (algo como el shared screen de skype).

Pero luego se me ocurrieron escenarios del ‘dark side’: si yo controlo el javascript en tiempo real de un navegador entonces el navegador es mío (de hecho aunque no sea en tiempo real, eso es xss). Y al tener eso las posibilidades son infinitas. Después de pensar un rato, se me ocurrió que hasta podría alargarse el ataque a otros websites (hoy en día gracias a peticiones asíncronas podríamos solicitar contenidos de cualquier web sin perder el control sobre el usuario – obviamente aqui hay una limitante de same origin petition pero hay maneras de saltar eso (server proxy o si el website final es vulnerable a xss directamente se envía al usuario a una url controlada)).

Esto no es nuevo, de hecho ya hay herramientas que permiten esto (BeEF), lo que no me convence es que se usa un server como centro de control y por lo tanto se puede rastrear el ataque. Entonces me puse a pensar que en lugar de conexión server – client podríamos hacer un programa que se conectara client – client, es decir, que una vez que se ejecutara el programa en un client hubiera manera de transmitirlo directamente a otros clients sin pasar por un server. Esto ayudaría mucho al anonimato (el problema es que el programa se perdería si el usuario cierra el browser, pero bueno si controlamos bien el browser y sus interacciones web entonces podemos tener una sesión bastante larga – y con un juego en tiempo real hasta podría existir el programa en ejecución siempre en browsers sin pasar por un lugar de persistencia).

Esto no es nada fácil, me refiero a conectar browser (sesión) con otro browser sesión, pero gracias a que html5 tiene websockets y que flash tiene sockets no es imposible.

Seguiré investigando y avisando si algo encuentro.

Saludos,
Gorka

Un poco de investigación que había hecho:


Seguimiento descargas app store (conversion tracking)


Follow up analytics

Así que bueno, la historia del sueño del desarrollador de apps:

  1. Se desarrolla una app y espera volverse millonario – el tiempo pasa y nada.
  2. Se contratan servicios de marketing y promoción online para llegar a clientes – el tiempo pasa y algo pasó.
  3. Se renuevan fuerzas, se aumenta el gasto en publicidad – el tiempo pasa y los resultados no mejoran.

¿Qué pasó?

Apple creó un “ecosistema” cerrado, es muy bueno ya que da oportunidad a los desarrolladores de enfocar sus esfuerzos hacía un canal de monetización más claro, sin embargo, el “ecosistema” cerrado es cerrado hasta para los desarrolladores: apple no te da herramientas de seguimiento de conversión de metas o campañas online. Entonces, ¿cómo podemos medir la eficiencia de una (o varias) campaña online?

Si tuvieramos esas métricas, podríamos más que especular y seguir gastando dinero a ver si “pega”. Para eso hay una manera, no es trivial, ni sencilla, pero por lo menos existe:

Apple tiene un programa de afiliados para ventas en el appstore. Para darse de alta en el programa se tiene que hacer a través de otra compañía que se llama LinkShare (es una gran compañia que se dedica a programas de afiliación). Linkshare tiene un sistema de métricas con el cual sí se puede dar seguimiento a links específicos (y por ende a campañas específicas / hasta promociones dentro de campañas, etc.). No es un sistema óptimo (y mucho menos fluído, yo llevo ya varias semanas tratando de que apple me acepte desde linkshare como canal afiliado), pero peor sería seguir a la ciega.

Una vez que a través de LinkShare tu canal es aceptado (o canales, cada website es un canal diferente y cada website tiene que ser aceptado por apple) se puede agregar los parámetros url necesarios para seguimiento de descargas. Los datos no son en tiempo real y pueden venir imprecisos (ya que miden todas las compras que se realizan a través de un link de afiliado, no la de una app sola – nunca fallan en contra, es decir, no es que no te van a medir correctamente tus ventas sino que pueden verse reflejados más números que no se entiendan directamente).

Al final pongo dos links de un “tutorial” donde el autor explica como hacer todo esto y también propone usar sistemas como bit.ly (url shorteners) para dar seguimiento (este sí en tiempo real) de los clicks a los links.

En fin, espero ayude a quién esté buscando algo así.

Saludos,
Gorka


Folders invisibles en iOS (iPhone, iPad y iPod Touch)


Folders Invisibles

Entre todos los “tweaks” que se pueden logar al desbloquear los gadgets con iOS se pueden hacer cosas muy divertidas, entre ellas lograr que los folders puedan tener íconos propios – el tweak incluye una librería limitada de íconos pero se pueden agregar los que se quieran, eso queda para otro post.

El tema de este post es porque jugando un poco, se me ocurrió en lugar de poner íconos, ver si se podían hacer invisibles y la verdad es que el resultado me gustó tanto que decidí compartirlo aquí.

Al cambiar la imagen se puede jugar con el fondo negro default:

Cómo lograr esto?

  1. Jailbreak – queda fuera de este post “cómo lograrlo” pero la palabra clave a buscar en Google es absinthe
  2. En Cydia en tweaks buscar e instalar FolderIcons
  3. Juntar las apps en folders, y luego cada folder desplegará una opción de “editar”
  4. En editar se puede seleccionar quitar el ícono (también vale la pena quitar la sombra y las notificaciones)
  5. Listo – el cambio de wallpaper va por gusto de cada uno

Así que bueno, ahí lo tienen, cualquier duda por favor, ahí están los comentarios.

Saludos,
Gorka


Límites y excepciones


Speed limit infinity

Cuando la situación llega al limite se dá la excepción


Desarrollo User Interface Components para mobile


UX Discussion

Como parte del desarollo de apps en el que he estado participando (mobile para iOS y Android), tuve que decidir crear/recrear elementos típicos de interacción con el usuario (UI / UX elements).

Aquí la lista de los que ya he desarrollado:

De las cosas mas divertidas ha sido que he aprendido mucho a usar herencia y polimorfismo para reusar código y así hacer las cosas mas fáciles pero de mayor complejidad. Con esto logre crear los siguientes:

Lo que me gustó mucho, es que aprendí a hacer estos componentes de una manera que se pueden heredar y sobreescribir, esto es MUY chido porque así puedo cambiar cosas específicas de manera de desplegar (no tanto de funcionalidad ya que esa se deja igual) y así puedo pintar/dibujar los diferentes elementos de los componentes como cada proyecto lo necesite – sin tener que configurar directamente en cada elemento.

Mi idea es hacer un libro app para iPad donde pueda explicar todos estos elementos (y más, desde como preparar un ambiente de desarrollo y cómo publicar) y el caso de uso de la app sería el mismo libro (es decir, en cada sección del libro usar los mismos elementos a manera de tutorial).

Probablemente buscaré meter el proyecto en idea.me para ver si así logro pagar el desarrollo, ya les pediré ayuda entonces.

Saludos,
Gorka


Motivación


Motivación

[..] invent a tool that will unleash choices [..]
Kevin Kelly – What technology wants

Aunque fuera de contexto no sé si ayuda tener la cita, en fin, me gusta la idea de crear (con las herramientas tecnológicas con las que trabajo) nuevas herramientas/formas de usar/entender el mundo.

Es una nueva tendencia que voy a masticar mucho para incluir en todos mis futuros proyectos.

En resumen, que lo que yo pueda crear, ayude a otras personas a visionar nuevas cosas para seguir creando.

Saludos,
Gorka


Programas de Afiliación


Affiliate Marketing

No es nuevo en el mundo, pero es una manera actual muy eficiente de monetizar tráfico web.

Primero dejenme explicar el esquema:

  1. Juan Manzanas tiene una tienda en línea – digamos que vende apps – tiene el sistema completamente desarrollado (le costó una fortuna pero quedó bien hecho) puede vender en todos los países que se le de la gana (bueno, casi..).
  2. Pedro Páginas tiene un website donde escribe acerca de turismo – específicamente turismo en Mendoza, Argentina (por decir cualquier lugar). Pedro no ha sabido cómo ganar dinero con su tráfico web, y buscando, encuentra el programa de afiliación de Manzanas.
  3. Pedro se da de alta en el programa. Busca entre las listas de apps de Manzanas apps que tengan que ver con Mendoza – no hay mucho pero encuentra una que se autonombra “guía de Mendoza” (que se ve MUY buena). Decide, poner un link desde su página hacía la tienda de apps de Manzanas.
  4. Cuando alguien entra a la página de Pedro y hace click en el link hacía la tienda para ver la info de la app y decide comprarla, el sistema de Manzanas registra esa venta como una venta de afiliado – porque realmente el comprador lo trajo Pedro. Pedro va a recibir una comisión por esa venta.

Así hay miles de escenarios posibles, desde renta de autos, reservas de hoteles, compra de cualquier cosa, hasta recomendaciones de servicios. Lo genial es que a través de los sistemas en Internet se puede automatizar y dar seguimiento a todo el proceso. Así Pedro que ha trabajado fuertemente para generar un público captivo a su web puede empezar a monetizar – claro, si es que sus usuarios se interesan por las apps que Pedro puede anunciar.

Hay que entender que hay fallas en todo este proceso, el mejor ejemplo es: que pasa si la persona no compra directamente cuando hace click en la tienda virtual sino que guarda la dirección y luego regresa y compra? entonces, el afiliado habría perdido la venta… pero lo que decidieron hacer es crear ventanas de 72 horas para así mantener la referencia – esas ventanas se pueden aprovechar de la siguiente manera: al yo mandar a alguien a la tienda virtual, no importa si compra lo que yo refería originalmente sino sólo si compra algo, es decir, si termina comprando otra cosa también hay comisión de afiliado sobre esa venta. Entonces, a lo mejor lo que a mí me interesa es sólo que mi referencia de afiliado se mantenga con los usuarios – sin importar lo que ofrezco ya que cualquier venta me genera comisión – esto se puede explotar de mala manera.

En fin, cosas buenas y cosas malas, nosotros estamos por hacer pruebas con varios sistemas de afiliación, si a alguien le interesa proximamente pondré un post de resultados o experiencias con tales programas.

Saludos,
Gorka


Pagination