Paginación

La memoria es un ente impresionante. Awesome, diría en inglés. Me recuerda esta cita de Pratchett que siempre me ha gustado:

“Elves are wonderful. They provoke wonder.
Elves are marvellous. They cause marvels.
Elves are fantastic. They create fantasies.
Elves are glamorous. They project glamour.
Elves are enchanting. They weave enchantment.
Elves are terrific. They beget terror.
The thing about words is that meanings can twist just like a snake, and if you want to find snakes look for them behind words that have changed their meaning.
No one ever said elves are nice.
Elves are bad.”

 Terry Pratchett, Lords and Ladies

Por supuesto, awesome inspiraría awe. Eso, a su vez, me recuerda esta escena de Red Dragon:

“Fear is not what you owe me, Mr. Lowe. You owe me AWE”

La memoria inspira eso, “awe”. Una buena definición para estos propósitos sería “fear and reverence”. Eso me inspira la memoria. Reverencia, por supuesto, por su incomprensible complejidad. Miedo, a veces, cuando pienso en la muerte, en la efímera naturaleza de nuestras vidas y acciones. Pero hoy, hoy es esa combinación.

En particular me sorprende la habilidad que tenemos de paginar. Cualquier persona que haya estudiado memoria en computadoras sabe exactamente a lo que me refiero, pero para los que no, la explicación más sencilla* que se me ocurre es la siguiente:

Imagina que tu computadora tiene espacio (memoria) para correr 3 programas al mismo tiempo. Pero tú, usuario multitarea con variadas actividades en tu idea, necesitas 4. Qué puede hacer tu computadora? Pedirte más RAM? No, claro que no. En vez de eso, se la pasa haciendo malabares. Si necesitas programa A, B y C al mismo tiempo ahorita, entonces manda al programa D al aire. El aire, en esta analogía, es el disco duro (almacenamiento, que no es lo mismo a memoria). Si el siguiente instante necesitas a B, C y D, la computadora toma a D del aire, y manda a A a volar. Y así, malabares, todo el tiempo.

Los últimos días, y de manera completamente involuntaria, he estado recuperando páginas que estaban en el aire (léase: en almacenamiento) desde hacía años. Los catalizadores han sido variados: música vieja, el sonido de las olas, algún episodio repetido de alguna serie. Lo interesante no es eso, desde mi perspectiva. Es esa maravillosa habilidad de nuestra mente de enterrar contextos completos. Porque cuando me refiero a que he estado recuperando páginas, no me refiero a pedacitos de recuerdos. Me refiero al estado mental que tenía en aquellos momentos. Recuperar el Zeitgeist, como dijeran los alemanes.

Me ha hecho reflexionar sobre muchas cosas. Las decisiones tomadas. Los planes a futuro. Le da un contexto importantísimo a mi condición actual. Todo esto lo agradezco.

Pero, atrás de todo eso… awe.

* Sí, ya sé que la paginación no trabaja sobre espacios de memoria de procesos completos. Ni la analogía ni la explicacion simplificada se benefician de este conocimiento.

Verificar status de aliases de Apache

Hace poco hice una migración de un servidor que, entre otras cosas, tiene un Apache con numerosos aliases. Para verificar que los aliases estuvieran “arriba”, solo hace falta un poco de magia, también conocida como awk y curl:

grep Alias /ruta/a/configuracion/apache | awk '$1 !~ /#/ {print $2}' | xargs -I {} curl -sL -w "%{http_code} %{url_effective}\n" SERVIDOR.COM/{} -o /dev/null;

hattip curl

De hackers, crackers y editores flojos

Andaba navegando por el twittverse cuando me encontré con una nota referente a la psique de los ‘hackers’. “Fabuloso,” pensé. “Una deconstrucción de los clichés referentes a los intrusos informáticos.” Ja. Ja. Y más ja.

La joyita más importante está a la mitad del artículo:

Las ganas de explorar son el combustible por excelencia y muchos solo quieren romper los sistemas a los que ingresan. A estos la mayoría les dice hackers, pero el término adecuado es crackers. Suelen hacer colapsar servidores, infectar computadoras, entrar a zonas restringidas y crear botnets, es decir, ‘ejércitos’ de computadores ‘zombies’, que hacen lo que ellos les ordenan, como atacar un sitio web.

Yay! Paz y buena voluntad a los hombres de eltiempo.com! Excepto que, no. En el siguiente párrafo:

