lunes, 16 de julio de 2007

Programas esenciales para Windows

Alex3D [ale_galguera@yahoo.com]

Analicemos esos programillas que siempre vamos encontrando aquí y allá, pero poco a poco se van quedando, pues volvemos a usarlos tras cada nueva instalación de Windows. Pero antes que nada quisiera aclarar que a pesar del tíitulo del artículo, la selección de estos programas es relativa y depende de los beneficios y comodidades que les puedan otorgar a cada usuario, así que más bien se refiere a los programas que me son muy útiles y que nos podrían hacer la vida más sencilla a todos los usuarios de Windows. Aclaro, además, que cualquier versión posterior de cualquiera de estos programas se sobreentiende que debe ser mejor.

La lista comienza:

Winrar 3.x

http://www.rarlab.com
Creo que sobran descripciones o halagos para esta increíble herramienta de compresión y descompresión tan eficaz.

Klcodec

No es un programa, sino un super paquete de códecs de video y sonido, con el que se pueden ver todos los archivos multimedia sin problemas. Lo mejor que tiene es que instala el Windows Media Player Classic, que no es muy bonito, pero cuando hay un programa tan robusto como este reproductor de videos, música imágenes y hasta SWF, sobra la pacotilla. Además, este paquete ofrece la opción de desinstalar cualquier otro códec instalado en el sistema y que pueda dar conflictos con el nuevo que se instalará.

VCL

http://www.videolan.org
Excelente reproductor de video. Particularmente, prefiero la sencillez del Windows Media Player Classic, pero el VCL increíblemente reproduce cualquier cosa ¡siempre!; viene a ser el Superman de los reproductores cuando se encuentren con algún filme que no haya Dios que lo reproduzca. Ya saben que la solución es ésta.

Daemon tools

http://www.daemon-tools.cc
Este complemento no es más que una torre virtual de CD/DVD con la que podemos montar nuestros ISOs o imágenes de CDs o DVDs. A partir de la versión 4.0 posee una función pasiva que permite saltarse algunas protecciones existentes en algunos discos originales de juegos. No creo que halla algún gamer que no lo tenga.

Clone CD

http://www.elby.sh
Fácil e intuitiva herramienta para crear imágenes de discos. También posee otras funciones para quemar o borrar CDs o DVDs, aunque no es tan abarcadora como el Nero, pero sí muy eficiente.

VoptXP

http://www.goldenbow.com
Para los que odian al necesario, pero lento desfragmentador que trae por defecto el XP, ésta es la mejor solución. Consiste en una herramienta visualmente sencilla pero eficaz, que hace un mapeo de los sectores del HDD con suma rapidez. Definitivamente no puede faltar en nuestra colección.

Effective File Search

http://www.sowsoft.com/search.htm
Super herramienta para búsqueda de ficheros en nuestra PC. Desde que la descubrí no he usado más el perrito de XP. Es varias veces más rápido, tiene opciones de búsqueda por carpetas e incluso puedes especificar varias en dónde buscar; tiene búsquedas por elementos y textos dentro de un fichero, pero la velocidad es la característica más impresionante. No usa indexación como el GoogleDesktop.

Mozilla Firefox 2.0.0.4

http://es-AR.www.mozilla.com/es-AR/firefox/
El navegador web por excelencia, que está ganando mucho terreno frente a sus rivales, incluyendo al monopolizador Internet Explorer. Es bueno, bonito y barato, como dice el dicho. Lo de barato porque realmente es gratis: sus add-ons y plug-ins están disponibles en su web para descárgalos sin pagar ni un centavo ni verse en la necesidad de piratearlos. Muy veloz y potente, libre de errores, en fin, una muy buena opción para la navegación web. Es freeware bajo licencia GNU.

Notepad++

http://notepad-plus.sourceforge.net
Este programa es el mejor editor de texto que puede utilizar un programador. Cuenta con la opción de abrir varios documentos y manejarlos por pestañas; admite muchísimas extensiones, pero lo mejor que tiene es la versatilidad con los lenguajes de programación, de los cuales reconoce muchísimos y, según corresponda, podemos ver el código fuente su formato específico, distinguiendo variables y funciones. Es freeware bajo licencia GNU.

Star Downloader Pro

