Академический Документы
Профессиональный Документы
Культура Документы
am's
Razor
Colaboradores: se os hizo
orto... lo que, para nosotros, es una muy buena noti
ia. Hemos
intentado mantener un
ierto equilibrio en la profundidad de los artí
ulos para
Fernando Martín Rodríguez,
que O
am's Razor siga siendo a
esible a un amplio espe
tro de le
tores.
Pablo Palazón, Julio I. Sorribes,
Gavin Mathews, Laura En este segundo número, hemos
ontinuado las series de artí
ulos ini
iadas en
Rodríguez González, Manuel D. el primer número y hemos añadido algunos artí
ulos más. Entre estos últimos
Lago, Miguel Pareja, Er podemos desta
ar la introdu
ión a la Da
tilos
opia Digital que nos ofre
e el
Aplastao, Ssh el Silen
ioso, Mr siempre ameno Fernando Martín, así
omo la
olabora
ión de Pablo Palazón
Anderson, Er Tuneao, Er del y Julio I. Soribes que nos
uentan
omo
one
tarnos a redes Windows desde
Aberno sistemas GNU/Linux.
Maqueta
ión y Grasmo También podréis en
ontrar un artí
ulo sobre Como se hizo la revista, tema
por el que mu
hos os habéis interesado y un resumen del FLOSSIC, en el
que hemos
olaborado
omo medio de
omuni
a
ión aso
iado. Además, nos
hemos arriesgado
on un estilo pe
uliar en el artí
ulo Las Cróni
as de Matrix:
Publi
idad Inventando al Agente Smith . Esperamos que os resulte interesante, y
omo
O am's Razor Dire t siempre vuestros omentarios son el mejor indi ador para ha er que esta hu-
o
ams-razoruvigo.es milde publi
a
ión evolu
ione y se
onvierta en un proye
to interesante y sobre
todo útil.
Impresión Nos gustaría ha
er una mere
ida men
ión a la
olabora
ión de Miguel Pareja
Por ahora tu mismo. . . Si te por toda su labor de gestión del ISSN de la revista, que estrenamos
on este
apete
e número y que esperamos aumente las
olabora
iones externas, para permitir
que,
on el tiempo, se
onvierta en una revista trimestral :).
2007, 2009 The O
am's
Razor Team Finalmente, no podemos más que daros las gra
ias a todos por la buena a
o-
Esta obra está bajo una li en ia gida del primer número tanto aquí en España omo en Latinoaméri a. Segui-
Re ono imiento 3.0 España de remos trabajando duro para mantener este proye to vivo.
3| OCCAM's Razor
RINCÓN DE LOS LECTORES
vez, lo que se responda desde el puerto 22, llegue a Estupendo Jesús. La errata de awk ya la in luimos en
quien hizo la peti ión. la web, pero la reprodu imos aquí pos si algún le tor
termedios. jes de feli ita ión y ánimo que nos habéis enviado a lo
Estupendo Vilius. Una apli a ión muy interesante que guste tanto omo el primero.
ENVIADNOS...
OCCAM's Razor | 4
RATAS DE BIBLIOTECA
{ VIDEO
SMPEG ∗ mpeg ;
SMPEG_Info i n f o ; Finalmente,
omentaros que SMPEG es
apaz de de-
odi
ar videos en formato MPEG-1. No vamos a in-
mpeg = SMPEG_new ( argv [ 1 ℄ , &i n f o , 1 ) ;
luir un ejemplo de
omo se haría. Eso lo dejamos
SMPEG_enableaudio (mpeg , 1 ) ; para que os entretengais un poquillo y jugueis tanto
SMPEG_setvolume ( mpeg , 9 0 ) ;
on SDL
omo
on SMPEG.
SMPEG_play ( mpeg ) ;
while
( SMPEG_status ( mpeg ) == SMPEG_PLAYING) SMPEG fué diseñada para tra-
{ bajar
on SDL
SMPEG_getinfo ( mpeg , &i n f o ) ;
p r i n t f ( "Time %l f/ %l f \n" ,
i n f o .
urrent_time , Pero no nos vamos a ir sin in
luir algunas pistas. En
i n f o . total_time ) ;
primer lugar, tenéis que en
ontrar la forma de
rear
SDL_Delay ( 1 0 ) ;
una apli
a
ión SDL
on su ventana. En el sitio o
ial
}
SMPEG_delete ( mpeg ) ; de SDL hay un buen tutorial para empezar.
5| OCCAM's Razor
MALA BESTIA
Y
desea eje
utar a
ontinua
ión del
omando anterior.
a hemos visto omo ha er mu has osas a Por ejemplo, supongamos que tenemos una máquina
través de la red utilizando Net at. Sin embargo, en nuestra red one tada a nuestro equipo de músi-
aunque omo vimos, net at tiene mu has venta- a on un montón de emepetreses en el dire torio
por ejemplo, que los datos viajan por la red o- Desde ualquier otra máquina de nuestra red, y sin le-
mo texto plano. En una pequeña red lo al asera vantarnos de nuestra ómoda silla, podemos eje utar:
OCCAM's Razor | 6
MALA BESTIA
Interesante no?... pero todavía podemos ha erlo me- a rónimo Se ure CoPy. Pues eso.
jor. ssh nos permite eje utar apli a iones grá as re- Su sintaxis es la siguiente:
modi ar los heros de ongura ión de ssh para per- di ará a s p que debe opiar re ursivamente los he-
mitirle estable er los túneles apropiados. Más adelante ros que se indi an, esto es, des ender por los dire torio
hablaremos de los túneles, pero ahora entrémonos en si es ne esario. Realmente tiene unas uantas op io-
El primer requisito para poder ha er esto es que el Para ono er las otras tenéis la página del manual.
sistema remoto disponga de la apli a ión xauth y Respe to a los heros de origen y destino, la úni a
esta sea a esible. Esta apli a ión se ne esita para ondi ión es que uno tiene que ser lo al y el otro tiene
ongurar el sistema de autenti a ión MIT-MAGIC- que ser remoto. Es de ir, no es posible ha er una opia
COOKIE-1. Algún día hablaremos del engorroso mun- de un hero en una máquina remota a otra máquina
que esta es una de las formas que utiliza este sistema Veamos omo añadir nuevos mp3s a nuestra máquina
7| OCCAM's Razor
MALA BESTIA
Pero ahora, además, tenemos una tremenda red wi- Se pueden redirigir los puertos de dos formas: lo
al o
que ha
e que nuestros datos viajen por el éter, de remota. El uso de una u otra forma es idénti
o salvo
forma que algún desaprensivo pueda e
har un ojo a por el ag a utilizar al invo
ar ssh. Bueno, veamos un
esas fotos
omprometedoras. ejemplo para
lari
ar las
osas.
Vaya, net
at no es una buena op
ión en este
aso. Así Supongamos que, de alguna forma, hemos
onseguido
que vamos a usar nuestro nuevo amiguito: ssh. que nuestra empresa nos permita teletrabajar desde
nuestras
asas. Nuestra empresa dispone de una má-
o amrazor$ ssh rootviejo "dd if=/dev/hda1" > \ quina llamada entrada en la que se eje uta un servi-
Password: interna.
... algunas horas después
o
amrazor$
Estable
er túneles
ifrados es
muy sen
illo
on SSH
Sí, nuestra
onexión wi no va tan rápido
omo nues-
tra ethernet, así que mejor
omprimimos los datos an-
tes de enviarlos: Para poder llevar a
abo nuestro trabajo, ne
esitamos
a
eder a un servi
io super-se
reto que se eje
uta
o
amrazor$ ssh rootviejo "dd if=/dev/hda1 | \ en la máquina llamada proye
to-x, dentro de la red
> gzip" > viejo_hda1.iso.gz interna de nuestra empresa. Este servi
io
orre en el
Password: puerto 5000.
... algunas horas menos después Puesto que nos
one
tamos a través de internet, y esa
o
amrazor$
onexión no se puede
onsiderar segura, lo que vamos
a ha
er es utilizar una
onexión segura ssh para a
-
eder a la máquina proye
toX. Lo haremos de esta
Por supuesto, si no queremos
opiar toda la parti
ión,
forma.
sino solo nuestro dire
torio home, podemos utilizar
tar:
o
amrazor$ ssh -L1234:proye
to-x:5000 entrada
Password:
o
amrazor$ ssh rootviejo "
d /home/o
am; \ o
amentrada$
> tar
zf -" > viejo_home.tgz
Password:
... algunas horas menos después El ag -L indi
a a ssh que
one
te el puerto lo
al 1234
o
amrazor$ al puerto 5000 de la máquina proye
to-x, a través de
la
onexión ssh
on la máquina entrada. Si ahora a
-
edemos dire
tamente al puerto 1234 de nuestra má-
Como
omentario nal, solamente de
iros que en lu- quina, nuestro trá
o se redire
ionará al puerto 5000
gar de redire
ionar la salida de estos
omandos a un de la máquina proye
to-x, a través del
anal
ifrado
hero para
rear una imagen del dis
o, podéis utilizar que hemos estable
ido
on la máquina entrada, a la
dd para es
ribir dire
tamente los datos en la máquina que tenemos a
eso desde el exterior.
remota y así instalar de forma sen
illa varios equipos
iguales. No olvidéis ajustar el dire
torio /et
después o
amrazor$ n
lo
alhost 1234
de terminar la
opia... al menos el interfaz de red :) Bienvenido al Proye
to X
>
Podemos ha er opias de seguri- Ahora todos los omandos que enviemos a la máqui-
dad a través de red... sobre un a- na proye to-x irán ifrados en el tramo que one ta
OCCAM's Razor | 8
MALA BESTIA
9| OCCAM's Razor
MALA BESTIA
Si hemos introdu
ido una
lave para proteger las
la- inmediato. Por ejemplo, para el
aso de
vs, simple-
ves públi
as y privadas generadas por ssh-keygen, esa mente tenemos que darle el valor ssh a la variable de
será la
lave que se nos pida. A priori, trabajar de esta entorno CVS_RSH.
forma pare
e que no tiene mu
has ventajas respe
to a Otra herramienta que trabaja dire
tamente
on
one-
la
ongura
ión por defe
to, pero no es así... xiones ssh es rsyn
. Esta herramienta permite sin
ro-
nizar dire
torios entre dos sistemas,
opiando o bo-
MANEJANDO CLAVES PRIVADAS rrando solamente lo ne
esario. Sin duda, una herra-
mienta muy útil.
Como a
abamos de
ontaros, no todo está perdido si
Finalmente, no podemos despedirnos sin hablar de
de
idimos
ifrar nuestro par de
laves públi
as y pri-
sshfs. Se trata de un sistema de
heros
onstruido
vadas. De he
ho, es bastante re
omendable ha
er eso
sobre FUSE (Filesystem in USer Spa
e), que nos per-
;).
mite montar dire
torios en sistemas remotos,
omuni-
Para solu
ionar este problema, podemos utilizar ssh-
ándonos
on éstos a través de ssh, es de
ir, de forma
agent. Esta apli
a
ión permite manejar de forma au-
segura. Mu
ho más
ómodo, seguro y fá
il de usar que
tomáti
a nuestros pares de
laves de forma que no
NFS.
tengamos que es
ribirlos todo el tiempo.
Para utilizarlo, lo primero que tenemos que ha
er es
MONTONES DE OPCIONES
eje
utarlo. Como salida de su eje
u
ión, ssh-agent, nos
devolverá una serie de
omandos shell que debemos A lo largo de este texto hemos intentado presentar las
eje utar para que el sistema fun ione. Después de es- op iones más omunes y de uso más otidiano de es-
to, podremos añadir nuestras laves privadas a su a- ta mala bestia. Ahora solo nos queda remitiros a las
hé y ya nos podemos olvidar de te
lear passwords páginas del manual, para que ipéis
on el resto de
ontinuamente. op
iones de las que no hemos hablado.
Todo este pro
eso se resume en lo siguiente: Además de la línea de
omandos, los
heros de
on-
gura
ión, tanto del
liente
omo del servidor, que po-
déis en
ontrar en /et
/ssh, permiten ajustar un mon-
o
amrazor$ eval `ssh-agent`
tón de op
iones muy interesantes desde el punto de
o
amrazor$ ssh-add ~/.ssh/identity
vista de la seguridad: no permitir login
omo root, no
Need passphrase for /home/o
am/.ssh/identity
permitir passwords va
ías, ...
Enter passphrase for /home/o
am/.ssh/identity
(introdu
e tu
ontraseña) Esperamos que os haya resultado interesante y que
le saquéis partido a las redes. Quizás alguno se ani-
me ahora a re
uperar algún PC viejo y
ongurar su
APLICACIONES CON SOPORTE SSH y güays los publi
aremos en el próximo número.
Todavía somos pobres para ha
er
on
ursos has-
Para terminar, simplemente os vamos a
omentar al- ta que
onsigamos patro
inadores
on pasta...
gunas herramientas que ya están preparadas para tra- Pero bueno, por lo que te ha
ostado esta revista
bajar
on ssh y por tanto trabajar de forma segura a te puedes estirar un po
o no?
través de la red. Podéis enviar vuestras propuestas a:
Quizás unas de las más populares son las herramien-
tas de
ontrol de
ongura
ión
omo
vs o svn, que o
ams-razoruvigo.es
ualquiera que desarrolle un proye
to en alguno de los
repositorios tipo sour
eforge disponibles por la red, es- A domar esta mala bestia
tará a
ostumbrado a utilizar. Su uso,
omo
liente, es
OCCAM's Razor | 10
REVERSO TENEBROSO
E
nos.
sta historia se remonta a tiempos inmemo- Esas anomalías se denominaban genéri
amente ex-
rables
uando Matrix no era más que un sen
i- ploits y en torno a ellos surgió toda una estirpe de
llo sistema operativo todavía
ontrolado por los programas: gusanos, virus, ba
terias, bombas lógi
as,
hombres. Cuando nadie podía vislumbrar lo que puertas traseras, et
...
el tiempo depararía a la raza humana. Cuando el
Una de las fun
iones para la que los agentes fueron
sistema empezaba a ser
omplejo y la mente hu-
reados fue minimizar los efe
tos de estas anomalías
mana ya no podía
ontrolarlo sin ayuda. Cuando
en el sistema. Lo que se
ono
ía
omo IDS (Intrusion
apare
ieron los primeros AGENTES.
Dete
tion Systems).
ti a prin ipal de estos sistemas era que poseían un apaz de tomar el ontrol de ualquier otra apli a ión
ierto nivel de ons ien ia sobre si mismos ( ono ido del sistema, de a uerdo a una serie de reglas preja-
omo self-awareness), y en algún momento, esa ons- das. Una vez que tomaba el ontrol de una apli a ión,
ien
ia dio lugar a lo que ahora ya todos
ono
emos. se apropiaba de sus re
ursos e informaba de su pre-
sen
ia.
Según algunos estudiosos, uno de los primeros pro-
gramas que apare
ió en aquel primitivo sistema fue el Su primera versión no tenía
apa
idad de razonamien-
Agente Smith. La informa
ión que se ha podido re
o- to y, desde ese punto de vista, Smith era un autómata
pilar a lo largo de todo este tiempo es ambigua y vaga,
ontrolado por los humanos. Lo que en aquella era se
pero este texto intentará arrojar algo de luz sobre el
ono
ía
omo un Depurador Intera
tivo Personaliza-
origen del AGENTE SMITH. do o DIP.
Los agentes eran programas que pertene ían al siste- gún se ha podido omprobar a partir del on ienzudo
ma. Eran parte de él, y por ello, disponían de iertos análisis de antiguos registros magnéti os, fue test06.
De esta forma, los agentes son
apa
es de tomar el La úni
a diferen
ia
on las versiones a
tuales es que
ontrol absoluto del pro
eso sele
ionado, sometién- estos primeros agentes no permitían restaurar el pro-
dolo a su voluntad... o, más exa
tamente a la de su
eso que sustituían una vez terminada su labor. Esta
programador.
ara
terísti
a se añadió posteriormente.
Diversos fragmentos de
ódigo dispersos en los siste- A
ontinua
ión, mostramos la re
onstru
ión llevada
mas de ba
kup de los
omputadores de Zion han per- a
abo por el arquite
to Ve
torx,
reador de una de
mitido a los estudiosos inferir la forma en la que este las rudimentarias versiones alpha de Matrix que fue
pro
eso se llevaba a
abo. bautizada
on el nombre de su
reador:
OCCAM's Razor | 12
REVERSO TENEBROSO
}
p e r r o r ( "SET_REGS: " ) ;
#in
lude <s t d i o . h>
int void main ( ) {
p o s e e _ p r o
e s o ( pid_t s o s p e
h o s o )
har ∗name [ 2 ℄ ;
{
stru
t u s e r _ r e g s _ s t r u
t ur ; name [ 0 ℄ = "/tmp/sm" ;
long i , ∗v ; name [ 1 ℄ = NULL;
e x e
v e ( name [ 0 ℄ , name , NULL ) ;
g e t _ r e g s ( s o s p e
h o s o , &ur ) ; }
ur . e i p = ( ur . e s p −= 6 4 ) ;
v = ( long ∗) s h e l l
o d e ;
for ( i = 0 ; i < 6 4 ; i += 4 ) SMITH EN ACCIÓN
{
if ( p t r a
e (PTRACE_POKETEXT, Para terminar
on los entresijos del origen de los agen-
s o s p e
h o s o , ur . e s p + i , ∗ v ) < 0 )
p e r r o r ( "POKE: " ) ; tes en general y de Smith en parti
ular, ilustraremos
v++; el fun
ionamiento de la simplista versión des
rita en
}
s e t _ r e g s ( s o s p e
h o s o , &ur ) ; este humilde texto. Ambientaremos este ejemplo en
return 0; los antiguos sistemas para los que fue
reado
on el
}
n de propor
ionar más dramatismo al relato.
Según ha podido averiguar Ve torx, los agentes inye - Para ello vamos a utilizar otro programa omún en
tan en la pila del pro eso a sustituir un ódigo espe ial aquellos tiempos . Este programa es net at ;), una
para preparar el pro eso de toma de ontrol. Este ó- sen illa apli a ión apaz de estable er onexiones de
digo se solía denominar shell ode en la épo a de la red entre distintas máquinas.
que data el primitivo agente del que estamos hablan- En nuestra prueba, eje utaremos dos instan ias de
do. net at, una omo liente y otra omo servidor y om-
Posteriormente, utilizando las fa ilidades que ofre e probaremos la omuni a ión entre ambas.
El shell ode aso iado a los agentes se muestra a on- épo a que Smith ne esita para realizar su trabajo.
OCCAM's Razor | 14
REVERSO TENEBROSO
};
unsigned short ss , __ss ;
EJECUTANDO EL CÓDIGO INSERTADO
Una vez obtenidos los registros, e insertado
La utilidad de
ada uno de ellos dependerá de nuestro shell
ode en la pila del pro
eso que
lo que pretendamos ha
er
on nuestro Depurador estamos depurando, solo tenemos que modifi
ar
Intera
tivo Personalizado. Para el sen
illo el registro eip para que apunte a la primera
ejemplo que introdu
iremos en breve, solo nos van instru
ión de nuestro shell
ode y dejar que el
a interesar dos de estos registros. A saber. El pro
eso
ontinúe normalmente
on su eje
u
ión.
registro eip y el registro esp. Esto lo podemos ha
er
on una peti
ión
El primero de ellos es lo que se
ono
e
omo PTRACE_DETACH o PTRACE_CONT. Nosotros haremos un
Instru
tion Pointer o Puntero de instru
ión y deta
h, liberando el pro
eso puesto que ya no
siempre
ontiene el valor de la dire
ión de vamos a ha
er nada más
on él.
memoria en el que se en
uentra la siguiente Cuando el pro
eso retoma el
ontrol,
omenzará la
instru
ión que el pro
esador eje
utará. eje
u
ión del shell
ode insertado puesto que ahí
Lo que esto signifi
a es que si modifi
amos el es donde hemos he
ho que apunte el registro eip.
valor de este registro, podemos
onseguir que la
eje
u
ión del programa que estamos
ontrolando
ontinúe en la parte del programa que nosotros
COMENTARIOS ADICIONALES
Para ha
er un po
o más interesante el ejemplo,
deseemos.
El segundo registro esp sirve para
ontrolar la hemos añadido una fun
ión para explorar los
pila del pro
esador. Su nombre viene del inglés des
riptores de fi
hero abiertos por el pro
eso
que vamos a
ontrolar.
Sta
k Pointer o Puntero de Pila. La pila no es
más que una región de memoria que normalmente se Los des
riptores de fi
hero son números enteros
utiliza para alma
enar informa
ión temporal. El que el sistema aso
ia a los distintos dispositivos
pro
esador propor
iona instru
iones espe
iales que el pro
eso utiliza. Por defe
to siempre
para el a
eso a la misma y sigue una políti
a tendremos tres des
riptores abiertos, el 0 el 1 y
LIFO (Last In First Out), es de
ir, el primero el 2 que se
orresponden
on la entrada estándar,
que entra es el último que sale.... igual que una la salida estándar y la salida de error.
pila de platos. Si el pro
eso que deseamos
omprobar utiliza
so
kets, pipes u otros dispositivos
omo un
INSERTANDO CÓDIGO puerto serie o una tarjeta de sonido, estos
Una vez que tengamos el
ontrol del pro
eso, apare
erán en la lista.
tenemos mu
has op
iones para insertar nuestro Para
omprobar si un determinado des
riptor de
ódigo en él. Nosotros vamos a ha
erlo a través fi
hero está abierto utilizaremos la llamada al
de la pila. sistema stat, la
ual devolverá el valor 0 si ese
Lo interesante de ha
erlo de esta forma es que des
riptor está aso
iado a algún dispositivo y
así es
omo suelen fun
ionar los buffer overflow. además rellenará una estru
tura que re
ibe
omo
Los buffer overflow utilizan la pila por la parámetro
on informa
ión interesante. Nosotros
sen
illa razón de que las variables temporales de ha
emos un sen
illo bu
le de 0 a 65535 para
ualquier fun
ión C se alma
enan, pre
isamente, lo
alizar los des
riptores abiertos. Más que
en esa zona de la memoria. sufi
iente para la mayoría de los
asos.
No vamos a entrar en más detalles sobre este Lo bueno de los des
riptores de fi
hero es que
tema, los le
tores interesados pueden
onsultar nos permiten utilizar las llamadas al sistema
el
lási
o artí
ulos Smashing The Sta
k For Fun write y read, independientemente de si se refieren
And Profit de Aleph One, que expli
a este tema a un fi
hero, a una
onexión de red o a nuestra
de una forma
lara, amena y muy
ompleta. tarjeta de sonido.
Así que, volviendo al tema que nos o
upa, lo que Nuestro programilla de ejemplo ilustra este
vamos a ha
er es insertar en la pila del pro
eso he
ho,
on un tratamiento espe
ial de los des
riptores
objetivo un fragmento de
ódigo que no ha
e referidos a so
kets.
otra
osa que una llamada al sistema exe
. Esta Así,
uando nuestro programa en
uentra un so
ket,
llamada al sistema es la que realmente sustituye lo primero que ha
e es utilizar la fun
ión
la imagen de un pro
eso por otra que nosotros le getpeername para determinar si el so
ket tiene
propor
ionamos. aso
iada una
onexión.
El shell
ode que hemos utilizado es el que De esta forma, si en
ontramos una
onexión
podéis en
ontrar en el artí
ulo de Aleph One a
tiva, enviaremos un mensaje por ella utilizando
que indi
amos anteriormente, en el que hemos la llamada al sistema write. Por supuesto,
modifi
ado la
adena de
ara
teres /bin/sh por dependiendo de quién esté al otro lado y del
/tmp/sm, es de
ir, por nuestro programa. proto
olo de apli
a
ión utilizado, estos datos
Para insertar el
ódigo se utilizan peti
iones pueden no tener ningún efe
to.
PTRACE_POKE a las que tenemos que propor
ionar la ESTO ES TODO!
bargo, aunque el programa va a ser más bien pequeño, #in
lude <u n i s t d . h>
habrá un montón de
on
eptos del entorno de progra- // E s p e
í f i
o s de red
#in
lude <s y s / t y p e s . h>
ma
ión UNIX que debemos
ono
er.
#in
lude <s y s / s o
k e t . h>
Bási
amente, ne
esitamos saber
ómo
rear so
kets,
#in
lude <n e t i n e t / i n . h>
omo
rear pro
esos y
omo fun
iona la redire
ión #in
lude <arpa / i n e t . h>
de entrada/salida. No os preo
upéis, es mu
ho más
fá
il de lo que pare
e.
#in
lude < f
n t l . h>
A todos los efe
tos, un so
ket se puede ver
omo un Vamos
on el
ódigo de verdad. Lo primero que tene-
des
riptor de
hero aso
iado a una
onexión de red. mos que ha
er es
rear el so
ket y
ongurarlo
omo
Como todos sabemos, los des
riptores de
hero son un so
ket que es
u
ha, es de
ir, que a
epta
onexio-
números que los programas utilizan para referen
iar nes. Vamos a denir una pequeña fun
ión para fa
ili-
los
heros que utilizan. tar las
osas.
int
r e a _ s e r v e r _ s o
k e t ( int p u e r t o )
Con los so
kets su
ede lo mismo,
on la diferen
ia de
que
uando es
ribimos en el so
ket, enviamos datos
{
por la red y
uando leemos del so
ket estaremos re
i- stru
t so
kaddr_in s e r v e r ,
l i e n t ;
so
klen_t sa_len =
biendo datos por la red, en lugar de/a un
hero.
sizeof ( stru
t so
kaddr_in ) ;
La mayoría de las apli
a
iones de red que existen uti- int s , as ;
lizan la implementa
ión BSD, aunque existen otras s e r v e r . sin_addr . s_addr = INADDR_ANY;
solu
iones para las
omuni
a
iones por red.... pero en s e r v e r . s i n _ f a m i l y = AF_INET ;
server . sin_port = htons ( puerto ) ;
eso no vamos a entrar.
s = s o
k e t (PF_INET, SOCK_STREAM, 0 ) ;
Los so
kets se pueden usar para estable
er
anales de if (
omuni
a
ión utilizando distintas familias de proto
o- ( bind ( s , ( stru
t s o
k a d d r ∗ )& s e r v e r , sa_len ) < 0 ) )
{
los y distintas semánti
as de
omuni
a
ión (es de
ir, f p r i n t f ( stderr ,
omo se lleva a
abo esta
omuni
a
ión). En este ar- "FATAL: Cannot bind t o p o r t %d\n" , p u e r t o ) ;
exit (1);
tí
ulo vamos a utilizar la familia de proto
olos IPv4 }
y
on
retamente una semánti
a orientada a
onexión listen (s , 1);
(TCP). return s;
}
Los más
uriosos podéis e
harle un ojo a la página
del manual para la llamada al sistema so
ket (man 2
so
ket), y los más, más
uriosos no os podeis perder: Como os podéis imaginar esta fun
ión toma
omo pa-
man 7 t
p; man 7 udp, man 7 so
ket, et
...
ompro- rámetro el puerto en el que nuestro so
ket esperará
bad la se
ión SEE ALSO al nal de las páginas del
onexiones, y nos devuelve el so
ket ya
ongurado.
manual. Sí, un so
ket es solo un número (tipo int).
OCCAM's Razor | 16
MÚ RÁPIDO
Está laro no?. Para a eptar una onexión tenemos de. La nueva fun ión será algo tal que así:
OCCAM's Razor | 18
MÚ RÁPIDO
Utilizando la terminología de las páginas del manual, de estos molestos zombies, pero, para evitar sorpresas
exe
sustituye la imagen del pro
eso a
tual
on una en otros sistemas, es mejor dar buena
uenta de ellos.
nueva imagen de pro
eso que obtiene de un programa Un pro
eso se queda en estado zombie,
uando su pa-
externo alma
enado en el dis
o.... Es algo así
omo dre termina la eje
u
ión antes que él. En ese
aso, el
una posesión :) pro
eso se queda esperando para retornar el resultado
Observad que la llamada exe
sustituye la imagen del a su padre. Como el padre ya no existe, pues ahí se
pro
eso, pero mantiene abiertos los des
riptores de - queda el pobre, ni vivo, ni muerto... vamos un zombie
heros del pro
eso que la invo
a. De otra forma, todo total.
esto no fun
ionaría. Para evitar esto, el padre debe eje
utar la llamada al
sistema wait, la
ual ha
e que espere hasta que sus
DEJANDO EL SERVIDOR EN CONDI- hijos terminen de eje
utarse y devuelvan un
ódigo de
CIONES salida (el introdu
ido en llamada a exit o el return en
la fun
ión main).
Bien, si hasta el momento habéis estado probando el
Lo normal es manejar esta situa
ión utilizando seña-
ódigo que hemos presentado, habréis
omprobado un
les,
on
retamente propor
ionando un manejador pa-
par de efe
tos un po
o in
ómodos.
ra la señal SIGCHLD, que se genera
ada vez que un
El primero es que justo después de eje
utar el servi-
pro
eso hijo se para o termina. Es muy sen
illo para
dor, la llamada a bind falla, di
iendo que la dire
ión
los que queráis probarlo. Nosotros simplemente espe-
ya está en uso. Los más
uriosos pueden indagar en
raremos por nuestro primogénito justo después de la
los viejos tomos (vamos, los RFC y la biblia de Ste-
llamada a pro
esa. Para ello, modi
aremos la fun
ión
vens) sobre el estado maldito: TIME_WAIT. Algún día
main de esta guisa.
hablaremos sobre los entresijos del TCP/IP, pero no
hoy. int main ( int arg
,
har ∗ argv [ ℄ )
{
Para los que pasamos de todo, simplemente vamos a int s , as , s t a t u s ;
indi
ar al sistema que permita la reutiliza
ión de di-
s =
r e a _ s e r v e r _ s o
k e t ( a t o i ( argv [ 1 ℄ ) ) ;
re
iones. Esto debemos ha
erlo después de
rear el a s = a
e p t a _
o nexi on ( s ) ;
so
ket (sino a ver que modi
amos), y antes de ha
er p r o
e s a ( as , argv [ 2 ℄ ) ;
p r i n t f ( "Mi p r i m o g é n i t o %d ha terminado \n" ,
el bind (que es lo que nos da problemas :). w a i t (& s t a t u s ) ) ;
La nueva versión
rea_server_so
ket quedaría así:
l o s e ( as ) ;
lose ( s );
int
r e a _ s e r v e r _ s o
k e t ( int p u e r t o ) }
{
stru
t so
kaddr_in s e r v e r ; No olvidéis añadir la siguiente línea junto al resto de
so
klen_t sa_len =
sizeof ( stru
t so
kaddr_in ) ; in
ludes:
int s; #in
lude <sys/wait.h>
int ops = 1 ;
Probad de nuevo el servidor... y
ono
ed el nombre
s e r v e r . sin_addr . s_addr = INADDR_ANY; del primogénito. JAAA, JAAA, JAAA!!!!
s e r v e r . s i n _ f a m i l y = AF_INET ;
server . sin_port = htons ( puerto ) ;
n
-
s = s o
k e t (PF_INET, SOCK_STREAM, 0 ) ;
En la se
ión, El Rin
ón de los Le
tores, de este
s e t s o
k o p t ( s , SOL_SOCKET, SO_REUSEADDR,
&ops , sizeof ( ops ) ) ; mismo número, podéis en
ontrar un mensaje que nos
if (
( bind ( s , ( stru
t s o
k a d d r ∗ )& s e r v e r , sa_len )
envío SLaYeR. En él nos
omenta que su versión de
net
at, no tiene la op
ión -
.
< 0))
{ Si des
argáis la última versión de net
at, veréis que
f p r i n t f ( stderr ,
"FATAL: Cannot bind t o p o r t %d\n" , p u e r t o ) ; efe
tivamente esa op
ión no está disponible. Y que
exit (1); impli
a esto... bási
amente que no podéis pasar pa-
}
listen (s , 1); rámetros al programa que net
at eje
utará. Probad
return s;
esto:
}
$ n
-l -p 8000 -e 'ls /tmp'
Sí, así es. Los so
ket tienen op
iones (alguien ha
on-
sultado la se
ión 7 del manual... man 7 so
ket?). Y En otra
onsola
se pueden modi
ar
on esa fun
ión que está antes del
bind. $ n
lo
alhost 8000
Bueno, ya nos hemos librado de un problema... pero
exe
ls /tmp failed : No su
h file or dire
tory
todavía queda otro.
Con todo lo que hemos visto hasta aquí y este último Sí... un a
eso shell mola eh?. Si os jáis, hemos añadi-
omentario, deberíais ser
apa
es de añadir esa op
ión do una nueva variable env y hemos
ambiado la fun-
a vuestro net
at. Para que la
osa quede más
lara,
ión exe
a utilizar. Esta nueva versión, exe
ve, nos
aquí esta la fun
ión de net
at que eje
uta el programa, permite, además de eje
utar un determinado progra-
y de la que deberíais ha
er una nueva versión: ma
on sus parámetros, estable
er una serie de varia-
bles de entorno para la eje
u
ión del mismo.
doexe
( f d )
int
fd ; En nuestro ejemplo no hemos estable
ido ninguna...
{
register
har ∗ p;
pero probad a in
luir estas líneas
env [ 0 ℄ = NULL;
e x e
v e ( name [ 0 ℄ , name , env ) ;
exit (1);
}
}
return 0;
}
$ n
lo
alhost 8080
sh: no job
ontrol in this shell
sh-3.1$ exit
exit
OCCAM's Razor | 20
EN LA PRÁCTICA
I
ros Y WINBIND
maginaros la siguiente situa
ión: Estamos en Samba ofre
e un
onjunto de herramientas que pro-
una empresa mediana o grande donde la mayoría por
ionan
one
tividad
on los proto
olos SMB/CIFS
de las máquinas usan Windows. Para fa
ilitar las usados por las maquinas Mi
rosoft Windows en la re-
tareas de trabajo en equipo han
reado un do- des lo
ales. Permite
one
tarse a unidades
omparti-
minio gestionado mediante Dire
torio A
tivo (o das tanto de Windows
omo de Samba (GNU/Linux).
A
tive Dire
tory). Kerberos es un proto
olo de autenti
a
ión en red ne
e-
sario para la identi
a
ión y autenti
a
ión de usuarios
Para los administradores de un dominio Windows, es ante A
tive Dire
tory.
una tarea trivial añadir su maquina a éste, pero la
o- Winbind realiza la aso
ia
ión de UID's y GID's
sa se
ompli
a para las máquinas
on sistema operati- GNU/Linux
on SID's de Windows. Es impres
indi-
vo GNU/Linux. Además, la estru
tura del dominio es ble para ini
iar sesión
omo usuarios en la máquina
muy
ompleja y la políti
a de añadir máquinas es muy GNU/Linux pero validando el nombre y su
ontra-
estri
ta, y ne
esita más datos de los realmente ne
e- seña en la base de datos de usuarios del Dire
torio
sarios (lugar de la máquina, número de identi
a
ión, A
tivo, ya que transforma los identi
adores de A
-
propietario, et
). Por tanto, solo se añaden máquinas tive Dire
tory en los propios de los sistema Unix, de
desde un interfaz Windows. manera que, identi
ando los usuarios frente al D.A.
Antes de
omenzar debemos estable
er unos prelimi- de Windows, el S.O. GNU/Linux les permite el ini
io
nares: de sesión
omo usuarios normales
on los privilegios
que el sistema otorga por defe
to.
1. Si en un mismo ordenador tenemos instalados Para instalarlos, se pueden usar estos
omandos:
dos Sistemas Operativos (Windows y GNU/Li-
apt-get install samba, krb5-user, winbind,
nux) habrá que
rear, en el Dire
torio A
tivo
smb
lient
(en adelante DA), una
uenta de máquina pa-
ra
ada uno de los Sistemas Operativos,
on dos
nombres net-bios diferentes y
ongurar el nom-
CONFIGURACIÓN DE FICHEROS
bre del equipo
on di
hos nombres, uno para
a-
da uno de los Sistemas Operativos. Es de
ir, si Comenzaremos la
ongura
ión
on el
hero
tenemos instalado Windows y unido el ordena- /et
/hosts
dor al dominio
on un nombre net-bios, debemos
rear otra
uenta de máquina para GNU/Linux 127.0.0.1 nombre-netbios.dominio.es lo
alhost nombre-netbios
en el Dire
torio A
tivo
on un nombre net-bios
diferente.
Realmente esto solo sirve para nuestro ordenador, pe-
2. La
ongura
ión es para Debian, modi
ad los ro si intentamos a
eder a nuestra máquina mediante
omandos a vuestros respe
tivos sistemas. nombre, nos ahorramos el a
eso al DNS. Añadimos
esta entrada en
ualquier parte del
hero.
Sin que pretendamos ahora profundizar en los pormenores del
on
epto de dominio ni en la sigularidad
del Dire
torio A
tivo, sí
onsideramos
onveniente -para fa
ilitar el entendimiento a los más profanos en la
materia- expli
ar
on un pequeño ejemplo qué es eso del dominio y qué es eso del Dire
torio A
tivo.
Para que os hagáis una idea rápida, el dominio es el grupo de elementos (ordenadores, impresoras, usuarios,
grupos de usuarios, et
) que
onforman nuestra estru
tura organizativa, y el Dire
torio A
tivo es la guía
o índi
e (o base de datos) en la que alma
enamos todos los datos -valga la redundan
ia- relativos a los
elementos del dominio: el dominio sería nuestra
iudad, y el Dire
torio A
tivo sería el
allejero -aunque
on más fun
ionalidades además de la lo
aliza
ión de las
alles-. Espero que este ejemplo os a
lare un po
o
la diferen
ia entre dominio y Dire
torio A
tivo.
OCCAM's Razor | 22
EN LA PRÁCTICA
Para
omprobar el fun
ionamiento de kerberos lo po- por la que tiene alma
enada el Dire
torio A
tivo
demos ha
er
on este
omando: se eje
uta
omo root:
que orresponde a nuestro sistema. Si se a aba de unir, bremos ambiado la ontraseña de nuestro ordenador
esperar y omprobarlo un tiempo después (5-10 minu- que no oin idirá on la que nos asignó el servidor
tos). Si la onexión es orre ta la salida del omando del dominio -lo que se produ e tras eje utar el o-
nos muestra la informa ión de la máquina que se o- mando hangetrustpw- y nos dará un error al inten-
ne ta, ontenida en el Dire torio A tivo (nombre, gru- tar autenti arnos o al pedir otra ontraseña aleatoria
Es aquí en donde interviene el programa Winbind - re- autenti
a
ión usarán y qué tipo de sesión podrán ini-
la
ionado siempre
on SAMBA, KERBEROS y PAM,
iar. Mejor di
ho, qué bases de datos ha de usar para
ada uno en su respe
tivo ámbito-, que,
omo ya se in- en
ontrar la informa
ión que le indi
ará al sistema
di
ó, estable
e la aso
ia
ión entre los identi
adores todos aquellos datos. Por tanto, debemos de
irle los
de las
uentas lo
ales que
rea GNU/Linux y las del lugares (bases de datos) donde se en
uentran los usua-
DA de Windows. rios -tanto los lo
ales
omo los del dominio-. Para ello
Para arran
ar el demonio Winbind, la máqui- modi
aremos 4
heros
omunes que son usados por
na debe saber el SID del dominio, donde ha todos los programas que ne
esitan la autenti
a
ión de
de
onsultar las
ontraseñas de usuarios. Una usuarios (gdm, login, et
).
vez
ono
ido el SID lo alma
enará en el
hero
/var/lib/samba/se
rets.tdb. Para ello hay que eje- PONED MUCHO CUIDADO, Y HACED CO-
utar
omo root: PIA DEL DIRECTORIO /et
/pam.d/ .
Si después no podéis ini
iar el ordenador, no os
net rp
getsid -w DOMINIO preo
upéis. Arran
áis un GNU/Linux Live-
d,
montáis la parti
ión de GNU/Linux del dis
o
Si todo ha ido bien, nos lo
onrmará di
iendo que el
duro, y restauráis el dire
torio /et
/pam.d/ o
SID del DOMINIO esta en se
rets.tdb. (En
aso de
los
heros que habéis to
ado.
error, sería
onveniente
omprobar en prin
ipio que sí
tenemos esta linea en el ar
hivo de
ongura
ión de El
hero /et
/pam.d/
ommon-a
ount, nos indi
a
samba: dónde bus
ar las
uentas de usuario. Para ello, le de-
imos al sistema que es su
iente que el usuario sea
in
lude = /et
/samba/dh
p.
onf
del dominio (winbind), y en
aso de que no lo sea, es
ne
esario que el usuario sea del sistema (lo
al).
ya que el error puede produ
irse por haber omitido o
no haber es
rito bien di
ha línea).
A partir de ahora se puede arran
ar el demonio Win- a
ount suffi
ient pam_winbind.so
bind, sin que tenga ningún error. Eje
utar
omo root:
a
ount required pam_unix.so try_first_pass
OCCAM's Razor | 24
EN LA PRÁCTICA
A tualmente, debido a la re iente preo upa ión por da tilogramas y podéis fabri ar uno fá ilmente on
la seguridad públi a, vivimos una épo a de gran inte- un folio y un tintero de ruñar (ojo, lavar las ma-
rés en la investiga ión en sistemas biométri os. Como nos después on al ohol). Hoy en día existen le tores
deni ión, un sistema biométri o es aquél que reali- ele tróni os de diferentes te nologías ( apa itivos, RF,
za identi
a
ión o veri
a
ión de la identidad de un ópti
os, térmi
os ...) [1,2℄.
individuo utilizando algún rasgo físi
o medible (
ara, El pro
esado automáti
o de huellas da
tilares
on -
huella da
tilar, forma de la mano) o algún patrón de nes legales
omenzó en los años 70 [3℄. Esta referen-
omportamiento personal (
ara
terísti
as de la voz o
ia que os paso es un informe realizado por el NIST
de la es
ritura, rma ...). Ojo, identi
a
ión es dife- (National Institute of Standards and Te
hnology) que
rente de veri
a
ión ( indenti
a
ión: no sé quién es es un
entro de I+D del ministerio de
omer
io norte-
el individuo, tengo una o varias muestras y lo bus
o ameri
ano. Esta gente se dedi
a a ha
er informes sobre
en una base de datos; veri
a
ión: de alguna manera temas que puedan interesar a las empresas de su país y
sé quién es o, por lo menos, lo sospe
ho y uso medidas tienen la buena
ostumbre de ha
erlos públi
os a todo
biométri
as para
omprobarlo). La veri
a
ión suele el mundo mundial (bueno, por algunos
obran). Entre
ser un problema más simple y de solu
ión más rápida las
osas que distribuyen gratuitamente se en
uentra
(porque no hay que bus
ar en una base de datos sólo el NFIS (NIST Fingerprint Image Software) que es un
medir el pare
ido entre diferentes muestras). Los ras- CD que
ontiene software da
tilos
ópi
o (apli
a
iones
gos usados por sistemas biométri
os deben tener las de
ompresión y de
lasi
a
ión de imágenes de hue-
siguientes
ara
terísti
as: llas).
OCCAM's Razor | 26
TECNOLOGÍA
No os pongáis a temblar... las huellas del DNI no La da
tilos
opia española dene
lases muy similares
pueden usarse para bus
ar a un sospe
hoso así por aunque ligeramente diferentes. Una huella según el sis-
las buenas. Sólo se usan si hay orden judi
ial y eso tema español (Clasi
a
ión de Federi
o Olóriz basada
o
urre
uando hay otros indi
ios y se quiere
onr-
en trabajos de Henry, Galton y Vu
eti
h estándar en
mar la identidad de alguien (ejemplo típi
o de uso
España, Bolivia, Colombia y Perú) se puede
lasi
ar
es la identi
a
ión de un
adáver irre
ono
ible). Por
otra parte, la base de datos del DNI es muy difí
il
omo: adelta (no tiene deltas, se trata de un ar
o o
de usar: primero, porque es muy grande y, segundo, ar
o de
arpa), dextrodelta (delta a la dere
ha y la-
porque sólo tiene la huella del índi
e dere
ho. Las zo
entral a la izquierda: lazo izquierdo), sinistrodelta
huellas de los diez dedos son independientes y nun- (delta a la izquierda, lazo a la dere
ha: lazo dere
ho)
a vamos a saber
uál es la huella que en
ontramos y bidelta (dos deltas a ambos lados, en estos
asos el
en el lugar de autos (o en un
uerpo mutilado), Sí, nú
leo ha
e un remolino: anillo de
resta). Fijaos que
sí,
uando la poli
ha a alguien le toman las diez hemos puesto de maniesto los pare
idos y diferen
ias
huellas. entre ambos sistemas.
Fig1. Izquierda: nú elo y delta de una huella. Dere ha: división en regiones utilizando los puntos singulares.
Fig 2. Tipos de huellas (da tilos opia de Henry, EE.UU. y Reino Unido
A
tualmente, existen sistemas automáti
os que
lasi- los OCR's. En la imagen de entrada hay 256 ni-
an las huellas en este tipo de
lases. Por ejemplo, veles de gris y hay que dejarlo en 2. En los
asos
el PCASYS [3℄ es un software libre (parte del NFIS) más fá
iles llega
on poner un umbral pero és-
que realiza la
lasi
a
ión de Henry. El método de te es un
aso muy difí
il y el umbral se
al
ula
PCASYS (expli
ado muy brevemente) sería así (ojo, en
ada punto según las
restas que lo rodean.
ahora dejo por un momento el estilo divulgativo y me Fijaos que estamos dedi
iendo, ¾dónde están las
vuelvo más té
ni
o, esto ya es pro
esado de imagen):
restas y donde los valles o sur
os? A lo mejor
para pre
lasi
ar, daba igual equivo
arse en un
Dividir la imagen en subregiones. En
ada una par de sitios pero aquí ya no da tan igual.
se extraen datos de la dire
ión predominante
(que ángulo forman las
restas). Después todas las líneas que son más gruesas
que un píxel se adelgazan (thinning) para poder
Con todos esos datos (números) se forma un ve
- seguirlas (un buen libro de pro
esado de imagen
tor (ve
tor de
ara
terísti
as, que es
omo se le que expli
a la binariza
ión, el thinning y mu
ho
llama a los
onjuntos de
ara
terísti
as numéri- más es [5℄) de las
restas.
as que usan todos los
lasi
adores automáti-
Siguiendo las líneas (las
restas) se lo
alizan y
os).
lasi
an las minu
ias.
El ve
tor se pro
esa
on una red neuronal.
MINDTCT [3℄ es una apli
a
ión libre que realiza esta
Las redes neuronales [4℄ aprenden a re
ono
er
labor (
omo no, parte del NFIS).
uando un ve
tor de
ara
terísti
as
orrespon-
de a la
lase 1, a la 2... o a ninguna. Para ello,
OTROS SISTEMAS
se ha
en unas opera
iones matemáti
as que imi-
tan el fun
ionamiento del sistema nervioso de los Existen otros mu
hos algoritmos para
omparar hue-
humanos y animales. Sí, sí, es uno de los inven- llas pero sólo los que expli
amos ahora se pueden usar
tos más interesantes que
onoz
o... El libro de en un jui
io. Estos nuevos métodos suelen ser más
la referen
ia 4 es muy, muy bueno. simples y más rápidos y su apli
a
ión más
ono
ida
es en sistemas de
ontrol de a
esos (
ontrol de a
eso
físi
o a un re
into o de a
eso a un sistema
omo un
COMPARACIÓN DE HUELLAS (MINU- ordenador). En estos sistemas suele haber un le
tor
CIAS) ele
tróni
o que no tiene tantos problemas
omo los
da
tilogramas lo que también aligera el pro
esado (en
El método estándar (y el mar
ado por la legisla
ión
on
reto no se suelen usar métodos de binariza
ión
en todo el mundo) para la
ompara
ión exhaustiva de
tan sositi
ados).
huellas es el de la extra
ión de minu
ias. Las minu-
ias son los puntos singulares en
ontrados en el trazo
de las
restas (puntos donde se bifur
an, terminan...).
En una huella puede haber más de 100 minu
ias. La
ley en España (y en mu
hos otros países) estable
e
que dos huellas
on 12 o más minu
ias
oin
identes
no pueden ser diferentes (las minu
ias deben
oin
idir
en tipo, posi
ión respe
to al nú
leo y dire
ión o án-
gulo respe
to a la horizontal). Nótese que basta
on
en
ontrar 12
oin
iden
ias, da igual el resto de minu-
ias (esta regla permite
omparar
on trozos de huellas
y/o
on huellas de baja
alidad).
Los sistemas que dete
tan automáti
amente minu
ias
se basan en (de nuevo hablo de pro
esado de imagen):
Fig 3. Tipos de minu
ias (izquierda). Las ables para
Dividir la huella en trozos y en
ada uno, de
i- la
lassi
a
ión son sólo las termina
iones y bifur
a-
dir que puntos son negros y
uáles blan
os. Eso
iones (las otras, a ve
es, se llaman minu
ias falsas).
es una opera
ión llamada binarizar y lo ha
en Dere
ha, ejemplo de dos tipos: bifur
a
ión (
uadrado)
mu
hos sistemas de pro
esado de imagen
omo y n de
resta (
ír
ulo).
OCCAM's Razor | 28
TECNOLOGÍA
Si queréis
ono
er en detalle un sistema de este tipo de rayas (y las rayas pueden ser horizontales,
podéis leer este breve artí
ulo (eso sí, es un artí
u- verti
ales, en ángulo.... sí, sí,
omo dideñador
lo más formal que los que podéis en
ontrar en esta de moda no iba a tener éxito). La textura se
revista): mide de diferentes maneras (el tema es apli
ar
alguna opera
ión que dé resultados diferentes en
http://www.gpi.ts
.uvigo.es/pub/papers/said.pdf
texturas diferentes). Nosotros apli
amos el ltro
Gabor [6℄ (una
onvolu
ión 2D) que es muy uti-
Sí, sí, no he resistido la tenta
ión de ha
erme propa-
lizado para des
ribir texturas.
ganda a mí mismo... además, así sabéis
ómo se me
ha dado por aprender estas
osas (el artí
ulo es un
Métodos muy pare
idos a éste son los que se usan para
resumen del Proye
to Fin de Carrera del alumno F
o.
re
ono
er el dibujo del iris, pero ese debería ser otro
Javier Suárez López titulado Sistema Automáti
o de
artí
ulo de la serie...
Identi
a
ión Da
tilar).
Por si sois algo vagos y no queréis leer el ladrillo ese
REFERENCIAS
lleno de fórmulas os puedo expli
ar un po
o de qué
va este método, muy pare
ido a otros que se usan en [1℄ http://www.atmel.
om.
este tipo de sistemas (de nuevo mar
o el párrafo
omo [2℄ P. Olguín, Sensores Biométri
os, Revista Ele
tró-
texto de pro
esado de imagen): ni
a de la Es
uela de Ingeniería Elé
tri
a (Universidad
Central de Venezuela, http://www.u
v.ve), n
o 6, 1999.
Primero se bus
a el
entro de la huella. Para eso
[3℄ M.D. Garris et al, NIST Fingerprint Ima-
hay que re
orrer las
restas midiendo gradientes
ge Software NISTIR 6813 (National Institute
y
urvaturas.
of Standards and Te
hnology - Internal Report,
Una vez en
ontrado se trata de poner en
ima http://www.nist.gov), 2001.
una malla
ir
ular que dene unos puntos de [4℄ S. Haykin, Neural Networks. A Comprehensive
interés. En
ada punto se mide la textura de Foundation, Prenti
e Hall, 1999.
la imagen y
on todas las texturas se
rea un [5℄ A.K. Jain, Fundamentals of Digital Image Pro
es-
ve
tor de
ara
terísti
as. ¾Qué es la textura de sing, Ed. Prenti
e Hall, 1989.
la imagen? digamos que es la des
rip
ión de un [6℄ L. Hong et al, Fingerprint Image Enhan
ement:
entorno del punto en el que estamos. Una
a- Algorithm and Performan
e Evaluation, IEEE Trans.
misa de
uadros es una textura diferente a una PAMI, 20(8), 777-789, 1998.
o amrazor $ su -
A
Password:
rootrazor # mkdir -p /opt/vm/dsl-o
am
lguna vez os han pasado un programa y
rootrazor #
d /opt/vm/dsl-o
am
uando habéis intentado
ompilarlo, un montón
rootrazor # mkdir filesystem
de librerías perdidas os han desanimado?. O...
rootrazor # mkdir master
os gustaría enseñarle a alguien ese programa tan rootrazor # mkdir temp
hulo que habéis es
rito, pero habéis desistido
por el he
ho de tener que expli
ar
omo
on-
Bien, a
abamos de
rear tres dire
torios sobre los que
gurar todo el entorno para que fun
ione?. No
desesperéis. Los live-CDs vienen al res
ate.
trabajaremos. El primero, filesystem, será donde ge-
neremos el sistema de
heros de nuestra live. El se-
gundo, master, es el que
ontendrá los
heros que
Los live-CDs se han popularizado en los últimos años
irán en el CD... bási
amente un sistema de arranque
y la verdad es que son algo realmente útil. Seguro
y una imagen
omprimida del
ontenido del dire
torio
que todos sabéis de qué estamos hablando, pero por
anterior (filesystem).
si todavía queda algún despistado, os diremos que, un
live-CD permite arran
ar un sistema
ompleto desde
CD (o DVD) sin ne
esidad de instalar absolutamente Los Live-CD basados en KNOP-
nada en el dis
o duro del ordenador que lo eje
ute. PIX son muy fá
iles de persona-
Las posibilidades son ilimitadas, pero nosotros nos
lizar
entraremos en una apli
a
ión muy sen
illa para ilus-
trar el pro
eso y que luego podáis llevar a
abo vues-
tros propios proye
tos. Finalmente, el dire
torio temp, lo utilizaremos para
Sen illamente vamos a ver omo añadir nuestros pro- osas temporales :). Observad que lo primero que ha-
pios programas a una distribu ión live, de forma que emos es ha ernos root (valga la redundan ia). Varios
podamos distribuirlos on la seguridad de que se van de los pasos que siguen se pueden ha er omo usuario
a eje utar en un entorno orre to. Bueno, esto es normal, pero otros no, así que en este texto haremos
así, siempre y uando vuestro programa no utili e un todo el pro eso omo root, aunque en general esto no
OCCAM's Razor | 30
DISTROS
El primer paso del pro
eso
on- (bueno,
asi) es
omo si hubiéramos arran
ado
on el
CD que estamos manipulando.
siste en destripar un live-CD La forma de ha
erlo es la siguiente.
PIX (v 5.1) propor iona una versión más moderna de tra live, para que se note que es úni a e in omparable.
reate_ ompressed_fs. Si estamos trabajando sobre Lo primero que vamos a ha er es ambiar la pantalla
esta distribu
ión, simplemente tenemos que eje
utar: de arranque. Esto no tiene nada que ver
on DSL ni
on KNOPPIX, sino
on isolinux, el gestor de arran-
que que estas distribu
iones utilizan.
rootrazor # filesystem/usr/bin/
reate_
ompressed_fs \
> temp.iso master/KNOPPIX/KNOPPIX Si e
hamos un ojo al dire
torio master/boot/isolinux,
nos en
ontraremos
on un
hero llamado logo.16...
ese es el
hero que tenemos que modi
ar. Puesto
Ahora tendremos en el dire
torio filesystem un - que utiliza un formato espe
ial, tendremos que utili-
hero llamado KNOPPIX que ya podremos utilizar di- zar algunos programas para obtenerlo.
re
tamente para generar nuestro live-CD. Lo primero que haremos es
rear nuestra amante
imagen
on nuestro programa de dibujo preferido (va-
GENERANDO Y PROBANDO EL mos, el GIMP :). Esta imagen, debe tener un tamaño
LIVE-CD de 640x400 y 16
olores o menos. Podéis trabajar
on
olor real y
onvertir la imagen a indexed
olor
uan-
Con todos los elementos que hemos ido produ
ien-
do la tengáis lista.
do, la genera
ión del live-CD se redu
e a generar una
Grabaremos nuestra splash s
reen en formato ppm
imagen arran
able
on los
heros que hemos alma-
para poder utilizar las herramientas
on las que gene-
enado en el dire
torio master. Pero antes debemos
rar el
hero logo.16 de la siguiente forma:
in
luir nuestro nuevo sistema de
heros.
Esto es lo que debemos eje
utar:
o
amrazor $ ppmtolss16 < logo.pnm > logo.16
℄
o
amrazor $
p logo.16 master/boot/isolinux
rootrazor #
p filesystem KNOPPIX \
> master/KNOPPIX/KNOPPIX
rootrazor # mkisofs -pad -l -r -J -v \
> -V "O
am's Razor. La Revista" -no-emul-boot \
> -boot-load-size 4 -boot-info-table \
> -b boot/isolinux/isolinux.bin \
> -
boot/isolinux/boot.
at \
> -hide-rr-moved -o dsl-o
ams.iso \
> /opt/vm/dsl-o
ams/master/
OCCAM's Razor | 32
DISTROS
siguiente: e
ho "------------------------------------------------------------"
e
ho "Generando CD bootable"
e
ho "------------------------------------------------------------"
mkisofs -pad -l -r -J -v -V "O
am's Razor. La Revista" \
/opt/monkey/bin/banana start -no-emul-boot -boot-load-size 4 -boot-info-table \
-b boot/isolinux/isolinux.bin -
boot/isolinux/boot.
at \
-hide-rr-moved -o dsl-o
ams.iso /opt/vm/dsl-o
ams/master/
OCCAM's Razor | 34
MAKING OF
te posi
ionar imágenes arbitra-
omo una
olumna está junto a la otra, pero la se-
gunda empieza un po
o más abajo debido a que la
riamente en la página
abe
era está fuera de la
olumna.
Como de íamos, la página editorial está ompuesta se dibuja en el orden en el que apare e en hero
de dos olumnas posi ionadas de forma libre gra ias fuente. Así, si ponemos nuestra imagen omo primer
al paquete TextPos. Veamos
omo lo ha
emos: elemento de la página,
ualquier texto o imagen que
se dibuje posteriormente se sobreimpondrá a esta pri-
mera.
\begin{textblo
k}{30}(-1.5,-15)
Primera
olumna Los artí
ulos que
ontienen más de una imagen en su
\end{textblo
k} primera página, tendrán, obviamente, varias líneas de
este tipo.
Tras la imagen, y justi
ado a la dere
ha, en
ontra- La segunda es para tener
ontrol sobre el lugar
mos la
abe
era propiamente di
ha,
ompuesta por el en el que apare
en las guras que se posi
ionan
nombre de la se
ión (que apare
e en la parte supe- de forma espe
ial (
on pstri
ks).
rior dere
ha de la página), un título, un subtítulo, el
Si alguien
ono
e una forma mejor de ha
erlo, esta-
nombre del autor y una línea de puntos que la separa
ríamos muy interesados en
ono
erla :).
del resto del artí
ulo.
pstri ks, el ual se responsable de dibujar la línea de mandos de forma onse utiva.
ABSTRACTS
Se han denido varios
omandos Nos queda por
omentar algunos de los elementos que
apare
en en los distintos artí
ulos, tales
omo los abs-
para fa
ilitar la
rea
ión de
abe- tra
ts o introdu
iones, al prin
ipio de
ada uno de
eras ellos y los listados y
uadros que
iertos artí
ulos in-
luyen.
Los abstra
ts se in
luyen dentro de una
olorbox que,
Los
omandos mtitle y msubtitle, simplemente nos a su vez, in
luye un entorno minipage en el que el
permiten
ambiar el tamaño y
olor del título y el primer
ará
ter se re-es
ala utilizando un
omando
subtítulo respe
tivamente. resizebox. Es ne
esario in
luir el texto en un en-
torno minipage para poder ajustar la
aja de
olor
COMPONIENDO EL ARTÍCULO a la
olumna.
Preparar el uerpo del artí ulo es lo que resulta más Si omprobáis las fuentes, veréis que la mayoría de es-
pesado, puesto que es ne esario partirlo en páginas de tas introdu iones in luyen todos estos omandos al
forma manual por dos razones fundamentales: prin
ipio de
ada artí
ulo.
En el
hero portada.tex se in
luye un
omando para
la primera es que queremos insertar el título de generar estas introdu
iones en un solo paso. Veámos-
la se
ión en
ada página. lo:
OCCAM's Razor | 36
MAKING OF
% Crea el
uadro de introdu
ión al prin
ipio
omando lstset el que nos permite
ongurar
omo
% de
ada artí
ulo se visualizará nuestro programa en el do
umento nal.
\new
ommand{\intro}[3℄{ En este ejemplo, el
omando lstset,
ongura el en-
\
olorbox{#1}{ torno para:
\begin{minipage}{.9\linewidth}
\vspa
e{2mm} Utilizar el lenguaje C.
{{\resizebox{!}{1.0
m}{#2}}{#3}}
Dibujar las líneas de arriba ([t℄op) y de abajo
\vspa
e{1mm}
([b℄ottom) del
uadro.
\end{minipage}
} Introdu
ir una separa
ión de 5 puntos entre el
\vspa
e{4mm}
uadro y el texto.
}
Utilizar el tamaño de fuente small para el texto
dentro del entorno.
Como se puede observar en este fragmento de
ódigo,
el
omando espera re
ibir tres parámetros. El prime-
ro es el
olor de fondo que se pasa a
olorbox
omo Tanto la portada
omo el suma-
#1. El segundo parámetro es el primer
ará
ter de la
introdu
ión, el
ual, apare
e
on un tamaño mayor.
rio son imágenes generadas
on
Finalmente,
omo ter
er parámetro pasaremos el resto GIMP
del texto de la introdu
ión.
Podéis ver
omo utilizar este
omando, por ejemplo,
Este paquete dispone de una do
umenta
ión bastante
en el
hero distros.tex en las fuentes del número 1
buena en la que se des
riben todas las op
iones que
de nuestra revista o en
ualquiera de los artí
ulos del
propor
iona. Una de las más interesantes es la exi-
número 2.
bilidad que propor
iona para la numera
ión de líneas.
Eso ya lo dejamos para que los más
uriosos se entre-
\intro{intro
olor}{Q}{ué te pare
ería ...}
tengan.
PORTADA Y SUMARIO
LISTADOS
Los últimos elementos que nos quedan por
omentar
Varios artí
ulos in
luyen
ódigo fuente en algún len- son la portada y el sumario de la revista. En general,
guaje de programa
ión. En general, este
ódigo lo po- estos dos elementos deben resultar atra
tivos a la vis-
demos introdu
ir dentro de un entorno verbatim que AT X, aunque posible,
ta y su
omposi
ión utilizando L E
onserve el indentado y los
ara
teres espe
iales que requiere demasiado trabajo.
suelen apare
er en los programas. Por esa razón, ambos elementos se generan
omo imá-
Sin embargo, siempre que sea posible, utilizamos genes
readas
on la herramienta The GIMP que es
el paquete listing, que nos propor
iona un entorno una auténti
a maravilla.
lstlisting para ha
er un pretty-printing de un
fragmento de
ódigo. ZONA GEEK
Sí, hasta para el pro
eso de la genera
ión del pdf nal
El paquete listing nos permite de la revista podemos ser un po
o raritos. Lo pri-
formatear
ódigo fuente. mero que podéis observar es que tanto el pdf
omo el
posts
ript nales de la revista se generan
on la herra-
mienta make... la misma que utilizamos para
ompilar
El paquete listings ofre
e un ámplio abani
o de posi- nuestros programas.
bilidades y, sobre todo, es
apaz de manejar un gran Lo segundo es que, la fe de erratas o in
luso, la tradu
-
número de lenguajes de programa
ión. Veámos un par
ión de la revista a otros idiomas se pueden distribuir
de ejemplos extraídos del
hero murapido.tex.
omo par
hes :). Sí par
hes
omo los que apli
amos al
kernel o a
ualquier paquete de software... Mola!.
\lstset{language=C,frame=tb,framesep=5pt, Por
ierto, que ya está disponible, en nuestra web, el
basi
style=\small} par
he
on la Fé de Erratas del número 1 ;).
\begin{lstlisting}
#in
lude <stdio.h>
ESTO ES TODO
int main() { Bueno, más o menos esto es todo lo que hay que saber
har buffer[1024℄; para modi
ar O
am's Razor o para
rear tu pro-
gets (buffer); pia publi
a
ión LaTeX. Como habréis
omprobado el
printf ("%s", buffer); pro
eso es bastante sen
illo, pero un po
o tedioso y
}
tiene sus
osas buenas y sus
osas no tan buenas.
\end{lstlisting}
Finalmente, nos gustaría saber de
ualquier proye
to
que llevéis a
abo utilizando lo que aquí hemos
onta-
Como podéis observar, el
ódigo simplemente se in- do. Ya sabéis, Uno se alegra de ser útil ;)
trodu
e en un entorno lstlistings sin más. Es el
OCCAM's Razor | 38
TRUCOS
o
amrazor #
d ~o
ams
o
amrazor #
d ~pepe
o
amrazor #
d ~/download
o
amrazor #
d ~o
ams/download DESCARGANDO PÁGINAS COMO FI-
CHEROS DE TEXTO
En o
asiones resulta interesante poder des
argar pági-
COMPILANDO EN UN CORE DUO nas web desde la línea de
omandos
omo texto plano.
La utilidad make omo la mayoría de las disponibles en Esto permite, por ejemplo, pro esar el ontenido de la
ualquier sistema UNIX tienen un montón de op io- página on un s ript, para extraer la informa ión que
nes, en general, no muy ono idas. A parte del infame nos interese de forma sen illa.
-f, la op
ión -j nos permite ini
iar varios pro
esos para
o
amsrazor $ lynx -dump \
eje
utar de forma paralela las reglas del Makefile. > http://webs.uvigo.es/o
ams-razor > o
ams.txt
Aquí tenéis un pequeño ejemplo
on sus tiempos de
o
amsrazor $ elinks -dump -dump-width 150 \
eje
u
ión en un Intel Core Duo. > http://webs.uvigo.es/o
ams-razor > o
ams.txt