El nacimiento de Anonymous, la organización de hackers que en su momento hizo colapsar páginas de la talla del FBI o de Visa y MasterCard[…]

Ex-fucking-cuse me? Buuuu al editor!!!

Ese es el maldito problema con estos artículos. Preservan conceptos erróneos, y tergiversan el significado verdadero de las palabras. Primero, que un “hacker” es un cuate que sabe utilizar herramientas para vulnerar sistemas. Nel, mil veces nel! Conozco pocos hackers en persona (el equipo completo del Giraffe Chapter califica) pero sé bien quienes *no* son hackers. “Tirar” un servidor no te hace hacker. Sacarle la contraseña de red inalámbrica al vecino tampoco. Y borreguear, menos. Lo que más me molesta, supongo, es que los verdaderos hackers ya no tienen término. “Gurú” no hace justicia: hay gurús que no producen soluciones (i.e. “hackear”). Tampoco “experto”; muchas personas utilizan la etiqueta cuando no tienen el mínimo derecho a ella, y la vasta mayoría son consultores – donde lo que menos se hace, es hackear. Cobrar, eso sí; hackear, terriblemente poco. Y, obviamente, los que verdaderamente merecen la medallita salen perdiendo – porque en el miasma de las TIC (creo que me siento sucio nomás de escribirlo) es difícil distinguir a los elementos valiosos. Bueno, a veces hasta es difícil distinguir a los competentes…

Segundo, que Anonymous es una organización. Esto es un problema ligeramente más grave, porque preservar esta concepción es precisamente el problema de aquellos que pelean contra sus ataques. Creen que hay líderes que derrocar, sistemas centrales que neutralizar, herramientas que identificar. El LOIC es *una* de muchas. Aquí unas cuantas, apenas para DDOS. Y en realidad, ninguna es una “herramienta Anonymous”; mañana sale un plugin para que sirva para XSS, y presto – otra más al arsernal. Arrestan a 7 miembros; 70 más salen de salones de clase, cubículos de oficina, etc. Apagan 3 servidores IRC; mañana publican otros 10 – incluso en otro protocolo, tal vez más seguro, tal vez menos detectable. La inercia y el conformismo de los “expertos” en seguridad es lo que preserva su fuerza.

Quieren derrotar a estos “hackers” y su “organización”? Empiecen a formarse una imagen más propia de lo que en realidad son. El grueso, script kiddies. O acarreados. O ambos. El “miembro” promedio de anonymous no es más hacker que el pajarito de Homero. Y dejen de pensar que están viviendo su propia versión de “Takedown”. Fortalezcamos nuestros sistemas; hagamos consciencia de seguridad. Invirtamos (sí, ni modo) en equipos, si no tenemos el expertise para cubrirnos. Véanlo de esta forma: Anonymous es el equivalente digital de las marchas que acongojan nuestras ciudades casi diariamente. Sí, hay marchas estúpidas. Sí, nos joden la vida a todos. “Use vías alternas” es el credo, no “atropéllenlos a todos.”

Y sí, el próximo miembro de Anonymous que me demuestre que tiene “ganas de explorar” será el primero. La mayoría ni siquiera prueba las múltiples opciones de las herramientas 🙁

¿Porqué necesitas usas diferentes contraseñas en cada sitio y servicio?

Seguro has escuchado ese mantra:

“Para cada página web, para cada servicio que utilizas, es necesario utilizar contraseñas diferentes”

A la gente le *purga* escuchar esto. “A duras penas me acuerdo de mi contraseña “de siempre”, y tú quieres que use varias? Vete al cuerno.” La verdad es que existe una sencilla y poderosa razón para recomendar esto. Y va, como mantra secundario:

Lo que pasa con nuestras contraseñas en internet no depende de nosotros

A qué me refiero? Seguro escucharon de la vergüenza que pasó Sony el año pasado. En resumen: unos malos muy malos se metieron a sus servidores, y se robaron las contraseñas y datos de contacto (dirección, teléfono, correo electrónico) de *77 millones de usuarios* de la PlayStation Network. Ah, y también tiraron la tal PSN por casi un mes.

Bueno… y eso qué tiene que ver? Pues muy sencillo. Armado de una dirección de correo electrónico y una contraseña, no es difícil para un atacante investigar en múltiples servicios, para determinar si en alguno de ellos el usuario utilizó la misma contraseña. Y efectivamente esto pasó: cientos de reportes surgieron en internet acerca de múltiples otros servicios vulnerados. Por utilizar la misma contraseña.