http://www.stardownloader.com
Muy buen gestor de descarga. Tiene las mismas funciones que los convencionales; es rápido y manuable, se adapta a casi cualquier navegador y posee opciones de descarga completa de webs, además no acarrea nada de pacotilla y se puede configurar para usarlo a pesar de una conexión con proxy (ej: Infomed). Se adapta al Firefox con un add-on que se le instala a este último, llamado Flasgot (http://flashgot.net).

Copy Handler

http://www.copyhandler.com
Excelente gestor de copia para Windows, se pueden poner copias en una cola, pausarlas y priorizar elementos. El programa se integra automáticamente con el sistema operativo; si Windows tiene algún error o se reinicia, retoma la copia en la próxima carga del sistema. Todo esto a una buena velocidad y con confianza.

Unlocker

http://unlocker.softonic.com
Esta pequeña aplicación que tiene una función muy útil cada vez que nos encontramos con un fichero que no se puede borrar, una memoria flash que Windows no deja extraer o, en términos generales, algún proceso, fichero o programa que se encuentre ocupado por otro en un momento determinado. Es una herramienta de respaldo muy buena y necesaria. Me ha servido más de una vez para descontaminar Windows de algún que otro virus.

HDDlife Pro

http://www.hddlife.com
Este software fue quien me convenció de buscar un ventilador (fan) para el disco duro al percatarme de las altas temperaturas que éste alcanzaba en nuestro cargado clima. Entre sus funciones se encuentra la de mantenerte alerta acerca de las condiciones de tu unidad de almacenamiento magnética, o sea, el HDD, colocando un icono en la barra de tareas que informa sobre la temperatura. También comprueba otros factores y te alerta sobre su estado crítico. Es una buena forma de estar preparado contra la pérdida de nuestra valiosa información.

Space

http://www.moontown.net
Siguiendo con la temática de los discos, me imagino que muchos han tenido la sensación de impaciencia cada vez que hacen un clic derecho sobre el símbolo de una partición en el Explorador de Windows para conocer el espacio libre que nos queda. Pues este complemento nos brinda rápidamente esa vital información sin siquiera abrir el explorer. Al ejecutarlo, sin necesidad de instalación previa, nos muestra el espacio libre de cada partición en una cómoda ventanita en miniatura, la cual se esconde sólo con doble clic.

Xplorer2

www.zabkat.com
Cuando descubran las potencialidades de este programa, no querrán volver a ver el Explorador de Windows. Entre las funciones de esta aplicación se destaca la posibilidad de administrar pestañas, en lugar de tener muchas y tediosas ventanas; nos permite dividir una ventana en dos mitades para, por ejemplo, hacernos la vida mas fácil al copiar de un lugar a otro; es capaz de recordar los lugares que recorrimos a través de nuestros discos; permite la navegación jerárquica -o por niveles-, simplemente clickeando el nombre de la carpeta (como en el Konqueror); se pueden crear marcadores de carpetas, incluso con combinaciones de teclas; al querer renombrar un fichero sólo selecciona el nombre, no la extensión; muestra el espacio total libre de cada partición, sin importar dónde estés; permite mostrar el espacio de las subcarpetas; muestra una vista previa para ficheros de texto, imágenes, sonido y videos, además de vista en bloques hexadecimales para binarios; es 100% portable, ya que ocupa alrededor de 260 Kb en un sólo archivo ejecutable. Con todas estas características y comodidades, junto con la rapidez con que administra nuestro espacio de trabajo, podemos clasificar a este software como uno de los mejores de su tipo.

Muchos otros programas faltarían, mas aquí no estoy contando las herramientas de trabajo que podrían ser muy especificas para un usuario en particular, ni tampoco otros de usos menos convencionales. Espero que esta modesta guía les sirva de ayuda a la comunidad BlackHat.

Continuar leyendo

Hacker

Alien [blackhat4all@gmail.com]

No es difícil escuchar por estos días a un joven, recién salido de una secundaria y con aspiraciones a estudiar carreras informáticas, hablando de querer convertirse en un hacker, colarse en un sistema remoto y romper 100 máquinas con un solo clic. Sin embargo, cuando uno se le acerca y le pregunta qué quiere decir "hacker", muchos se ven en la obligación de permanecer callados por desconocimiento a la respuesta.

Durante años se ha asociado la palabra hacker con un joven de rondando los 18 años, tez blanca, delgado, todo vestido de negro, con atuendos extravagantes, quizás con algún vicio o gesto repetitivo, pero, ¿es realmente eso un hacker?

En mis primeros años trabajando con computadoras, yo fui uno de esos mozos que creía que podía dominar el mundo sin haber leído textos realmente instructivos, sin haber programado aún mi primer "Hello World"; me llené la cabeza de títulos como: "Aprenda a hackear en 21 días", "Ser un hacker en 20 minutos", "Cómo ser un verdadero hacker", que, aunque al principio realmente me creía eso que de escribir con faltas de ortografía y hablar con jergas complejas para los no asociados a la computación, con el paso del tiempo y cientos de mensajes de error en varios lenguajes, me fui dando cuenta que escribir mal no me iba a ayudar a entender dónde estaba el error a la hora de compilar; comprendí que no era la vestimenta la que me iba a dar una reputación entre de mis compañeros, sino mis conocimientos; aprendí que eso de ser un hacker jamás lo aprendería de continuar así.

Hay cosas que para verlas mejor hay que verlas desde lejos. Muchos viven parte de sus vidas tratando de dar una imagen que no es real, codeándose (o tratando de hacerlo) con personas de cierta reputación, pensando que eso los va a ayudar a hacerse de una; pero al menos en este mundo digital las cosas funcionan de otra forma.

No vale de nada vestirse de negro, salir a la calle y caminar como si alguien te persiguiera, llegar a tu casa a altas horas de la noche y con un programa que ya ha sido creado por otro, escanear la red o enviar un mensaje anónimo a un amigo usando una aplicación dedicada para este fin; eso no es hackear, ni siquiera se acerca. A esas personas los verdaderos hacker les llaman lamer.

Ser un hacker va más allá, ser un verdadero hacker empieza desde que se está en la cuna y se siente curiosidad sobre cómo funcionan los muñequitos que mamá nos puso colgando del techo. Ser un hacker consiste en explorar los lugares más recónditos y prohibidos, es una ideología, una forma de vida, de pensar, de enfrentar los problemas. Un hacker no es el que se autodenomina a sí mismo como tal y trata a los demás con aires de grandeza, no es creerse Dios porque se ha hecho ping por primera vez; es sentir cada clic, poder entender cómo funciona un programa por dentro o al menos tener al curiosidad.

Cuando se comienza a tomar cierto conocimiento, muchos creen que la mejor forma de "mantenerse" en un estatus social propicio es no divulgar sus conocimientos, sólo guardados para sorprender a sus novatos colegas con cosas ridículas. Sin embargo, la mayoría de los recursos que hay en las redes están hechos o iniciados por hackers, por los de verdad, que no piensan que deban hacerle perder el tiempo a sus homólogos fabricando las mismas cosas, sino que ayudan a divulgar la información, porque saben que alguien allá afuera está esperando ese trozo de código para crear un programa realmente valioso, que puede solucionar los problemas de muchos. Un hacker comparte, porque sabe que es la forma más rápida de darse a conocer y ayudar a los demás, porque sabe que alguien le va a corregir algunos bugs en su código, y esto lo ayudará a ser mejor.

Un hacker debe tener un conocimiento básico sobre varios lenguajes de programación, incluyendo algún lenguaje script, y dominar completamente al menos uno de esos, puesto que esa es su herramienta fundamental. Hoy en día, que la mayoría de las cosas se hacen on-line, alguien que aspire a ser un hacker debe saber cómo trabaja la gran telaraña, cómo se busca, se encuentra, se entra y se sale de Internet.

Para los que se desean iniciar en este camino y no tengan los conocimientos fundamentales, les pudiera decir que empiecen escribiendo cositas, ya sean códigos o pequeños artículos que sirvan a otros como base de estudio o consulta. Creen programas, pero no los mismos; de nada vale hacer un editor sencillo de texto, el mundo ya tiene millones. Destáquense por sus iniciativas, por sus ideas revolucionarias. Hay muchas cosas interesantes y en computación no hay imposibles. Recuerden que nadie nace sabiendo, incluso los más famosos hoy en día empezaron desde abajo.

Los juegos son un entretenimiento para todos los que pasamos horas sentados frente a un monitor, pero, cuidado, alguien que empiece a trabajar en una computadora y tenga grandes expectativas puede ser atraído por los gráficos y desvirtuarse, perder su camino y terminar siendo un esclavo de las consolas.

En la inmensa mayoría de los casos, convertirse en hacker cuesta muchos sacrificios y años de vida; por lo general no se puede ver el cambio de la noche a la mañana. Un día serás una persona común y corriente, luego, a la mañana siguiente, ya te estarán llamando personas allegadas para pedirte algún consejo sobre algún texto que has puesto en la red. Después, sin darte cuenta, recibirás una llamada de algún extraño, al que le dijeron que tú podías ayudarlo, y así se sucederán hechos y cosas que levantarán tu nombre, hasta que un día cualquiera mirarás hacia atrás y verás que a lo largo del tiempo has acumulado una cantidad de información valiosa, y solo podrás recordar que un día empezaste haciendo un simple clic.

Para saber más...

Continuar leyendo

Unlocker

Krlo [blackhat4all@gmail.com]

El objetivo de este artículo es dar a conocer la existencia de una aplicación práctica y sencilla, capaz de aliviarnos la vida a todos los que usamos Microsoft Windows. Si conoces alguna otra aplicación que consideres interesante, puedes escribirnos un resumen, o un artículo y contarnos de ella.

Por cuestiones de seguridad, cuando un archivo es abierto, tanto por los usuarios como por una aplicación, el sistema operativo conserva una marca sobre el mismo para conocer de su estado. Este mecanismo permite que no eliminemos un archivo actualmente en uso. El problema llega cuando esta marca no se quita en su momento y el archivo sigue pareciendo en uso cuando en realidad no lo está.

El Unlocker es una sencilla aplicación que trabaja sobre la plataforma Windows, capaz de eliminar esa mal llamada marca que se adjunta a los archivos. No necesariamente tienen que ser archivos; el mismo problema lo presentan carpetas y memorias externas. Los siguientes ejemplos ayudarán a recordarnos estos problemas:

Error al intentar eliminar un archivo.

Error al tratar de sacar un dispositivo de almacenamiento USB.

Estos son otros ejemplos:

  • No se puede eliminar el archivo: Acceso denegado.
  • Ha ocurrido una violación de acceso.
  • El archivo de origen o destino parece estar en uso.
  • El archivo está utilizándolo otro programa o usuario.
  • Asegúrese que el disco no esté protegido contra escritura y que el archivo no se encuentre en uso.

¿Por qué el Unlocker es la solución?

Este programa detecta las aplicaciones que están utilizando estos archivos, y deshabilita su control sobre ellos.

¿Cómo usar el Unlocker?

Sin duda esto es lo más fácil. Después de instalarse, al hacer clic derecho sobre un archivo, carpeta o memoria externa nos aparece una nueva elección: Unlocker. Al seleccionarla aparece una ventana de diálogo similar al de la siguiente figura con todas las aplicaciones que actualmente están utilizando el elemento seleccionado. Las opciones pueden variar en dependencia del caso, pero por lo general permiten eliminar procesos y quitar los cerrojos impuestos a los archivos y carpetas. El combo box es para indicar que el archivo ha de ser renombrado o eliminado, en caso de que el sistema no nos permita realizar la operación.

Cuadro de diálogo del Unlocker 1.8.5

Para saber más...

Continuar leyendo

Servidores en crisis

Alien [blackhat4all@gmail.com]

Desde hace unas tres semanas hemos estado presentando problemas con las suscripciones. Desde entonces se ha hablado de ello en cada edición, pero resulta ser que la situación se ha tornado tan tensa que hemos llegado al punto de no recibir ningún correo de nuestros lectores.

A lo largo de toda la vida activa de BlackHat, nos hemos esforzado por tratar, a diferencia de la mayoría de las empresas e instituciones, de dar una respuesta rápida a cada correo que se nos envía; tratamos por todos los medios de hacer que los que están subscritos sientan que no dejan caer sus peticiones o críticas en sacos sin fondo, en fin, que se sientan parte de la comunidad.

Por desgracia, no todos los organismos funcionan de la misma manera. Durante toda esta semana hemos llamado a los teléfonos que Infomed publica en su página de soporte técnico, que supuestamente son de atención a los usuarios, para pedir una explicación autorizada a los problemas que está presentando su servicio de correo electrónico.

Al no tener respuesta -por supuestos problemas telefónicos-, decidimos ir directamente a Infomed, que es el que suministra acceso de correo a más del 20% de nuestra comunidad. Al llegar, reclamamos de la forma más educada posible por los malos servicios que estábamos recibiendo, y con mucha calma se nos informó que la causa era el número creciente de usuarios a los que estaban brindándole servicio; la única forma de resolverlo, por cierto, era mediante la compra de más servidores.

¿No podían haber hecho pública esta situación? Verdaderamente no imagino la cantidad de personas que habrán reconfigurado sus cuentas de correo pensando que los problemas los tenían ellos, o a otros que habrán dejado de recibir información importante, ya sea de sus familiares o relacionada directamente con su trabajo.

Nunca he salido del país, pero sé por referencias que en otros lugares las empresas compiten por dar un servicio de óptima calidad, por otorgar acceso cada vez más rápido a la información; compiten por hacer más accesible las redes. En cambio, los que tienen conexión vía Infomed se habrán dado cuenta que cada día que pasa son menos las páginas por las cuales se puede navegar, cada año es menor el tiempo de conexión, y ahora, para colmo, el servicio es peor que cuando empezó. ¿Será que falta competencia o es que no son competentes?

¿Que le habría pasado a nuestro prestigioso Infomed -ganador en el 2002 del Premio Stockholm Challenge- de haber tenido tan siquiera la centésima parte de los clientes que tienen hoy AOL, Yahoo! o Gmail? ¿Es que no han visto sus directivos la necesidad de comprar nuevos servidores?, ¿será que nunca pensaron que podrían crecer hasta donde han llegado hoy?

No quisiera tener que cuestionarme mucho, pero es para mí algo completamente inconcebible cómo varios jóvenes, sin ninguna ayuda gubernamental, con mínimos recursos y, además, sin acceso directo a Internet, pueden mantener un proyecto de esta envergadura, lo divulgan, responden a todos los correos que se le envían y, además, brindan servicios gratuitos con los que cientos de personas pueden beneficiarse. Cosas que hasta hoy no han logrado -o querido lograr- algunas instituciones que gozan de cierto "prestigio".

No creo que un país bloqueado por la más poderosa nación del mundo, con limitados equipos tecnológicos y una tardía llegada a Internet pueda ocupar un lugar respetable en el ciberespacio mientras se restringe constantemente la información, y se piensa más de dos veces a la hora de adquirir de equipos con los que se puedan mejorar nuestros servicios.

La informática es una profesión en la que por lo general no se necesita hacer esfuerzo físico, a diferencia de otros campos; es más bien de ideas, de conceptos renovadores, de cambios radicales que conlleven a una mejora de las tecnologías y prestaciones. Pero mientras se mantengan pensamientos retrógrados, que se preocupan más por las limitaciones que puedan hacer antes de pensar en las nuevas oportunidades que deben brindar, será muy difícil llegar a tener una potente y real Internet bajo el dominio CU.

Para saber más...

Continuar leyendo

Optimizando código con GCC

Orestes Leal R. [orestesleal13022@cha.jovenclub.cu]

Primeramente un saludo a los lectores habituales de BlackHat, así como los nuevos que se suman a esta positiva iniciativa, pues sobre todo porque potencia el acceso a la libre información de la que "muchos" no disponen a diario, ni siquiera muy a menudo en nuestra Cuba de hoy.

Entre tantos temas posibles sobre los cual redactar en este inmenso mundo de software e implementaciones de GNU/Linux, pensé en varias cosas, sin embargo, la primera por la que me decidí fue por escribir el presente artículo y documentar algo no tan conocido por los usuarios novatos/intermedios de GNU/Linux. Me refiero a la optimización de programas a través de la compilación de los mismos con modificaciones en los "flags" del compilador GCC.

Algunos se preguntarán de qué me sirve y en realidad qué puedo ganar con ello; para dejarlo bien claro todo esto se resume así:

  1. Cuando compilamos un programa tenemos la oportunidad de optimizarlo.
  2. Optimizarlo para que se ajuste a las instrucciones (SSE1, SSE2, SSE3, por poner un ejemplo) presentes en un determinado procesador (ej: Pentium4).
  3. Lograr que el binario (ejecutable nativo de la plataforma) tenga un size "mucho" más reducido, menos consumo de memoria y mayor velocidad.

Con estos principios sobre la mesa vamos a repasar cómo podemos optimizar el software en nuestra distribución GNU/Linux preferida.

[ Flags del compilador ]

Viéndolo de una manera sencilla, los flags son opciones que se le pasan al compilador a modo de parámetros, las cuales él reconoce y toma acciones sobre ella. Lo importante es que al usar los flags de GCC tenemos muchas posibilidades de optimizar, por ejemplo, para uso diario normal o uso diario para desarrollo. Para ello se deben ajustar los flags y generar un binario con símbolos de debugging; esto último por citar un caso.

[ Flags por defecto ]

La mayoría de los programas y bibliotecas son compiladas por defecto en nivel de optimización 2 (un nivel normal) con las opciones -g -O2 del GCC. Hay que tener bien claro que la compilación de programas para Linux se basa en la GNU/ToolChain, unión de gcc/make/autoconf/libtool/automake y algunos más, por lo cual el 100% de los programas común y corrientes al menos incluyen un fichero Makefile (no siempre, pero generalmente el Makefile es generado después del proceso llevado a cabo a través del script configure, para que después el Makefile suela incluir los flags del compilador detectados por defecto, entre otras cosas). En este caso las pruebas las voy a hacer con el código fuente del reproductor Alsaplayer, versión 0.99.78.

Para comprobar lo antes dicho, he descomprimido el file con el código y, tras hacer un cd al dir, compruebo de hecho que el Makefile no existe. Esto ocurre primeramente porque Alsaplayer basa su construcción en una conformación clásica de las herramientas GNU que siguen los siguientes pasos:

  1. Configurar el árbol de las fuentes (configure)
  2. Crear un Makefile (sobre todo con los datos provenientes de makefile.in y makefile.am), con los flags detectados del compilador, linkeador, bibliotecas, etc.
  3. El Makefile generado tendrá una serie de reglas que le indicarán al compilador qué nivel de optimización tendrá el binario o bibliotecas (por defecto recuerden que es 02 en casi todos los paquetes de código fuente), contra qué bibliotecas se van a enlazar, los parámetros del enlazador (LD), reglas de limpieza del árbol, entre muchas otras incluyendo "siempre" los flags del compilador.
  4. Crear todo el código objeto y enlazarlo con "make" (en realidad el enlazado lo realiza el GNU LD, uno de los linkeadores más efectivos en la actualidad.

Esto es una mirada muy básica al proceso; en realidad es mucho más complejo.

[ CFLAGS y CXXFLAGS ]

Estos flags son claves. A través de ellos vamos a indicarle al compilador para qué procesador y el nivel de optimización con que deben ser compilados los sources.

CFLAGS:
Como lo indica, son los flags para el compilador de códigos fuente en lenguaje C.

CXXFLAGS:
Lo mismo, para C++.

Hay varias maneras de establecer los flags de GCC; sin embargo, la más sencilla y útil de todas es a través de variables de entorno, ya que configure las lee si estuvieran establecidas y agrega su valor a la variable CFLAGS en el Makefile final. Otra manera es editar el Makefile generado a mano y modificar las entradas CFLAGS y CXXFLAGS.

Dicho esto y como banco de pruebas, primeramente voy a configurar Alsaplayer sin flags para que detecte solamente lo que esté establecido por defecto. Corro configure de la siguiente manera:

./configure --prefix=/opt/alsaplayer-test

La salida más importante que nos interesa es la siguiente:

"checking for gcc optimization flags... -O2 -fexpensive-optimizations
-funroll-loops -finline-functions -ffast-math -Wall"

En ese momento se chequearon los flags de optimización de GCC, pues como mencionaba anteriormente casi el 100% de los paquetes se ajustan para la optimización en nivel 2, que es la común (todas las distribuciones de Linux basadas en i386 tienen este nivel de optimización para poder correr lo mismo en un 486 que en un Pentium4). Estos flags también se ven afectados por algunos parámetros definidos dentro del propio sistema de construcción de Alsaplayer, por ejemplo -funroll-loop (desenrollado de bucles) o -Wall (muestra todos los warnings o advertencias en el momento de la compilación).

Después finalizado el configure, un detalle importante es que se ha creado el Makefile que GNU make usará para llamar al compilador, enlazador y algunas utilidades necesarias; el detalle es que en la cabecera del nuevo Makefile se encuentra una línea como ésta:

# Makefile. Generated from Makefile.in by configure.

Esto no lleva mucha explicación, porque ya lo he mencionado: se ha creado Makefile desde el Makefile.in y el trabajo lo ha hecho el script shell configure.

Si vemos ahora el contenido de Makefile, podemos hacer una búsqueda de los flags del compilador que se han escrito en él. Exactamente las cadenas en cuestión son:

CFLAGS = -g -O2
CXXFLAGS = -g -O2

Aquí hay definido un nivel de optimización por default.

Seguido, ejecuto un make y make install para compilar y, finalmente, para instalar Alsaplayer en mi sistema y comprobar con estas optimizaciones qué size tiene el binario final, durante la compilación vemos líneas como éstas (se nota el uso de los flags inmediatamente):

"-Wall -g -O2 -D_REENTRANT -DADDON_DIR=\"/opt/alsaplayer-test/lib/alsaplayer\" -g -O2
-MT support.lo -MD -MP -MF .deps/support.Tpo -c -o support.lo support.cpp"

Una vez finalizado, la salida de un:

ls -lh /opt/alsaplayer-test/bin/alsaplayer | awk '{ print $5 }'

Luce así:

"791K"

Un size que no me gusta para nada, tratándose de un software tan pequeño. Dicho esto, vamos a ver cómo ajustamos los flags para generar un binario más reducido.

[ Estableciendo los flags ]

Lo primero es establecer la variable CFLAGS. Vamos allá y en este ejemplo voy a optimizar la generación de código para Pentium4.

export CFLAGS="-s -O3 -march=pentium4"

Aquí el nivel de optimización es el más alto (O3); nótese que no es CERO, sino la letra "O". Otro detalle es que optimizamos para Pentium4 y generamos código dependiente del procesador.

De por sí esto solamente no basta, vamos a setear CXXFLAGS así:

export CXXFLAGS=$CFLAGS

Esto quiere decir que CXXFLAGS va a ser igual al valor actual de la variable de entorno, ya establecida CFLAGS, o sea, las mismas optimizaciones. Vamos a comprobar en el shell:

echo $CFLAGS
echo $CXXFLAGS

La salida debe ser idéntica en los dos casos, ya que CXXFLAGS posee el mismo valor que CFLAGS. Hasta aquí ya estamos listos, para mi ejemplo voy a volver a compilar Alsaplayer con estas variables ya establecidas y a repasar el proceso a ver qué sucede. Para ello limpio el árbol de las fuentes de Alsaplyer con make distclean. Esto borra todos los códigos objeto, binarios, bibliotecas y elimina el Makefile generado, o sea, crea el entorno desde cero, limpio.

Corro el mismo configure de hace un momento:

./configure --prefix=/opt/alsaplayer-test-optimizado

Aquí lo diferente es que lo instalo en otro lugar para después poder ver la diferencia entre el anterior. Terminado el configure paso a analizar el contenido del Makefile generado. La variable CFLAGS luce así:

CFLAGS = -s -O3 -march=pentium4

y CXXFLAGS así:

CXXFLAGS = -s -O3 -march=pentium4

Si comparamos con la anterior podemos ver la diferencia, vuelvo a hacer make y make install y observo esta línea, por ejemplo:

" -s -O3 -march=pentium4 -D_REENTRANT -DADDON_DIR=\"/opt/alsaplayer-test/lib/alsaplayer\""

Donde de hecho, ya se están aplicando los flags.

El momento ha llegado y la salida de un:

ls -lh /opt/alsaplayer-test-optimizado/bin/alsaplayer | awk '{ print $5 }'

Luce así:

"163K"

Es, evidente la gran optimización que se ha producido, desde 791 Kb hasta 163 Kb.

Como ven son muchas las ventajas, pero no todo es así de sencillo; existen aplicaciones que no compilarán bajo estos flags de optimización, ya que sencillamente no están hechas para ellos. Lo que sí me provoca alegría es saber que mientras la versión precompilada de Apache2 me ocupa 1 Mb, el ejecutable del servidor, compilándolo de esta forma me ocupa sólo 200 Kb y encima me funciona igual de bien o mejor, sin el más mínimo problema.

Referencia de los parametros al compilador::

-s Es una opción del enlazador que quita todas las tablas de símbolos del ejecutable, entre otras cosas.

O3 Optimizar al más alto nivel, se genera código específico de la máquina.

O2Nivel de optimización por defecto.

Lista de parámetros para -march:

i386 Intel 386
i486 Intel/AMD 486
pentium Intel Pentium
pentiumpro Intel Pentium Pro
pentium2 Intel PentiumII/Celeron
pentium3 Intel PentiumIII/Celeron
pentium4 Intel Pentium 4/Celeron
k6 AMD K6
k6-2 AMD K6-2
K6-3 AMD K6-3
athlon AMD Athlon/Duron
athlon-tbird AMD Athlon Thunderbird
athlon-4 AMD Athlon Version 4
athlon-xp AMD Athlon XP
athlon-mp AMD Athlon MP
winchip-c6 Winchip C6
winchip2 Winchip 2
c3 VIA C3 Cyrix

Cada una de ellas son específicas a ese procesador, por ejemplo, si sólo se va a correr software sobre su máquina, es recomendado aplicarlas; sin embargo, si transporta software, digamos desde un P3 a un P4, no se deberían hacer optimizaciones, ya que el binario no funcionaría.

Espero que este artículo les sirva de mucho para optimizar su software a la medida de su PC.

Para saber más...

Continuar leyendo

Empleo de técnicas heurísticas en la protección de sistemas informáticos

ZorphDark [blackhat4all@gmail.com]

Disponer de una aplicación antivirus en el sistema operativo no es una excusa para librarse de una de las preocupaciones más comunes de todos los usuarios: los códigos malignos. Actualizar a diario las bases de datos que utilizan dichos programas para detectar la presencia de los virus, scripts, macros y troyanos analizados por las respectivas compañías de seguridad tampoco es razón para sentir alivio.

El hecho es que a medida que han evolucionado los sistemas antivirus, los programadores de "amenazas" han refinado su instrumental y sus algoritmos a un estado prácticamente inexpugnable. ¿Qué hacer al respecto? No se trata de mantenernos off-line o de aislar de todo soporte extraíble a nuestras computadoras; por suerte las empresas de protección informática intervienen con nuevas técnicas para quitarnos más de un dolor de nuestras cabezas -a precio de costo, por supuesto. Pero aún así, mantenernos en un estado pasivo frente al mar de hostilidades puede provocar la permeabilidad de nuestros datos. Tomar nuestras propias decisiones, seleccionar el sistema contra este tipo de riesgo que más se ajuste a nuestras necesidades y configurar adecuadamente sus características es un factor imprescindible si se quiere lograr el efecto bunker que todos deseamos. Para saber el por qué, primero comencemos como aedos a narrar crónicas; después, ya listos, ocupémonos de accionar nuestras defensas.

Un poco de historia::

Los sucesos son interesantes, ya que desde sus orígenes los virus han causado asombro, pánico y decepción. Con la difusión de ideas "alternativas" en la mente de muchos programadores a mediados de los años '80, la proliferación de los virus informáticos se hizo indetenible. Las causas de estas actitudes fueron muy variadas; abarcaban tanto el afán de diversión e imitación de las historias de hackers como el placer de acceder y/o destruir información ajena. Los usuarios de PC siempre vieron esta última amenaza bastante lejos de sí mismos hasta que el 2 de noviembre de 1988, en medio de las campañas publicitarias que llevaba a cabo las proveedoras de los Estados Unidos para ampliar el número de clientes que pudiesen potenciar económicamente su red, el adolescente Robert Tappan Morris -hijo de un prestigioso experto en seguridad informática de la NSA- introdujo un gusano en ARPAnet que logró infectar en pocas horas a más de 6000 servidores de todo el planeta, dejando a una gran parte de ellos fuera de servicio, incluso durante varios días.

Los efectos repercutieron en los medios de difusión de todos los continentes, iniciando una nueva era de enfrentamientos donde los creadores de virus comenzaron a jugar el papel antagónico, desafiados desde el otro lado por la feroz competencia entre las nuevas y viejas empresas que aprovechaban el momento para hacer eco de su solución contra dichas infecciones. Los virus ya no eran transmitidos solamente por disquetes, discos compactos o redes locales; tenían la capacidad de propagarse a través de miles de kilómetros en unos pocos segundos.

Ese mismo año, en el Palacio de las Convenciones de la Ciudad de La Habana, todos los participantes de un evento de informática fueron testigos de quizás el primer virus que infectara una computadora en nuestro país. Con la disminución de los costos de conexión, la privatización de Internet, y la explosión de la World Wide Web a lo largo de la década de 1990 en los demás países del orbe, el fenómeno se tornó más preocupante -y cotizado-, por lo que se necesitó dotar a los productos antivirus de mayores prestaciones.

Técnicas de detección::

Actualmente las grandes compañías de seguridad informática que desarrollan herramientas a nivel de usuario y a nivel empresarial no se limitan a ofrecer solamente protección antivirus, sino que cada vez amplían más las fronteras hacia otras áreas críticas, como la detección de spywares, dialers, web scripts, spam, intentos de phishing y ataques de intrusos a través de las redes. Para ello se utilizan técnicas generales que podrían ser clasificadas de la siguiente forma:

  • Detección Reactiva: se basa en la verificación de las firmas de virus y el análisis comparativo con el recurso examinado. Este es el método tradicional de detección, muy útil cuando se trata de programas malignos catalogados por las bases de datos de la aplicación antivirus. El principal inconveniente es que se debe mantener actualizadas las firmas de virus y depender de la rapidez con que su productora capte nuevas amenazas, las analice y distribuya la renovación de las bases. Dicho proceso puede durar unas pocas horas o meses, en dependencia del estado de difusión del virus y del nivel de retroalimentación de la empresa con cada uno de sus usuarios.
  • Detección al acecho: supervisa el comportamiento de cada servicio o programa en ejecución para determinar que sus rutinas cumplan con la disposición de niveles de ejecución establecidas por los parámetros del sistema antivirus. La sobreescritura de archivos, el acceso no autorizado a puertos de conexión, la apertura de pop-ups, entre otras conductas, son penadas por las reglas de defensa en cuestión y pasan a ser diagnosticadas por el módulo que corresponda.
  • Detección heurística o proactiva: es la técnica por excelencia para la detección de nuevas amenazas que, según afirma Andrew J. Lee, "es un concepto muy amplio y no existe una definición acordada entre los fabricantes antivirus, pero básicamente describe un rango de técnicas predictivas para detectar nuevo software malicioso sin la necesidad de liberar una actualización".

comprendiendo los métodos Heurísticos::

Dediquémonos entonces a asimilar algunos conceptos y características fundamentales de las técnicas heurísticas actuales, aunque no con el detalle que quisiéramos, porque en realidad a las empresas no les gusta argumentar estas tecnologías fuera del ámbito publicitario -no sea que alguien les vaya a "robar" sus ideas.

No siempre las firmas de virus que utilizan los módulos de detección pueden ayudar a capturar un código malicioso, debido a los problemas referidos en el acápite de detección reactiva. Por ello es necesario acudir a nuevas técnicas para enfrentar tanto los más poderosos como los de nueva aparición. El empleo de la heurística permite cientos de ventajas muy valoradas en el ámbito de la informática, entre las que se destacan:

  • Eficiencia de algoritmos de búsqueda: realizar inspecciones exhaustivas de cada uno de los archivos candidatos no constituye la vía más eficaz en un examen de detección de virus. Tanto aquellos que se insertan en un ejecutable como los que consisten en simples scripts, contienen en su código firmas genéricas que pueden utilizarse para agrupar familias de virus, aislar nuevas variantes o marcar el archivo como infestado. Es común adentrarse en búsquedas profundas, cubriendo diversos niveles de complejidad, cuando por métodos proactivos se puede reducir el factor de ramificación al más óptimo y eficiente para un caso -o categoría- en particular.
  • Comprobación de rutinas CRC: los módulos de muchos sistemas de protección por lo general crean una o varias áreas protegidas donde guardan identificadores especiales correspondientes a cada uno de los archivos previamente analizados. Generados mediante complejos algoritmos matemáticos, estos códigos almacenan una analogía simplificada de la estructura del fichero inicial, posibilitando la subsecuente verificación de su integridad.
  • Desensamblaje y desempaquetamiento: siguiendo la agresiva filosofía de atacar como mismo se es atacado, los antivirus modernos emplean heurísticas capaces de obrar de forma similar a los códigos maliciosos para poder llegar a detectar a los más escurridizos y reducir el tiempo de análisis de los archivos binarios. Se trata de desensamblar ejecutables para poder obtener el código fuente en lenguaje Assembler, así como revelar posibles focos empaquetados en herramientas como UPX o almacenados en RAR, ZIP o demás algoritmos usuales de compresión. De esta forma se puede capturar infraganti a virus comunes -e incluso polimórficos- que se alojen en hoyos imposibles de detectar empleando otros métodos.
  • Reconocimiento de código compilado: de no ser posible el examen intrínseco de un archivo cifrado o ensamblado con técnicas avanzadas que los antivirus no pueden detectar, se puede acudir a implementaciones de sistemas heurísticos que permiten reconocer y comparar técnicas e instrucciones comúnmente utilizadas por los creadores de códigos malignos.

Todos estos métodos permiten agilizar los procesos de detección de programas malignos y brindar una mayor calidad en la protección de sistemas. Aún así, el empleo de la heurística ofrece soluciones generalmente simplificadas y basadas en estrategias optimizadas para ofrecer aproximaciones a técnicas minuciosas que implicarían un mayor costo de recursos. La metodología de la heurística dispone de factores sinérgicos, flexibles y no lineales que no tiene por qué ofrecer resultados absolutos. El nivel de exactitud con que procedimientos heurísticos pueden proceder depende de su implementación a diferentes capas. Un producto antivirus puede llegar a devolver los llamados "falsos positivos" en caso de valorar el comportamiento -o estructuración- de un proceso o archivo sano como una alerta de virus. Ello depende de la calidad de interconexión y retroalimentación de las múltiples reglas heurísticas que emplee un sistema de protección, ya que si estos métodos son utilizados independientemente pueden consumar un veredicto poco robusto y escaso de credibilidad.

Diversos organismos independientes como AV-Comparatives están especializados en la realización de evaluaciones retrospectivas, que ponen a prueba la eficacia de las técnicas heurísticas de los productos antivirus más utilizados en la actualidad. En dichos exámenes se ubican a dichas herramientas en entornos hostiles, expuestas a una gran cantidad de nuevos programas malignos detectados sin permitirles obtener actualizaciones de sus firmas de virus. Así se puede tener una noción de la efectividad de estas aplicaciones frente a nuevas amenazas.

A continuación se muestran dos resultados estadísticos de principios del mes de junio del 2007, realizados por AV-Comparatives, donde se muestra el porciento de nuevos virus detectados en relación al total introducido y la cantidad de "falsos positivos" ocurridos, respectivamente.

Porciento de nuevos virus detectados en relación al total introducido.   Total de "falsos positivos" ocurridos.

Como se puede apreciar, el NOD32 goza del mayor índice de relación nuevas amenazas detectadas - falsos positivos; ello se debe al complejo sistema de detección heurística que tiene implementado en cada uno de sus módulos. No se debe menospreciar a otros productos que, aunque no se ve reflejado en este estudio en específico, gozan igualmente de gran reputación. Aquí comienza el problema para algunos -y el dilema para otros-, pues evaluar la totalidad de las herramientas de protección existentes en el mercado es prácticamente imposible. No obstante, trataremos de abordar algunas generalidades que se deben tener en cuenta para decidir en cuál relegaremos la responsabilidad de custodiar nuestra información.

¿soluciones? antivirus::

Para comenzar, se debe hacer énfasis en que ningún producto es 100% eficaz contra los programas malignos, incluso cuando los niveles de protección estén elevados al máximo. Luego destacar que todo antivirus debe al menos responder exitosamente a los siguientes criterios básicos:

  • Detectar infecciones por todas las vías de entrada y salida de información.
  • Chequeo de arranque del sistema y del registro de configuraciones del sistema.
  • Integración perfecta con el cliente de e-mail y el navegador web.
  • Gran capacidad de desinfección/regeneración.
  • Utilización adecuada de los recursos disponible por el sistema operativo.
  • Empleo de técnicas heurísticas y detección mínima de "falsos positivos".
  • Actualización sistemática.
  • Prestación de soporte técnico a usuarios.

El factor de costo se ha obviado, debido a nuestra ausencia en el mercado. De todos modos, se debe tener en cuenta que sin una herramienta que nos permita generar o "crackear" licencias, estamos fuera del sistema, propensos a ser un blanco de ataque en medio del ambiente virulento de las redes y de los dispositivos de almacenamiento extraíble. Pues con todas estas premisas podemos iniciar la búsqueda de la solución que más se ajuste a nuestras necesidades.

Podríamos citar las ventajas y desventajas de cada uno de los productos líderes, como el NOD32, los de la línea de Kaspersky Lab, Norton, Panda, Trend Micro, McAfee, Panda, el Avast!, F-Secure, F-Prot, BitDefender, así como Open Antivirus respecto a las plataformas open source y Segurmática Antivirus en nuestro ámbito local; pero en realidad va mucho más allá de los objetivos de este artículo.

Combinar técnicas heurísticas, métodos preventivos y tecnologías de protección en diferentes áreas, como servidores de correos, estaciones de trabajo, computadoras personales y dispositivos móviles puede ampliar considerablemente las posibilidades de detección.

Para saber más...

Continuar leyendo

GNU, GPL, Open Source y Linux

Krlo [blackhat4all@gmail.com]

"Un fantasma recorre el mundo virtual: el espectro del software libre. Contra este fantasma se han conjurado, en santa jauría, todas las potencias del software encabezados por Microsoft. La historia de la informática es la historia de la lucha entre programadores y usuarios, y la actual sociedad virtual no ha abolido ese conflicto. Lo que ha hecho es crear nuevas formas de opresión, que sustituyeron a las antiguas. Sin embargo, nuestra época se caracteriza por la concentración del poder y el mundo virtual tiende a separarse abiertamente en dos campos antagónicos: Microsoft y los usuarios".

Cuando terminábamos la edición 22 de BlackHat, formamos tremenda controversia sobre el significado de GNU y GPL. Cada cual daba su punto de vista y, aunque eran muy similares, nos dimos cuenta que el tema no estaba totalmente dominado. Para resolver este problema -y de paso ayudar a muchos lectores que están en nuestra misma situación- decidí estudiarme el tema y escribir este artículo. Con esto quiero aclararles que no soy un profesional en la materia, pero mis intenciones son más que buenas y prometo no despegarme de la bibliografía, ni basarme en prejuicios sobre el software libre o en extremismos pro-Linux.

He dividido mi trabajo de la forma más idónea que encontré para abordar el tema. Primero es lo primero, conocer la historia para entender cómo y cuándo surgió el enredo.

Un poco de historia::

Richard Matthew Stallman es, sin duda, un personaje principal en toda esta historia. Desde que era estudiante de física en la Universidad de Harvard, presentaba problemas de compatibilidad con el software apropiativo. A principios de los '80, cuando trabajaba en el desarrollo de un intérprete del lenguaje LISP, una comunidad de programadores llamados Symbolics le pidió su trabajo para usarlo y desarrollarlo. Stallman accedió y con el tiempo, cuando se interesó por las mejoras del intérprete realizadas por el grupo, obtuvo un rotundo "no". Las leyes de copyright estaban en su contra... la solución sería el copyleft.

El 27 de septiembre de 1983 Stallman creó el proyecto GNU, que perseguía crear un sistema operativo completamente libre. Su trabajo tuvo un gran impulso cuando en octubre de 1985 surge una organización llamada Free Software Foundation (Fundación del Software Libre o FSF), creada por él junto a otros entusiastas del software libre. El objetivo de la misma siempre ha sido difundir este modelo de producir y consumir software ajeno al impuesto por las grandes empresas. El nombre de esta organización puede ser que no les diga nada, pues se lee como cualquier otra; la chispa prende cuando les digo que el símbolo de la misma es el GNU.

El gnu (o ñu, en español) es un antílope africano que vive en manadas, llegando a reunir hasta cientos de miles de su propia especie. Las migraciones de estos "animalitos" pueden llegar a ser colosales; creo que transmite la idea de una gran comunidad que marcha por un mismo camino a una meta común -estas son impresiones mías, claro.

Quizás el aporte más trascendental de la FSF es la publicación de la GNU GPL. Esta licencia está orientada fundamentalmente a proteger la libre distribución, modificación y uso del software. Su propósito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios.

Software libre no es software gratis. Ése es uno de los problemas que tiene esta terminología, sobre todo en lengua inglesa. La siguiente frase es habitual en conferencias sobre software libre: "free as in freedom, not as in free beer", que se traduce en "libre como en libertad, no como en cerveza gratis". Este problema trae aparejado dificultades comerciales, pues qué empresario pensaría en pagar por un software free, o qué programador que viva de ello haría software free. El que no entienda el significado de software libre sin dudas cometería errores como los anteriores.

Stallman y todos sus seguidores plantean que un software es libre si permite las siguientes libertades:

Libertad 0: ejecutar el programa con cualquier propósito (privado, educativo, público, comercial, militar, etc.).
Libertad 1: estudiar y modificar el programa (para lo cual es necesario poder acceder al código fuente).
Libertad 2: intercambiar el programa de manera que se pueda ayudar al vecino o a cualquiera. Libertad de distribuirlo.
Libertad 3: mejorar el programa y publicar las mejoras.

Transportándonos a nuestro medio, todo software en Cuba cumple las libertades 0 y 2; ¿quién ha pagado un peso por tener Windows o el Acrobat en casa? Todos diariamente intercambiamos programas con gran naturalidad; es algo habitual. Sin embargo, las libertades 1 y 3 son las que para nosotros, los programadores cubanos, aún marcan la diferencia.

¿Cuál es la variante Open Source?

Open source o "código abierto" es un término con el que también se conoce al software distribuido y desarrollado libremente. Fue utilizado por primera vez en 1998 por algunos usuarios de la comunidad del software libre, tratando de usarlo como reemplazo al ambiguo nombre original en inglés del software libre.

El movimiento open source tiene un decálogo que debe cumplir un código para poder llamarse así (nótese que estas 10 premisas son completamente equivalentes con las 4 libertades o principios del software libre); éstas son:

  • Libre redistribución: el software debe poder ser regalado o vendido libremente.
  • Código fuente: el código fuente debe estar incluido u obtenerse libremente.
  • Trabajos derivados: la redistribución de modificaciones debe estar permitida.
  • Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches.
  • Sin discriminación de personas o grupos: a nadie se le puede dejar fuera.
  • Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden ser excluidos.
  • Distribución de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa.
  • La licencia no debe ser específica de un producto: el programa no puede licenciarse sólo como parte de una distribución mayor.
  • La licencia no debe restringir otro software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto.
  • La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software.

¿Por qué utilizar este término, y no free software?

  • En primer lugar, la palabra free presenta la ambigüedad antes señalada.
  • La segunda y más importante es el marketing: Open Source trata de introducir este modelo en el mundo de los negocios. Aunque el producto sea bueno, la palabra free está atada a un pasado terrible. Free software le suena al hombre de negocios a anticomercialismo. Los empresarios nunca comprarían free software, pero sí el mismo producto, hecho por la misma gente, con las mismas licencias, pero con la etiqueta cambiada a open source; entonces cambian las cosas.

La diferencia fundamental entre los dos movimientos está en sus valores, en su visión del mundo. Para el movimiento open source, la cuestión de si el software debe ser de fuente abierta es una cuestión práctica, no ética. Como alguien expresó, "el open source es un método de desarrollo; el software libre es un movimiento social". Para el movimiento open source, el software no libre es una solución ineficiente. Para el movimiento de software libre, el software no libre es un problema social y el software libre es la solución.

"El movimiento Free Software y el movimiento Open Source son por igual dos partes políticas dentro de nuestra comunidad." - Richard Stallman.

Importancia del CopyLeft y de las licencias de software libre::

Quiero puntualizar que no existe como tal el copyleft; es un concepto muy general que abarca un conjunto de leyes entre las que sobresale la GPL para los productos informáticos. El lema del copyleft es "all rights reversed", o "todos los derechos se revierten".

Al principio podemos pensar que la mejor manera de hacer un software libre es publicando el código fuente para todos. Pero esta es una visión muy corta de lo que nuestro trabajo puede significar. Imagínense que alguien no tan altruista como nosotros tome nuestro código, lo mejore y actualice, y como era totalmente libre, él se siente en la libertad de venderlo. Las licencias como GPL son importantes porque, además de convertir un programa en software libre, exige que todas las versiones del mismo, modificadas o ampliadas, también lo sean.

¿Dónde entra Linux?

Como habíamos visto, desde mediados de la década de los '80 Richard Stallman y el proyecto GNU estaban intentando crear un sistema operativo libre, con un funcionamiento similar al UNIX. En el comienzo de 1990 ya tenían muchas herramientas importantes listas, como compiladores, depuradores, intérpretes; pero les faltaba el núcleo que uniera y organizara todos esos componentes.

Linux es un sistema operativo gratuito y de libre distribución inspirado también en el sistema UNIX. Fue escrito por Linus Torvalds -un estudiante finlandés- con la ayuda de miles de programadores en Internet. A modo de paréntesis, UNIX es un sistema operativo desarrollado en 1970; una de sus mayores ventajas es ser fácilmente portable a diferentes tipos de computadoras, por lo que existen versiones de UNIX desde PC y Mac hasta estaciones de trabajo y supercomputadoras. Al contrario que otros sistemas operativos, como por ejemplo MacOS, UNIX no está pensado para ser fácil de emplear, sino para ser sumamente flexible.

GNU/Linux es el término promovido por la FSF, Richard Stallman y sus patrocinadores para el sistema operativo que incluye las utilidades de la FSF (la parte de GNU) y el kernel de Linus Torvalds. La gran mayoría de las personas usan el término "Linux" para referirse a todo el sistema operativo, pero Stallman plantea que "es incorrecto, pues ambos componentes se complementan y equiparan en importancia"; aunque indiscutiblemente suena mejor Linux.

Vamos a tocar el tema de las distribuciones, para algunos cosa elemental (mis disculpas en tal caso). Pues una distribución es un agrupamiento del núcleo del sistema operativo Linux (la parte desarrollada por Linus Torvalds y GNU) y otra serie de aplicaciones de uso general -o no tan general. En otras palabras, como todo interesado puede adaptar y mejorar el código a su manera, han surgido numerosas variantes del sistema operativo llamadas distribuciones. Las distribuciones más conocidas son RedHat, Debian, Slackware, SuSE, Corel Linux y, con un gran auge en los últimos años, Ubuntu.

Conclusiones::

Vamos antes de terminar precisar lo siguiente:

  • Software libre no significa que es software gratis.
  • El copyleft no existe como ley, es un concepto que define una filosofía y agrupa un conjunto de leyes.
  • Open source es una denominación alternativa del software libre; en la práctica son equivalentes.
  • GNU es un proyecto fundado por Richard Stallman para crear y desarrollar un sistema operativo, base necesaria para todo el desarrollo de esta filosofía.
  • La Free Software Foundation (FSF) fue creada por Stallman y sus seguidores para promover impulsar el software libre en general y legalizar su uso.

Esta filosofía -creo que todos estamos al tanto- suele pasar de una solución acertada a un extremismo funesto con gran facilidad. Leyendo sobre Richard Stallman me quedé pensativo con unos de sus planteamientos: "Cuando Microsoft distribuye copias gratuitas de Windows a los alumnos es como cuando las empresas de tabaco distribuían cigarrillos gratuitos a los niños a fin de hacerlos adictos." (extraído de "Filosofía del Software Libre y Licencias GNU"). ¿Esta metáfora estará justificada, es Mr. Bill Gates tan malo como lo pintan?

Desde mi punto de vista no es práctico tener una mentalidad parcializada; no estamos hablando de amigos o enemigos, es sólo computación y desarrollo tecnológico. Lo ideal sería dominar ambos campos y aprovechar las ventajas que cada uno nos brinda. Mi profesor de la asignatura Sistemas Operativos nos dijo una vez: "todos mis amigos usan Ubuntu; quieren ser mis amigos." ¿Para qué dividirnos si podemos andar juntos? En Cuba no existe un mercado de software, todo es free, pues entonces disfrutémoslo.

Ya existen una serie de países en los cuales sus administraciones públicas han mostrado apoyo al software libre, ya sea migrando total o parcialmente sus servidores y sistemas de escritorio o subvencionándolos. Como ejemplos de ello se tiene a Alemania, Argentina, Brasil, Chile, China, Ecuador, España, Francia, México, República Dominicana, Venezuela y Cuba. Los principales pilares que apoyan esta decisión son los precios, la libertad de estudiar y acomodar los códigos fuentes y, por supuesto, la estabilidad y calidad de los programas hechos por una enorme comunidad que, como los gnu, andan juntos en pos de una meta.

Para saber más...

Continuar leyendo