Posted by & filed under linux.

21/12/2013

Al final todo fué verdad, aunque muchos pensamos escépticos que todo era alguna idea absurda de algún líder de una secta para atraer fieles y así recaudar más dinero, ojalá eso hubiese sido. Hace exactamente un año la vida en el planeta dejó de ser la misma, predominan la anarquía y el salvajismo, parece que la humanidad ha retrocedido unos milenios.  Al ver tantas películas sobre zombies siempre pensaba ‘que ridículo, eso es imposible que suceda’, pero las bombas biológicas con sus virus diseñados en laboratorio los han hecho realidad.

Buscando alimentos y/o armamento en una base militar encontré unos laboratorios, aparentemente epicentro del desarrollo de las armas biológicas. Allí me encontré con un generador funcionando y una computadora prendida. En la pantalla polvoriente pude apreciar un prompt de lo que parecía ser un sistema Linux. Hurgando en sus archivos me llamó la atención un fichero con información sobre los efectos de las armas biológicas, mis ojos se iluminaron al encontrar un archivo llamado ‘antídoto.tar’, lástima que no sepa como abrirlo.

Google te extraño, pudiste habernos salvado.

Decidí comenzar este post con algo fantacioso, que aunque no sirva para entretener el lector al menos en este humilde redactor si lo hace; lo que quise mostrar con la pequeña narración es lo dependientes que somos hoy en día (y me incluyo) a Google y los numerosos how-to’s / foros que hay sobre cualquier temática que necesitemos ayuda. Solemos mal-acostumbrarnos a leer una página y que nos lleven de la manito paso por paso o peor aún caer en el copy-paste o en ejecutar algun script que haga todo aquello por nosotros.

Allá por el final del 2010 cuando me encontraba cursando Algoritmos y Programación II por obligación de la cursada (grossisima por cierto) debí utilizar ciertas herramientas con Linux, en aquél entonces ya era un pseudo-usuario del mismo pero me faltaba (y falta) cancha. Dichas herramientas (gcc, valgrind, entre otras) para su ejecución requerían diversos parámetros que aveces aprendía de memoria y/o Googleaba para averiguar su resultado; hasta que un día me iluminaron y mostraron el camino.

man

‘man’ es un simple comando que al ejecutar en la terminal acompañado como argumento otro comando, nos muestra la documentación disponible sobre el mismo. Por ejemplo si ejecutamos ‘man man’ nos aparecerá  la siguiente pantalla (para salir presionar ‘q’)

Allí podemos ver una breve explicación de los parámetros, la descripción general y si seguimos explorando veremos más en detalle cada parámetro que admite. Por lo general se encuentran en el idioma que tengamos instalado nuestra distribución y todos los parámetros que nos hagan falta; puede no ser el caso, pero sin lugar a duda es mejor que depender exclusivamente de lo que encontremos en Internet.

Posted by & filed under internet, linux, programacion.

Hace rato que vengo queriendo escribir un post sobre esto, espero que hoy me ilumine y las palabras fluyan correctamente.

¿Que es un Script?

Quizá alguna vez hallamos escuchado script como ‘guión’ o ‘libreto’ en el ámbito de la actuación y me parece una analogía adecuada. Un script en computación lo podemos interpretar como un guión que la computadora lee y efectúa las operaciones detalladas.

Generalmente dichas operaciones son sencillas y pueden ejecutarse manualmente mediante una consola de comando, la ventaja de realizar un script radica en realizar la misma operación de manera automatizada y además podemos aprovecharnos de ciertas estructuras de datos.

Vamos a los bifes

Dada ya una introducción bastante genérica, voy a intentar ejemplificar un poco para quitarle cierto aire de abstracción. Quizá recuerdes que en el post sobre mi ‘hack’ a cuentas de facebook (link) utilizé un script sencillo pero para no ser repetitivo voy a poner otro script, uno que mientras mirás este artículo se está ejecutando en el server.

Dado que no pago un host y que mi ISP me provee de IP dinámica; para montar mi propio server si o si requiero de los servicios de un DNS . El problema radica de cuando mi ip cambia, tener que actualizar el dominio.