Las consecuencias pueden no ser fáciles de vislumbrar, pero ahí va un posible camino: obtengo tu contraseña y tu correo. Si usas *esa* contraseña en tu correo, tengo acceso a tu correo. Con tu correo, puedo obtener acceso a tu facebook, twitter, etc. Puedo hacerme pasar por tí. Con un poquitín de suerte, puedo obtener suficiente información personal tuya (digamos, escribiéndole un correo a algún familiar desde tu cuenta de correo) como para fingir ser tú en el “mundo exterior”. Y mejor no le sigo, tanto por no dar ideas, como para no asustar de más… creo que basta con esa idea.

Y si crees que esto solo pasa una vez en la década, estás equivocado. Lamentablemente, los programadores también son personas, y muy lamentablemente, cometen errores. A veces garrafales. Es tremendamente común descubrir que páginas web que manejan usuarios y contraseñas (hoy en día, casi todas) no las manejan de manera segura; ni siquiera con tantito cuidado, vamos. Hay más carnita en ese tema, pero será objeto de… otro post.

Bueno, cómo le haces para recordar todas esas contraseñas? Hay programas que te ayudan. Keepass es una excelente opción si solo utilizas contraseñas en tu computadora; trabaja con Linux, Windows, Mac, etc. Si quieres algo un poco más universal, LastPass admite teléfonos móviles y hasta puedes configurar una memoria USB para servir como token, aunque para todo eso te cuesta extra. Pero opciones hay…

Contraseñas seguras: porqué más es siempre mejor

Seguramente, al registrate en un sitio web, banca electrónica, o cualquier otro servicio que solicite contraseña, has encontrado un mensaje como el siguiente:

La contraseña debe contener al menos 8 caracteres, pero no más de 12, y debe incluir al menos una letra y un número

(Ciertamente es una pobre política de contraseña segura, pero se entiende el ejemplo)

¿Porqué es esto? Bueno, es probable que hayas escuchado que esto hace más segura a tu contraseña. Pero… es cierto esto?

Dejemos de lado por un momento la posibilidad de que alguien se robe tu contraseña directamente de los servidores del sitio (eso es tema para otro post, coming soon). Supongamos que lo que queremos evitar es que alguien la “adivine”. Seguramente, gatito33 es lo suficientemente “diferente” para que alguien la adivine (a diferencia de, digamos, “gatito” a secas). Y probablemente estaremos en lo cierto, si por “alguien” nos referimos a un humano común y corriente. El problema es que, cuando alguien quiere obtener tu contraseña, usualmente no se la pasa adivinando y probando manualmente una por una (sí hay casos así, pero, a diferencia de lo que Hollywood nos quiera hacer creer, son los que menos nos preocupan). No, la preocupación mayor es lo que se conoce como un ataque de fuerza bruta.

Mediante este método, un atacante puede intentar adivinar miles (dependiendo de los recursos de cómputo a su disposición, puede ser millones) de contraseñas por minuto. Evidentemente, tiene que probar todas las combinaciones. Por ejemplo, si quisiera yo adivinar una contraseña de 4 caracteres o menos que utilice sólo letras minúsculas, tendría que probar:

a
b

z
aa
ab

az
ba

zz
aaa

zzzz

Si mi contraseña es “gato”, estará en esa lista. Y… cuántas son las que tiene que probar? Si recuerdas tus clases de probabilidad y estadística, esto se calcula fácilmente. Son todas las permutaciones de las letras del alfabeto en 4 lugares – o, en fórmula: 26^4 (26 elevado a la cuarta potencia). Esto es, 26*26*26*26, o bien, 456,976. Un numerote.

Pero, si dijimos que un atacante puede adivinar miles (o, en casos extremos, millones) de contraseñas por minuto, cuánto tiempo puede tomarle adivinar mi pequeña contraseña? Muy poco. Digamos que un atacante puede intentar un millón de contraseñas por minuto. En menos de 30 segundos, ya tendrá mi contraseña.

Uff! Entonces una contraseña de 8 caracteres será mucho más segura, no? Efectivamente. Y más del doble, de hecho. Consideremos que para adivinar una contraseña de máximo 8 caracteres, la fórmula sería:

26^8 = 208,827,064,576 = Doscientos ocho mil ochocientos veintisiete millones (!) y fracción.

