Ideas sobre el valor de Internet


De entrada para saborear este post es OBLIGATORIO leer: http://thepiratebay.org/blog/192

Luego, pasen por este: http://www.wired.com/threatlevel/2011/05/biggest-bittorrent-case/ (no hace falta lectura completa, sólo reconocer que están muy mal haciendo eso).

Así que de entrada, yo lo que quiero defender es a Internet como un medio anárquico basado en el libre intercambio de información (es a mi entender la máxima expresión de la sociabilidad humana – el masivismo del SER social).

Muchas veces ese anarquismo recae en vicios (seguro), pero también tiene sus virtudes y sus logros y su manera de unir personas con metas en común (metas que se cumplen que de otra manera nunca se hubieran realizado). Es gracias a este mismo medio que se puede separar a aquellas personas cuya personalidad/alma los lleva a buscar información hedonistica sin trasfondo de los que quieren aprender para lograr algo (mejorar o cambiar o por lo menos sólo aprender) y luego compartirlo de la misma manera (porque sí somos seres sociales aunque escuche críticas continuamente de que cada vez parecemos menos sociales porque nos encerramos en cuartos e interactuamos desde una cajita con teclado – este es otro paradigma a reinventar…).

Ya he criticado antes los modelos de negocio retrógrados (y es claro que demandar a personas por intercambio de información “con derechos de autor” es un vicio – una grosería – por falta de imaginación, si hubieran inventado una manera de obtener dinero por todas estas personas que descargan peliculas e intercambian información ya estaríamos hasta el tope de espectaculares y anuncios mediáticos promoviéndolo) y lo volveré a hacer siempre que me tope con historias como los links de arriba.

¿No les parece una idea del siglo pasado limitar lo que podemos intercambiar/sociabilizar sólo porque hay dinero de por medio?

Creo que es nuestro deber recrear los modelos con los cuales podemos llegar al futuro. Entre esos modelos es necesario recrear el modelo de “conexión a Internet”, no podemos seguir creyendo que sea un servicio ofrecido por algunos (y menos por algunos que son capaces de liberar información que debería ser anónima ante presión de grupos “adinerados”) y trataré de hacer lluvia de ideas con mis amigos/conocidos/extraños para ver qué se nos ocurre. Lo ideal sería lograr un libre acceso real y de calidad a Internet, todo para romper con esos esquemas antiguos de control absurdo que proponen que uno puede aprender español sólo para decir lo que los diccionarios “oficiales” permiten.

Y pasa y seguirá pasando, pero es nuestro deber romper esquemas y poner en la mesa las “nuevas reglas” y ojo, todo esto va a ser difícil pero eso no significa que no lo vayamos a hacer correctamente, al contrario, no considero estar del “lado” equivocado sino que son esos “sistemas de control” los que tienen que perderse hasta que sean olvidados.

Saludos,
Gorka


¿Qué hacer cuando un cliente tiene 'dificultades' para pagar?


Dificultades

Estoy seguro que todas aquellas personas que trabajan de manera “freelance” o “por proyecto” en algún momento han tenido esta situación:

El cliente promete un pago en una fecha y cuando llega la fecha “algo” pasó y el pago no se pudo efectuar.

En lo personal se me hace una grosería no llevar una planeación donde se tenga claro que hay que pagarle a la gente por un trabajo realizado pero no por eso uno puede olvidar que la seriedad y sutileza son mejores armas que el enojo.

Lo que puedo recomendar es primero acordar fechas de pago antes de iniciar un proyecto. Lo más seguro es que en contraparte el cliente pida fechas de entrega del proyecto (o por lo menos de documentos que demuestren el avance que se va logrando). Y con eso en cualquier momento se puede detener el proyecto hasta que se cubra la cuota omitida.

Si no se logró tal acuerdo/planeación y ya se llegó al fin del proyecto lo que va a pasar es que el cliente casi siempre va a pedir la entrega del mismo con la promesa de pago (podrá ser contraentrega misma o fechas posteriores) y me parece bien, al final del día el cliente quiere su “proyecto” pero ese es el segundo error (el primero fue no calendarizar fechas de pago). NUNCA se debe entregar un proyecto si no se ha cubierto el total del pago por el trabajo realizado.

Ahora, la verdad, es que aún con lo que escribí arriba (y con todo y que puse NUNCA) lo más seguro es que se entreguen proyectos y no se cubran los pagos.

¿Qué hacer entones?

Lo primero: mantener la cabeza fría. Cualquier decisión tomada con la cabeza caliente puede generar una mala reputación y hasta una excusa perfecta para no llevar a cabo el pago de lo acordado.

Lo segundo: dar espacio (una o dos semanas es más que suficiente) al cliente para realizar el pago por el faltante. Siempre es bueno recordar que somos personas y que si uno mismo no pudo planear un calendario de pagos lo mismo le puede pasar al cliente.