Eso se puede hacer con un simple wget  a mi DNS, que en criollo es como decirle ‘ehh amigo, cambié de ip, fijate que ip tengo ahora y actualiza mi dominio‘, pero dado a querer realizar esta operación de manera automática decidí arremangarme un poco y llegué a esto

#!/bin/bash
LOC=/home/server/dynamic
OLDIP=$(ls $LOC/*.IPADDR)
NEWIP=$(wget http://www.whatismyip.org -O - -q)
if [ "$OLDIP" != "$LOC/$NEWIP.IPADDR" ]; then
    echo La ip ha cambiado, tu ip es $NEWIP
    mv $OLDIP "$LOC/$NEWIP.IPADDR"
    $LOC/updater
else
    echo La ip no ha cambiado, tu ip es $NEWIP
fi

Como vemos en una simples líneas, logramos automatizar una tarea que bien pudimos hacer manual.
De esta manera, logramos funcionalidad personalizada y a gusto del consumidor sin necesidad de recurrir a programas externos.

Posted by & filed under internet.

Actualizado: 07/12/12

Si poseemos Sharedaddy seguramente querramos que quien comparta nuestra página mediante Twitter, también haga mención de nuestra cuenta mediante un ‘via @nuestraCuenta’.

Por el momento Sharedaddy no posee soporte nativo, pero editando un simple archivo php podemos hacerlo funcionar.

Para ello buscamos el archivo ‘sharing-sources.php’; si tenemos activado Sharedaddy mediante Jetpack vamos a wp-content/plugins/jetpack/modules/sharedaddy, caso contrario a wp-content/plugins/sharedaddy.

En la función process_request buscamos la línea que comienza:


$twitter_url = add_query_arg( urlencode_deep( array_filter( compact( 'via', 'related', 'text', 'url' ) ) ),
 sprintf( '%s://twitter.com/intent/tweet', $this->http() )

Y modificamos tal que nos quede

$twitter_url = add_query_arg(
 urlencode_deep( array_filter( compact( 'via', 'related', 'text', 'url' ) ) ),
 sprintf( '%s://twitter.com/intent/tweet?via=USERNAME', $this->http() )

Tan simple y sencillo como eso.

ATENCIÓN

Posted by & filed under internet.

Desde la invasión de las computadoras en la vida cotidiana del hombre, hemos incorporado a nuestro idioma la palabra ‘mega’.

‘Mega’ al igual que kilo, mili, deci, etc; representa un multiplicador, en este caso mega equivale a 10⁶ es decir un millón.

Hoy en día en cualquier publicidad de una proveedora de Internet nos ofrece “X megas” y es ahí donde considero yo se esconde una sutil mentira.

El usuario promedio asocia megas con el “peso” de los archivos, es decir lo que ocupa en almacenamiento; en este caso uno se esta refiriendo a mega Bytes, que es el estándar común en almacenamiento.

Sin embargo en lo que suele ser redes/telecomunicaciones se utiliza suele optar por otro estándar, los bits. Es aquí donde subyace la sutil diferencia entre megas, una razón de 8:1 .

Si tu servicio de Internet es de 3 Megas, al descargar un archivo no lo harás a una tasa de descarga de 3 megaBytes (MB) sino que a 3 megaBits (Mb).

Basta con probar descargar un archivo de Internet, la tasa de descarga que te indique el navegador, multiplicala por 0,008  y aproximadamente vas a tener los “megas” de tu ISP. Por ejemplo si tienes un servicio de 3 “Megas” descargarás a aproximadamente 400 KBps (kiloBytes por segundo).

¿Inocencia, Ingenuidad o simple perversidad de marketing?
“Lo dejo a tu criterio”- Karina Olga Jelinek

Posted by & filed under free software, linux.

Desde el comienzo de la humanidad han existido las comparaciones, quienes tenían la cueva más bonita, el caballo con mejor dentadura. Hoy en día están de moda las peleas del estilo Mac vs Pc, Pc vs Consolas, PS3 vs XBOX360; etc. Hace poco tiempo en Taringa! tuve un intercambio de MPs con un usuario discutiendo sobre si Windows o Linux eran mejores, desafortunadamente tuve que cortar abruptamente la discusión dada la poca capacidad argumentativa y/o de entablar una discusión en buenos términos del usuario. A continuación daré una serie de opiniones acerca de porqué muchos creen que Windows es mejor que Linux.

En primera instancia debo aclarar que ningún sistema es absolutamente mejor a otro, un sistema tiene como fin serle útil a quien lo use; por ende el término ‘mejor’ se vuelve relativo y cada usuario debe utilizar el sistema que más se ajuste a sus necesidades.

Personalmente creo que Microsoft no es una de las empresas de ‘productos’ informáticos más grande por sus productos, sino por sus estrategias de mercado.

A comienzo de los 90′ en el boom de Internet se desató una batalla entre los navegadores ‘Internet Explorer’ (Microsoft) y ‘Netscape Navigator’ (Netscape Communications) en que el primero resultó victorioso. NO porque sea mejor (no creo que lo haya sido) sino que en vez de ser pago, decidieron darlo gratis con cada licencia de Windows. Resultó ser una estrategía de mercado y no una superioridad del producto lo que definió la batalla.

En mi corta vida (20 años) tenido el gusto de escuchar argumentos como ‘Linux apesta porque no funcionan los juegos’ o ‘…no funcionan los drivers’. Decir tales cosas es como decir ‘no me gusta el Lamborghini porque no le puedo colocar ruedas de tractor’. Un sistema operativo no es hecho para juegos, los juegos son hechos para sistemas operativos!!!

Read more »

Posted by & filed under free software, linux, programacion.

En la corta vida universitaria que tengo, me tocó utilizar diversos lenguajes de diversos pardigmas, como Pascal, C, Python, Smalltalk, Java, Bash (aunque no es un lenguaje formalmente). Todos y cada uno de ellos me demostraron su encanto y potencial, sin embargo uno de ellos sobresalió por sobre el resto. Como el título lo predice, estoy hablando ni más ni menos que de Python.

¿Que sobresalió de Python?

Me tocó empezar a usarlo sólo habiendo tenido como lenguajes previos Pascal y C. Quien los conoce saben que son lenguajes bastante cuadrados y caprichosos; lenguajes estructurados y fuertemente tipados estáticamente. Lo que personalmente me impulsa a programar muchas cosas es el ¿y si? y dicha pregunta la suelo responder con algunas pocas líneas de código. Con Pascal y C solía usar el Geany y un fpc/gcc por consola y luego ejecutar el (valga la redundancia) ejecutable.

Con Python se abrió un nuevo mundo de posibilidades, al tener un intérprete en vivo en la consola el proceso lleva mucho menos tiempo. Ahora dejando de lado lo anecdótico, vamos a lo interesante.

En rasgos generales Python es un lenguaje de tipado dinámico, multiparadigma (sirve tanto para estructurado, orientado a objetos, como para otros), de alto nivel, con varias estructuras de datos implementadas por defecto y un recolector de basura. Posee una filosofía que apunta a la claridad y simplicidad del código.

Read more »

Posted by & filed under internet.

Hace unos días mi amigo ‘Chino’ escribió este artículo de ingeniería social en facebook, básicamente el mismo se trata de explotar un comportamiento recurrente en los usuarios de esta red social para crear cierta legitimidad en una nota y luego editar el contenido; pudiendo poner links con contenido malicioso y/o información apócrifa, etc.

Es innegable el poder de comunicación que hoy tenemos mediante la Internet, una mera persona detrás de una computadora puede crear contenido que es consumido por una gran cantidad de personas. Como tal es lógico que sea un medio recurrente a la hora de efectuar manifestaciones sociales. Sin ir más lejos, las redes sociales y la red fueron fundamentales para los levantamientos árabes, permitiendo a miles de jóvenes organizarse.

Pero aquí es donde radica el doble filo de este medio masivo de comunicación, ¿cuál es la legitimidad que tiene un desconocido detrás de una computadora?

Durante las revueltas árabes, un blog de una lesbiana siria fué referente del levantamiento; sin embargo poco tiempo después se descubrió que quien escribía, lejos de ser una mujer homosexual siria, se trataba de un joven escoses.

Creo que el 99% de quienes utilizan Internet, han recibido alguna vez un mail cadena, haciendo referencia a una persona enferma, perdida, etc; pidiendo que el mismo sea reenviado a todos los contactos para ayudarlos. Muchos de estos mails son totalmente apócrifos y tienen como único fin obtener un listado de mails válidos para poder mandar spam o inclusive pueden contener contenido malicioso (lease virus, etc).

También existe otro objetivo, la difamación. Hace no mucho tiempo circularon muchos mails, advirtiendo del supuesto daño que implicaría consumir un producto de la compañía láctea líder en la Argentina; la misma ante la magnitud que tomó dicha advertencia, se vió obligada a crear un spot publicitario para desmentir tales acusaciones.

Hace unos días tuve un evento desafortunado, ví que por Facebook circulaba mediante ‘shares’ y ‘copy-paste’ la noticia de una nena abusada sexualmente por un cura el cual era mencionado con nombre, apellido y foto.  Desafortunado porque ante la sospecha y el no lograr encontrar más información disponible (generalmente estos casos se hacen noticia) me apresuré a tratar la misma como de apócrifa, además de al personalmente pedir más información a quienes compartían esta noticia lograr el enojo de varios.

Fue un gran error de mi parte no tomar el tema con mayor delicadeza, ante la posibilidad de que yo esté equivocado. Sin embargo dicho hecho ilustra lo que quiero demostrar con este artículo, la gente a pesar de la imposibilidad de verificar fehacientemente los datos, se solidarizó con la causa compartiendo la noticia.

Supongamos el caso hipotético de que dicho caso fuese mentira, uno podría acusar a cierta persona de cierto delito y aprovechando la solidaridad de la sociedad, divulgar la identidad y supuesto carácter del delito; estaríamos hablando de difamación a gran escala, siendo muy difícil rastrear el origen del mismo.

Corolario

A diferencia del diario, la radio, la televisión, Internet la hacemos todos; todos somos creadores y consumidores de contenido. Es por ello que tenemos que ser más concienzudos a la hora de consumir, crear y compartir información; sabiendo que todo lo que creamos y compartimos posee cierta legitimación de nuestra parte.

Posted by & filed under ciencia.

Actualmente vivimos plagados con dispositivos electrónicos diminutos que nos permiten llevar infinidad de música a donde quiera que vayamos. Es muy común en la vida urbana, ver quienes se sumergen en la música para amortizar el trastorno diario que es desplazarse dentro de una ciudad. Sin embargo sabemos que las ciudades son ruidosas y eso nos puede impedir disfrutar plácidamente de nuestra música, por suerte la física viene al rescate de nuestro gusto musical.

Existen hoy diversos auriculares comerciales que disponen de dispositivos electrónicos que ‘cancelan el ruido’ proveniente del exterior. Lo interesante es que no cancelan el ruido con una barrera física, como un ajuste mas hermético con el oído, sino que paradójicamente crean silencio a partir de más ruido.

Una parodia sería pensar en que nos encontramos con una persona que nos está gritando y no queremos escuchar sus gritos; entonces en vez de taparos los oídos, le gritamos a aquella persona y en consecuencia no escuchamos ninguno de los gritos, sólo silencio. Suena cómico e imposible ¿no? Pués existe una explicación para este fenómeno, y se trata de la ‘interferencia destructiva’.

Veamos una simple imagen

Como vemos la onda roja y la onda azul son iguales, simplemente están espejadas. Las mismas al interferirse (interactuar entre ellas) al ser una la opuesta a la otra, se cancelan.

Los auriculares con ‘noise cancel’ aprovechan este fenómeno físico mediante micrófonos que captan el ruido del exterior y componentes electrónicos que producen una onda sonora inversa a la proveniente del exterior, logrando así un sonido limpio. Un ejemplo clásico es que un viajero de un avión utilice este dispositivo para anular el sonido de las turbinas, incluso sin estar escuchando música.

Cabe destacar que este sistema no es perfecto, no opera sobre todas las frecuencias audibles ni cancela todos los sonidos; pero es un gran aporte a lo que es obtener un sonido limpio en ambientes ruidosos.

Posted by & filed under internet.

En el post anterior ya mencioné algunas curiosidades respecto a las url’s de facebook y que información podíamos sacar de ellas; sin embargo sentí que quedaba algo pendiente y es mostrar como es hipotéticamente posible robar fotos de una cuenta a la que no tenemos acceso, mediante la fuerza bruta.

¿Por qué “hipotéticamente”? En el post anterior mostré la siguiente url

https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc6/262207_10150250379330782_639435781_7283246_1748549_n.jpg[/note]

donde el número marcado en rojo corresponde a mi profile id, el cual obviamente es constante, al contrario de todos los demás números  que son variables y representan el resultado de algún algoritmo de ordenamiento o algo así. Para los que no lo recuerden o sepan (este blog intenta ser lo más friendly posible) un algoritmo de fuerza bruta, implica ni más ni menos que ir probando todas las combinaciones posibles.

Analizemos esto, tenemos 37 dígitos que varian, siendo los mismos decimales cada dígito tiene 10 combinaciones posibles lo que nos da un 10³⁷ combinaciones aproximadamente. Es más que evidente que es un número bastante grande. Computacionalmente es un número más que accesible que tardara su tiempo dependiendo del poder de cálculo de nuestra computadora, el problema radica en que por cada iteración haremos un pedido al servidor y eso tiene su delay. Multipliquemos este delay por 10³⁷ y más o menos tenemos desde Moisés hasta la actualidad.

Podriamos realizar un ataque a más de un servidor y/o desde más de una pc atacante, pero en definitiva el tiempo necesario para perpetrar dicho ataque seguiría siendo bastante.

Resumiendo, este ataque no tiene practicidad alguna, más que demostrar que hipotéticamente es posible y para resaltar ciertas curiosidades que tiene esta red social.

El Ataque

Antes de realizar un script para perpetrar el ataque de fuerza bruta, indagué un poco los links de mis propias fotos, esperando encontrar algun orden lógico el cual me permita acotar la cantidad de variables y me encontré con una curiosidad. Los links de mis fotos viejas (09-10) poseian otro formato

https://fbcdn-sphotos-a.akamaihd.net/photos-ak-ash1/v254/51/16/639435781/n639435781_450402_9982.jpg

En base a la observación el /51/16 parecería constante así como el /v254 tenía cierta persistencia, pero poniéndonos estrictos podríamos decir que tenemos 26 dígitos que varían, bajamos 11 variables! Sin embargo sigue siendo un número bastante alto.

Por lo que para el script en cuestión tomé ciertas consideraciones al “atacar” a un álbum específico

  • /v254/51/16 son contantes
  • 45042 posee sólo 10 ciclos de iteración
Obteniendo como resultado
#!/bin/bash
LOC=/home/alejandro/Escritorio/Facebook
OUTPUT="$LOC/file.txt"
BASE="http://fbcdn-sphotos-a.akamaihd.net/photos-ak-ash1/"
LINK=""
ID=639435781
CONST1=254
CONST2=51
CONST3=16
MIN1=450403
MAX1=450412
MIN2=702
MAX2=3970

while [ $MIN1 -lt $MAX1 ];do
    MIN2=702
    while [ $MIN2 -lt $MAX2 ];do
	 LINK=$BASE"v"$CONST1"/"$CONST2"/"$CONST3"/"$ID"/n"$ID"_"$MIN1"_"$MIN2".jpg"
 	 echo $LINK
	 TEST=$(wget $LINK -o - -q)
	 if [ "$TEST" != "" ]; then
	    echo $LINK >> $OUTPUT
	 fi
let MIN2=$MIN2+1
    done
    let MIN1=$MIN1+1
done
En este preciso momento, el script lleva 2 horas ejecutándose y como resultado arrojó las siguientes imágenes

Se puede apreciar que las fotos siguen el orden lógico del script

Colorario

Para resumir, planté la hipótesis de que es posible ejecutar un ataque de fuerza bruta contra los servidores de imágenes de facebook. Usando un caso modelo acotado, demostré que es posible aunque extremadamente impráctico.

Como aprendizaje o curiosidad me queda, que las imágenes están alojadas ‘públicamente’, que las url de las mismas muestran el id de su dueño y una de las cosas más interesantes es que el servidor permite realizar el ataque.

Me resulta curioso como uno es capaz de realizar un gran número de pedidos a direcciones inválidas sin que el servidor detecte un comportamiento sospechoso o si lo hace, no actúe.

NOTA: Al término de esta entrada el script arrojó otro resultado, 
siendo al momento 4 imágenes en 2 horas 20 min aproximadamente.

Licencia Creative Commons
Curiosidades de Facebook Reloaded por Alejandro Pernin se encuentra bajo una Licencia Creative Commons Atribución 3.0 Unported.

Posted by & filed under internet.

Hay muchas cosas en la vida, que uno ve, conoce, utiliza y desconoce pequeñas curiosidades o perlitas que no van muy al caso, pero siempre son interesantes de conocer. Facebook ha causado enorme controversia, con sus políticas de privacidad, supuesta exposición de datos privados, etc. Aquí no voy a hablar de eso ya que soy temeroso de los abogados de Mark Zuckerberg y no tengo dinero para costearme un litigio legal, así que sólo mostraré unas pequeñas perlitas con las que me he encontrado.

Observemos la siguiente URL:

https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc6/262207_ 10150250379330782_639435781_7283246_1748549_n.jpg
Dicha URL corresponde al enlace directo de mi foto de perfil, aunque posea una configuración de seguridad tal que sólo mis amigos puedan ver mi foto de perfil, cualquiera con esa URL podría verla; con lo que por medio de un intermediario habilitado, uno podría tener acceso a las fotos de una persona que normalmente no podría.

-Ahh, pero no pasa nada, porque siempre tiene que haber un amigo que le pase el link. ERROR.

Luego voy a mostrar un ejemplo, pero teoricamente es  posible crear un algoritmo que variando las secuencias numéricas de la URL, capture las imágenes subidas. Las secuencias numéricas no son numeros al azar, sino que identifican el perfil, el album y la foto (ejemplo burdo). Un ejemplo particular, el 639435781 remarcado en la URL corresponde a mi ‘profile id”.

Existe una suerte de “aplicación” dentro de facebook, que dado un numero de perfil, nos devuelve cierta información.
http://graph.facebook.com/639435781 nos devuelve:

{
“id”: “639435781”,
“name”: “Alejandro Pernin”,
“first_name”: “Alejandro”,
“last_name”: “Pernin”,
“link”: “https://www.facebook.com/ale.pernin”,
“username”: “ale.pernin”,
“gender”: “male”,
“locale”: “en_GB”
}

No es información del todo privada, menciona solo mi nombre, apellido, sexo y en qué idioma uso Facebook; asimismo si mi configuración de privacidad fuese tal que mi mail sea público, aparecería en los datos. De nuevo, esto nos permite mediante un algoritmo (para nada complicado) ir obteniendo datos, por ejemplo yo utilizé un algoritmo que a partir de mi id, iba a obtener los resultados de los siguientes 100 id’s; el resultado fué el siguiente:

Ver Resultados

Como se puede apreciar no son 100 resultados ya que algunos resultados arrojan “false” y mi algoritmo los omite; pero sin embargo se puede entender lo que quiero demostrar.

¿Es seguro utilizar Facebook?
“Lo dejo a tu criterio” – Karina Olga Jelinek, filósofa contemporánea argentina.

Licencia Creative Commons
Curiosidades de Facebook por Alejandro Pernin se encuentra bajo una Licencia Creative Commons Atribución 3.0 Unported.
Basada en una obra en blog.aleperno.com.ar.