Nuestro mismo atacante tardará… pues 208,827 minutos en adivinar esta contraseña. Lo cual es igual a… 145 días. Más de 4 meses. Caray, pero nuestro estimado de un millón por minuto puede ser bajo. Las botnets permiten controlar miles de computadoras a la vez! Démosle más ventaja a nuestro atacante. Supongamos que puede calcular 1 millón de contraseñas *por segundo*. De ser así, calcular todas las contraseñas de máximo 8 letras le tomaría 2.4 días.

NOTA: Hay que considerar que las políticas de contraseña, sin embargo, no suelen decir “de 1 a 8 caracteres”. No, en realidad dicen algo así como “mínimo 6 y máximo 10 carácteres”. Si solo utilizaramos letras, las posibilidades son 26^10 – 26^6 = 1.411667867×10^14 = un numerototote (141 billones y fracción). De ahora en adelante seguiremos con estas consideraciones.

Pensemos ahora en la política de contraseña arriba descrita: “La contraseña debe contener al menos 8 caracteres, pero no más de 12, y debe incluir al menos una letra y un número”. Esto significa que nuestra base (el 26) cambia, porque ahora consideramos las letras (26) y los números (10). Entonces nuestra fórmula sería: 36^12 – 36^8 = 4.738378517×10^18 (o bien, 4.7 trillones). Nuestro atacante (el de un millón de contraseñas por segundo) debería pasar 150,252 AÑOS intentando obtener nuestra contraseña, de todas las posibles.

Ahora, un poco de matemática aburrida (y no, lo de arriba no fue matemática aburrida). Si ya estás por dormirte, sáltate el siguiente párrafo, y lee las conclusiones.

Nótese que cada que agregamos un nuevo caracter (es decir, aumentamos el tamaño de la posible contraseña) disparamos exponencialmente el tamaño de la contraseña; no así cuando aumentamos el tamaño de la base (el crecimiento es más bajo). Esto cimenta la teoría de que es mejor utilizar contraseñas largas (ej. “estaesunacontraseñalargaquenosepuedeadivinarfacilmente” – 26^55) que una contraseña más corta pero con más caracteres (ej. “U7w!5q3qw&” – 60^10 considerando 8 símbolos especiales), en particular porque a la persona promedio se le hace mucho más sencillo recordar la frase que el garabato del segundo ejemplo. Más fácil de recordar + más difícil de vulnerar es una muy buena combinación 😉

El punto es: usa más en tus contraseñas. Si vas a utilizar contraseñas cortas (nunca abajo de 8, pero no superiores a 10 o 12 caracteres) es *imprescindible* que utilices letras mayúsculas, minúsculas, números, y símbolos especiales. Si no te gustan esos garabatos, utiliza contraseñas MUY largas, de más de 20 o 30 caracteres. Una forma fácil es utilizar frases, quitando espacios, acentos y puntuación. Por ejemplo:

“El respeto al derecho ajeno es la paz” –> elrespetoalderechoajenoeslapaz ==> 26^30.

Y, por supuesto – no olvides cambiarla con frecuencia. Buen consejo para la ropa, buen consejo para las contraseñas 🙂

Configuraciones APN Telcel

Post original aquí

INTERNET 3G

Nombre: Mexico: Telcel: Internet (a gusto del usuario)
APN: internet.itelcel.com
Proxy:
Puerto:
Nombre de usuario: webgprs
Contraseña: webgprs2003
Servidor:
MMSC:
Proxy de MMS:
Puerto MMS:
MCC: 334
MNC: 020
Protocolo de autenticación: PAP
Tipo de APN:

MENSAJES MULTIMEDIA MMS

Nombre: Telcel: Mensajes Multimedia (a gusto del usuario)
APN: mms.itelcel.com
Proxy:
Puerto:
Nombre de usuario: mmsgprs
Contraseña: mmsgprs2003
Servidor:
MMSC: http://mms.itelcel.com/servlets/mms
Proxy de MMS: 148.233.151.240
Puerto MMS: 8080
MCC: 334
MNC: 020
Protocolo de autenticación: PAP
Tipo de APN: mms

CONFIGURACION WAP GPRS

Nombre: Telcel GPRS (a gusto del usuario)
APN: wap.itelcel.com
Proxy: 148.233.151.240
Puerto: 8080
Nombre de usuario: iesgprs
Contraseña: iesgprs2002
Servidor: http://upaapps.telcel.com:8582/telcelwap.wml
MMSC:
Proxy de MMS:
Puerto MMS:
MCC: 334
MNC: 020
Protocolo de autenticación:
Tipo de APN: default