Lo tercero: si ya pasó ese tiempo límite y aún no se recibe pago hay que avisar al cliente que no se puede tolerar tal situación y exigir pago inmediato. Aqui es donde uno toma acciones de “aviso” (digamos que un proyecto se ha entregado pero aún se tienen elementos para limitar la funcionalidad de lo entregado) para que el cliente se de cuenta de la seriedad de la situación – y por favor – no puedo ser suficientemente exagerado con esto: SUTILEZA y TRANQUILIDAD.

Lo cuarto: tomar acciones legales. Si no se ha llegado a un acuerdo lo mejor que se puede hacer es contactar a las instituciones que puedan forzar al cliente a realizar el pago. Preferiría nunca llegar a este paso pero hay veces que no queda de otra. Aqui también sería cuando uno toma acciones “definitivas” (si es que todavía se tiene control sobre el proyecto entregado aqui se debe quitar el control completo al cliente).

La verdad es que nadie quisiera llegar al paso 4 pero hay que ser responsable en todos los aspectos de un proyecto y de la misma manera que se es responsable para entregar un proyecto a tiempo, hay que tomar medidas cuando el cliente no cubre su parte del acuerdo.

Saludos,
Gorka

P.D. – Sabiendo todo esto es bueno tomar una metodología de trabajo que permita a) calendarizar pagos y b) tomar precauciones en las entregas del proyecto para poder tomar acciones como en los pasos 3 y 4.


Otra vez más: el iPhone/iPod Touch como control remoto


iPhone Remote Control

La verdad es que desde que uso un iPod Touch busqué una app para poder controlar mi computadora a distancia y vía WiFi. Las razones son muchas y pueden variar pero entre lo que a mí me interesa les puedo enumarar las siguientes ocurrencias:

Esas son sólo unas de las razones por las cuales vale la pena conectar el iPhone/iPod Touch con la computadora y para hacerlo hay muchas (MUCHAS) apps. Yo recomiendo la serie de apps de JUMI, tienen el típico escritorio remoto/control remoto, uso de la cámara, control de videjuegos, control de multimedia y hasta la broma de la mosca.

En pocos y fáciles pasos pueden hacer todo esto:

Se necesita:

  1. Un iPhone/iPod Touch u iPad
  2. Una pc/mac
  3. Acceso a Internet o una Red Propia

Pasos:

Listo y fácil no? Disfruten.

Saludos,
Gorka


¿Cómo entrarle al desarrollo de apps para iPhone?


Apps

La cosa es así: ¿qué se necesita para hacer apps para iOS? y que sea sencillo de entender.

Primera versión (la orginal, la tradicional, la apretada de apple porque de “a fuerzas” necesitas una Mac):

Para “desarrollar” o “programar” para iOS se necesita descargar una serie de “librerías” con las cuales la secuencia del programa queda lista para poder “funcionar” en todos los dispositivos o gadgets que usan iOS – ipod touch, iphone, ipad.

Esas librerías se descargan gratuitamente del sitio de desarrolladores de apple (developer.apple.com) con un sencillo y gratuito registro.

Hay que instalar esas librerías en tu Mac (sólo se pueden instalar en una Mac) y con eso ya tienes listo los programas para hacer apps (bueno, casi porque ahora necesitas programar en Objective C con estructura/arquitectura de Cocoa y Xcode).

Fácil no?

Segunda versión (la peleada, la terca, la que demostró que la “banda” puede más que el capricho de algunos):

Se puede usar Flash CS5 para desarrollar/programar apps. Hay que descargar una serie de librerías (también gratuitas del sitio de Adobe – luego agrego el link) y con eso al iniciar un nuevo proyecto se puede seleccionar la opción de apps.

Esta versión fue muy peleada porque por mucho tiempo no Apple no quería que ningún programa de fuera pudiera crear apps y hasta llegaron al punto en que dijeron que no iban a aceptar apps hechas de esta manera, pero le pegaron a Apple porque ellos siempre dijeron ser de mente abierta y desarrollo abierto para todos – pero crearon un esquema tan cerrado que demostraba ser contrarío a su filosofía – al final, se rindieron y hoy en día aceptan apps de esta manera.

El problema es que esas librearías tienen alcance limitado y no pueden todas las usar herramientas al alcance como la cámara, geolocalización, el giroscopio, entre otras. Y además no se puede agregar código que se ejecute en “run time” porque no hay un intérprete de actionscript (esto de hecho se me hace muy chafa pero por seguridad lo puedo entender) y sólo necesitas aprender AS3 y flash.

Más fácil pero muy chafa no?

Tercera versión (ya la de perdida, la que nos queda, la “no tan” cerrada):