Gmail desde consola (UNIX) con mutt

Instalas mutt:

apt-get install mutt

Configuras mutt (usualmente, .muttrc en tu home):

set from = "user@gmail.com"
set realname = "Guillermo Garron"
set imap_user = "user@gmail.com"
set imap_pass = "password"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed ="+[Gmail]/Drafts"
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set smtp_url = "smtp://user@smtp.gmail.com:587/"
set smtp_pass = "password"
set move = no
set imap_keepalive = 900

(nota: imap_user e imap_pass no son necesarios para envío).

Envías correo:

mutt -s "Subject" [direccion] {direccion 2} {...} {-a "Adjunto"}

o bueno, con la redirección del cuerpo.

Originalmente publicado el 2 de Diciembre de 2011

“Late” night crusin’

What I want, you've got
But it might be hard to handle
Like the flame that burns the candle
The candle feeds the flame yeah yeah
What I got -- full stock of thoughts and dreams that scatter
And you pull them all together
And how I can't explain oh yeah
Well well you (ooh ooh ooh ooh) you make my dreams come true (you you) you
(you you)

Ok, no es un “code”…

He aquí unas verdades fundamentales de la vida:

– Conforme avanzas en edad (y rutina, y responsabilidad), te cuesta más trabajo desvelarte.
– Conforme avanzas en edad (y rutina, y responsabilidad), más te gusta desvelarte.
– Desvelarte es la ÚNICA (acentuado para no tener problemas de copyright con la FI) manera de programar algo que valga la pena.

Ergo… conforme avanzas (bla bla bla), más te gusta programar (WTF, old dude?). O al menos buscar la solución a los problemas computosos. Estúpido moodle, pero a la vez bello moodle.

Por cierto, me gustaría saber cuáles son las mejores canciones para programar. Tengo propuestas:

– Orbital: Halcyon (and on and on). Está en mi iPod como “Mortal Kombat Symphony” porque el soundtrack me lo bajé de interné y no tenía el nombre de las canciones. Y se callan, MK es la neta… Tiene dos grandes cosas a su favor, esta rola: no tiene letra (salvo algunos cánticos medio ballenescos) y es laaaarga. Muy buena por si tienes chance de poner una y ya.
– The Dandy Warhols: Bohemian like you. “oooh-ooh oooooooh!” Por cierto, WTF significa “I’m feeling bohemian like you”? Obviamente los grititos son buenos para celebrar una línea particularmente inteligente, o haberle entendido a la documentación finalmente (quién diablos se imagina que String.Format toma CUALQUIER OTRA COSA SALVO UN STRING COMO PARÁMETRO en ciertos casos? O sea, digo, no mamen…)
– Héroes del Silencio: Apuesta por el Rock ‘n Roll. “Y no sé si nací para correr… pero quizás sí que nací para” compilar? Geeky as fuck. Y también porque no hay lista de mejores canciones sin Bunbury. Eso me recuerda: el dolor en la planta del pie es 1) pie plano, 2) plantar fasciitis (como se diga en español), 3) gordura extrema, o 4) psicosomático?
– Smash Mouth: Walkin’ on the sun. Igual es porque así van saliendo en el iPod, entre 7 millones de canciones inútiles (por cierto, qué será mejor? Limpiar tu música de todo lo que no te GUSTA TREMENDAMENTE, tener un segundo dispositivo para esas canciones que son doubleplusgood, o resignarte a la diversidad?) De cualquier forma, si puedes cantar la canción y seguir programando sin poner “INSERT INTO fashion will be smashing WHERE the true meaning” ya la hiciste… igual es para rondas dobles de programación.
– Edward Maya, Vika Jigulina (really? Jigulina??): Stereo Love. Y en la misma idea:
– Röyksopp: Follow my ruin. Esta la conocí en el taller de Yopas. Me cae que no me gusta la electrónica (o dance, o house, o techno, o como les digan hoy en día – y casi puedo apostar que estas dos no son del mismo género. Fuckers), pero de repente como que sí. Igual es porque parecen un loop de lo mismo y entonces no te distrae tanto. Pero si un loop musical te traba en un loop mental??? Qué entonces, carajo?! Igual ya es la hora.

Se aceptan sugerencias…

P.D. Sí, el último post estuvo muy raro. Juro que no nació de un motazo…