Usar un SDK de un framework externo que si tenga acceso a las herramientas que flash no puede. Porque hay cuates que vieron el negocio de flash y lo quisieron mejorar con el slogan de “si tu puedes hacer una página web con HTML5, CSS3 y Javascript (y hasta algún lenguaje de script como php) entonces vas a poder hacer una app”.

Esto para invitar a TODO mundo a entrarle a este tipo de desarrollos, con el catch que para usar este tipo de herramientas en su máximo potencial todavía se necesita comprar una Mac ya que al final del día la “compilación” tiene que ser hecha con el “toolchain” de Mac – y ni pregunten porque yo todavía estoy entendiendo esta parte.

Entre los frameworks que se pueden usar para esto están Titanium y DragonFire.

Chido pero aún caro no?

Cuarta versión (la hacker, la barata, la accesible para todos aquellos con conocimientos técnicos MUY elevados):

De los mismos creadores del jailbreak, de cydia y de muchas de las grandes maravillas que la gente pelea porque quieren recuperar la libertad de “hacer lo que se le de la gana con los gadgets que compra” – Saurik – encontró la manera de imitar ese “toolchain” de Mac con lo cual se pueden compilar apps para iOS desde otros lenguajes similares (como C, C++, Java y derivados de bajo nivel).

Esto para que todos aquellos interesados en crear apps desde Linux lo puedan hacer. Pero la verdad es que se necesitan conocimientos técnicos MUY avanzados, casi tanto que en lugar de aprender a hacer esto es más fácil y barato aprender código de Objective C y comprar una Mac (ese es mi caso).

Super chido pero NADA fácil..

Quinta versión (la socialista (hasta que pegue y empiecen a cobrar) y novedosa y de geeks muy inteligentes):

Unas personas proponen lo siguiente: haz, desarrolla, programa en lo que sea que se te de la gana (no tan así pero hay amplio espectro de lenguajes y arquitecturas aceptadas) y luego pásanos tus códigos fuente y nosotros compilamos y te regresamos tu app.

Sea windows, mac, linux o lo que sea, les envías los códigos fuente y ellos lo pasan por una Mac (o ve tu a saber si por el una manera estilo la cuarta versión) y después te regresan la app lista para vender en app store. Así no tienes que comprar una mac ni aprender un lenguaje nuevo – PERO – tienes que confiar en darle tus códigos fuente a alguien más y confiar en que no modificaron, copiaron, piratearon, voltearon, jugaron, vieron, editaron nada y te dieron algo a cambio (y hasta ahora gratis) – estoy hablando de phoneGap.

Super duper chido pero demasiado comprometido y falto de confiabilidad (si es que se entiende)..

Así que bueno, este es un primer análisis. Hay muchas maneras y cada vez llegarán más pero serán similares a esto que explico. Por ahora lo que puedo recomendar es tomar el camino de menos esfuerzo según el conocimiento técnico de cada uno: para los genios el #4, para los no tan genios el #1, para los que tienen el billete y no llegan al dos pues el #3, para los que no les importa tanto el alcance la #2 y para los confiados el #5.

Espero esto ayude a tomar el camino correcto. Yo sigo decidiendo por donde voy a ir y seguiré escribiendo de mi experiencia en general en este tipo de proyectos/emprendimiento.

Saludos,
Gorka


Framework de reverse-exploit para metasploit


Luring

Este post es puramente hipotético pero si algún día tengo tiempo me pondré a hacer un PoC (Proof Of Concept):

En la manera más sencilla de explicar qué y cómo se hace un exploit a una vulnerabilidad la cosa es así:

  1. Un programa para funcionar puede recibir parámetros de fuera de sí mismo (le pueden llegar vía usuario o vía sistema).
  2. Esos parámetros pueden ser órdenes y/o datos que usa el programa para hacer lo que sea que haga.
  3. Si una persona tiene control de como y que hacerle llegar al programa en esos parámetros ese programa se puede intentar “explotar” , es decir se puede buscar si el programa es vulnerable.
  4. Si el programa no revisa bien, o no filtra los parámetros éstos pueden generar errores en la ejecución del programa.
  5. Si esos errores tienen algún tipo de respuesta donde se incluya algún tipo de información generada o relacionada a los parámetros o simplemente se logra que el programa se detenga (pero no detenga su ejecución en memoria) entonces se ha “explotado” el programa y se ha encontrado una vulnerabilidad en tal o cual parámetro.

Sin entrar a detallar los millones de tipos de ataques y sus infinitas variantes dados los diferentes tipos de parámetros que se pueden enviar (desde código en sí, hasta sub códigos, y la más fina y difícil – a mi parecer – de usar código en lenguaje de máquina para hacer un buffer overflow) la cosa se puede resumir así (y obvio sin entrar en el detalle de programas que le envían parámetros a otros programas porque ahí la cosa se vuelve Kafkiana).

Existen plataformas (frameworks) de programas que se usan para hacer pruebas de penetración. Una de las más potentes es Metasploit cuyo core está basado en explotar windows desde MUCHOS ángulos y de maneras super específicas hasta completamente universales. Además, llevan un registro de todos los errores que encuentran y la manera de usarlos para no tener que repetir el proceso de encontrar las vulnerabilidades sino ya nada más “explotarlas”.

¿Qué hace metasploit – bueno, no en sí metasploit, sino los programas dentro de este framework?

Envían parámetros a ciertos programas en windows para aprovechar vulnerabilidades conocidas y así controlar las computadoras que son atrapadas (de la manera explicada arriba).

¿Cómo se enteran los programas en metasploit si han logrado su cometido?

Reciben una respuesta de parte de la computadora/programa que quisieron atacar/hacer prueba de penetración.

Si se pudiera saber cuando se está llevando a cabo un ataque y en lugar de simplemente detenerlo se pudiera controlar la respuesta que van a recibir los programas atacantes… ¿no se podría buscar errores en la manera que reciben las respuestas y con eso tratar de encontrar vulnerabilidades en los mismos programas atacantes?

En teoría:

En la práctica? Aún no llego ahí, hahaha. Pero esto es obviamente simplificando todo lo que se lleva a cabo a la hora de “explotar” una vulnerabilidad, seguramente ya al momento de intentarlo las cosas son mucho más complicadas.

Lo divertido es pensar que si existe un framework que ataca a Windows se podría crear un anti-framework con el cual no sólo te defiendes sino que atacas a los atacantes y los puedes llegar a dominar. Ojo que para evitar que entonces se haga un anti-anti-framework (y así infinitamente) lo que hay que hacer es desde un principio revisar bien los parámetros que reciben los programas y si eso ya lo sabemos pues se lo ponemos al anti-framework para que no nos la puedan aplicar, hahaha.

Saludos,
Gorka


¿Cómo ver/tener Internet en la televisión?


PC to TV

Al final viene una lista de “por qué’s” para que se interesen, igual me gustaría saber si se les ocurren más razones.

¿Qué se necesita?

  1. Una tv o home theater con entradas RCA
  2. Un iPod touch o un iPhone
  3. Un cable “composite” de salida rca y entrada de iPod/iPhone (ojo hay dos tipos: normal de 3 colores rojo, blanco y amarillo y el nuevo para hd que tiene tambien verde y azul y creo que otro más; en fin, compren el que funcione con su tv o home theater si van a hacerlo de esa manera)
  4. Una conexión Wifi funcional a Internet que el iPod/iPhone (y la computadora) pueda usar o un plan de datos 3G para el iPhone

Opcionales:

  1. Una de varias aplicaciones para transmitir video de computadora a iPod (yo uso AirVideo y es muy recomendable pero también VLC tiene una)
  2. OutToTv – esta app sólo funciona en iPhones “jailbreakeados”
  3. Veency para poder controlar el iPod/iPhone desde la pc

Pasos:

  1. Conectar el cable al iPod Touch o al iPhone y a la tv

Así de fácil.

Razones:

Así que ahí tienen.

Saludos,
Gorka


¿Cómo enviar a redes sociales los contenidos de un feed rss?


Twitterfeed

La verdad es que debía este post desde hace rato, la razón principal para hacer lo que el título dice es porque cualquier blog genera un feed rss y por lo tanto se puede publicar de esa manera lo que se escribió en el blog a redes sociales.

Existen muchos servicios pero los dos que yo uso (y son bastante sencillos de configurar) son: Twitterfeed y dlvr.it

La idea es que ambos “agarran” el feed del rss y se conectan a sus respectivas aplicaciones en Facebook y Twitter (hay más para configurar pero por ahora yo sólo uso esas dos).

Y listo así de fácil se tiene distribución de contenidos a redes sociales.

En algún desarrollo anterior traté de usar otro servicio similar (ping.fm y pixelpipe.com) pero la verdad es que ese camino necesita de más pasos, igual hay un par de cosas a notar:

Limitado:

Alcance:

Cuando lo que se busca es simplemente publicar un link que regrese a los usuarios al contenido en tu propia página web estos servicios son perfectos. Pero si lo que se busca es generar contenidos idénticos para cada una de las redes sociales estos servicios no pueden cumplir con tales requisitos.

Así que bueno, ahí tienen ventajas y desventajas y los nombres (así por ahora ya pueden intentar aprender por uds. mismos y si necesitan ayuda me avisan y publicamos aqui un -how to ó -faq).

Saludos,
Gorka


Pagination