HACK X CRACK:              T C P / I P - - H E R R A M I E N TA S B A S I C A S

                            P
           ...
P
                              A
                              S
                              O
            aa
     P A ...
EDITORIAL
      el tiempo y las promesas
Grandes cambios se han sucedido en las últimas semanas
en este país. No, no me re...
Curso de PHP
      Manejo de formularios web


                - FORMULARIOS EN PHP: Trabajaremos con los datos.
         ...
Programación PHP - Programación PHP - Programación PHP - Programación PHP




 </TABLE>
 </FORM>
   <A HREF="javascript:wi...
Programación PHP - Programación PHP - Programación PHP - Programación PHP




               La primera es que así nos ase...
Programación PHP - Programación PHP - Programación PHP - Programación PHP




                                            ...
Programación PHP - Programación PHP - Programación PHP - Programación PHP




          $HTTP_POST_VARS                   ...
SERVIDOR DE HXC
                                               MODO DE EMPLEO

- Hack x Crack      ha habilitado tres
serv...
Serie Xbox Life (IV)
        Convirtiendo nuestra Xbox en un
                centro Multimedia.


          - ¿Podemos ver...
Programación PHP - Programación PHP - Programación PHP - Programación PHP




            El calibrar la lente lleva sus r...
Programación PHP - Programación PHP - Programación PHP - Programación PHP




 <nameserver>192.168.0.1</nameserver>       ...
Programación PHP - Programación PHP - Programación PHP - Programación PHP




 #Configuración para las fotos !#           ...
Programación PHP - Programación PHP - Programación PHP - Programación PHP




 #Mis videos !#                             ...
ProgramaciOn en GNU/LiNUX
                            Memoria Compartida
                          el_chaman. Luis U. Rodr...
Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux




          (permiso de lectu...
Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux




               #include <sy...
Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux




            fprintf(stderr,...
Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux




       // Limpieza de memor...
Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux




             Y en otro term...
CURSO DE TCP/IP (2ª Entrega)
            EL PROTOCOLO DE TRANSPORTE                                                       ...
Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP




             decir es que no os prom...
Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP




                                    ...
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Hxc18
Upcoming SlideShare
Loading in …5
×

Hxc18

1,489 views
1,397 views

Published on

Seguridad Informatica

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,489
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
47
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Hxc18

  1. 1. HACK X CRACK: T C P / I P - - H E R R A M I E N TA S B A S I C A S P P A A S S O O P A S Oa P A a a a a a a aa a a a a a 3 SERVIDORES ON LINE PARA TUS PRACTICAS DE HACK NUMERO 18 DESCUBRIMOS EL POTENCIAL DEL XML TCP / IP: UDP PROTOCOLO DE DA AGRAMAS TOCOLO DAT DE USUARIO LINUX COMUNICACION ENTRE PROCESOS PASO DE VARIABLES Nº 18 -- P.V.P. 4,5 EUROS 00018 8 414090 202756 LOS MEJORES ARTÍCULOS GRATIS EN NUESTRA WEB P C PA S O A PA S O : C R E A N D O F O R M U L A R I O S C O N P H P ! ! !
  2. 2. P A S O aa P A S Oaa aa a a aa a a a a a a aa EDITORIAL: EDITOTRANS S.L. Director de la Publicación J. Sentís C.I.F: B43675701 PERE MARTELL Nº 20, 2º - 1ª E-mail contacto 43001 TARRAGONA (ESPAÑA) director@hackxcrack.com Director Editorial Diseño gráfico: I. SENTIS J. M. Velasco E-mail contacto director@editotrans.com E-mail contacto: Título de la publicación Los Cuadernos de HACK X CRACK. grafico@hackxcrack.com Nombre Comercial de la publicacíón PC PASO A PASO Redactores Web: www.hackxcrack.com AZIMUT, ROTEADO, FASTIC, MORDEA, FAUSTO, Dirección: PERE MARTELL Nº 20, 2º - 1ª. ENTROPIC, MEIDOR, HASHIMUIRA, BACKBONE, 43001 TARRAGONA (ESPAÑA) ZORTEMIUS, AK22, DORKAN, KMORK, MAILA, TITINA, SIMPSIM... ... ... ... ... ¿Quieres insertar publicidad en PC PASO A Contacto redactores PASO? Tenemos la mejor relación precio-difusión redactores@hackxcrack.com del mercado editorial en España. Contacta con nosotros!!! Colaboradores Mas de 130 personas: de España, de Brasil, de Director de Marketing Argentina, de Francia, de Alemania, de Japón y Sr. Miguel Mellado algún Estadounidense. Tfno. directo: 652 495 607 Tfno. oficina: 877 023 356 E-mail: miguel@editotrans.com E-mail contacto colaboradores@hackxcrack.com Imprime I.G. PRINTONE S.A. Tel 91 808 50 15 DISTRIBUCIÓN: SGEL, Avda. Valdeparra 29 (Pol. Ind.) 28018 ALCOBENDAS (MADRID) Tel 91 657 69 00 FAX 91 657 69 28 WEB: www.sgel.es TELÉFONO DE ATENCIÓN AL CLIENTE: 977 22 45 80 Petición de Números atrasados y Suscripciones (Srta. Genoveva) HORARIO DE ATENCIÓN: DE 9:30 A 13:30 (LUNES A VIERNES) © Copyright Editotrans S.L. NUMERO 18 -- PRINTED IN SPAIN PERIOCIDAD MENSUAL Deposito legal: B.26805-2002 Código EAN: 8414090202756
  3. 3. EDITORIAL el tiempo y las promesas Grandes cambios se han sucedido en las últimas semanas en este país. No, no me refiero al cambio de gobierno, eso es lo de menos… lo importante son los cambios sociales, esos que hacen de nosotros quienes realmente somos. 4 EDIT ORIAL 5 Cur so de PHP: Mane jo de F or mularios W eb Hace tiempo, en el Foro de Hack x Crack se creó un hilo 11 XB O X (IV): Con vier t ela en un centr o multimedia donde hablamos sobre el futuro de la humanidad. Unos, pesimistas, argumentaban que el hombre acabaría 16 Pr ogramación bajo linux: Memoria com par tida destruyendo su entorno y a sí mismos… otros, optimistas, 22 Cur so de T CP/IP (II) UDP creían que en el ser humano sería lo suficientemente 40 Cur so XML: XSL inteligente como para superar las adversidades de la evolución. 50 La r ealidad de los vir us inf or máticos Yo no conozco el futuro, ignoro lo que le depara el futuro a la humanidad, pero SI SE QUE EL FONDO DEL SER 10 Ser vidor HXC : Modo de em pleo. HUMANO ES BUENO. 21 Colabora con noso tr os. ¿Argumento? Muy simple, la realidad. En Marzo pude 38 Descarga nues tr os logos y melodias. ver como unos hombres y mujeres que acababan de salvarse 38 Ganador SUSE LINUX de la muerte, volvían al peligro para salvar a otros hombres y mujeres que ni tan siquiera conocían. Y pude ver como 39 Suscripciones. otros hombres y mujeres que podrían haberse quedado a 65 Númer os atrasados. salvo en sus casas, optaron por enfrentarse al peligro para ayudar a sus semejantes. Tengo la certeza de que el hombre, en su interior más profundo, es bueno. Eso me da esperanza y fuerzas para seguir adelante, fuerza para creer que unos pocos jamás podrán doblegar a la mayoría… y la mayoría es buena, la mayoría somos héroes, la mayoría sacamos de nuestro interior lo mejor que tenemos en los momentos más difíciles. No olvidemos nunca a quienes han dejado de vivir para regalarnos la vida al resto. GRACIAS...
  4. 4. Curso de PHP Manejo de formularios web - FORMULARIOS EN PHP: Trabajaremos con los datos. - Enviaremos datos de una página a otra, - Los recogeremos y finalmente los trataremos. En la navegación web intervienen los Si nos fijamos, veremos que las variables no siguientes elementos: poseen el símbolo $ delante. Esto se debe a Un Cliente (Navegador Web) que en realidad este modo de pasar variables Un Servidor Web es común a todos los lenguajes (ASP, PHP, JSP,...) Una Petición (Request) Una Respuesta (Response) Las variables las recibe la página destino del enlace, y ya podemos trabajar directamente En pocas palabras, un cliente (Navegador con ellas; pero no siempre se definen Web) realiza peticiones (Request) a un automáticamente las variables recibidas por Servidor Web que responde (Response) las parámetro en las páginas Web, depende de páginas web que están almacenadas en él. una variable de configuración de PHP: register_globals, que tiene que estar Normalmente cuando se desarrollan páginas activada para que así sea. Web, es necesario que los datos recogidos en un primer momento se “arrastren” entre A continuación vamos a explicar esto en un las diferentes páginas mientras nos sean ejemplo. Tenemos dos páginas, registro1.php necesarios. y registro2.php, que siguen los pasos para un registro simple de usuarios. Un ejemplo muy claro de esto es un sistema de registro de usuarios, todos nos hemos <HTML> registrado en algún portal o algún “site”, y <HEAD> para realizar el registro completo hay que <TITLE>Registro Paso 1</TITLE> realizarlo por pasos, donde cada paso es una </HEAD> página Web diferente y los datos obtenidos <BODY> en la primera página se deben mantener <FORM NAME=”formRegistro1”> hasta la finalización del registro. <TABLE BORDER=”1”> <TR> Variables a través de la URL <TD>Nombre:</TD> <TD><INPUT TYPE=”TEXT” NAME=”NOMBRE” VALUE=””></TD> Para pasar las variables de una página PHP </TR> a otra, lo podemos hacer introduciendo dicha <TR> variable dentro del enlace hipertexto de la <TD>Apellidos:</TD> página destino. <TD><INPUT TYPE=”TEXT” NAME=”APELLIDOS” VALUE=””></TD> </TR> La sintaxis sería la siguiente: <TR> <TD>Email:</TD> <a href="destino.php?var1=valor1&var2=valor2&...">enlace</a> <TD><INPUT TYPE=”TEXT” NAME=”EMAIL” VALUE=””></TD> </TR> PC PASO A PASO Nº 18 Página 5
  5. 5. Programación PHP - Programación PHP - Programación PHP - Programación PHP </TABLE> </FORM> <A HREF="javascript:window.location.ref. = 'registro2.php?nombre=' + document.formRegistro1.NOMBRE.value + '&apellidos=' + document.formRegistro1.APELLIDOS.value + '&email=' + document.formRegistro1.EMAIL.value">Enviar</A> </BODY> </HTML> Si nos fijamos en la barra de dirección del navegador de la imagen anterior, en la URL de la página aparecen las variables junto al valor que les hemos rellenado en el formulario. $HTTP_GET_VARS También es posible recopilar en una variable tipo array el conjunto de variables que han sido enviadas al script por este método a partir de la variable de sistema $HTTP_GET_VARS, que es un array asociativo. <HTML> <HEAD> <TITLE>Registro Paso 2</TITLE> </HEAD> <BODY> <HTML> Usuario Registrado: <HEAD> <TABLE BORDER=”1”> <TITLE>Registro Paso 2</TITLE> <TR> </HEAD> <TD>Nombre:</TD> <BODY> <TD><? print($HTTP_GET_VARS["nombre"]);?></TD> Usuario Registrado: </TR> <TABLE BORDER=”1”> <TR> <TR> <TD>Apellidos:</TD> <TD>Nombre:</TD> <TD><? print($HTTP_GET_VARS["apellidos"]);?></TD> <TD><?= $nombre;?></TD> </TR> </TR> <TR> <TR> <TD>Email:</TD> <TD>Apellidos:</TD> <TD><? print($HTTP_GET_VARS["email"]);?></TD> <TD><?= $apellidos;?></TD> </TR> </TR> </TABLE> <TR> </BODY> <TD>Email:</TD> </HTML> <TD><?= $email;?></TD> </TR> Aunque podamos recoger variables que se </TABLE> definen directamente en nuestra página, </BODY> resulta más seguro utilizar $HTTP_GET_VARS </HTML> por dos razones: Página 6 PC PASO A PASO Nº 18
  6. 6. Programación PHP - Programación PHP - Programación PHP - Programación PHP La primera es que así nos aseguramos que <TR> esa variable viene realmente de la URL <TD>Nombre:</TD> <TD><INPUT TYPE=”TEXT” NAME=”NOMBRE” VALUE=””></TD> La segunda, que así nuestro código será </TR> más claro cuando lo volvamos a leer, porque <TR> quedará especificado que esa variable <TD>Apellidos:</TD> estamos recibiéndola por la URL. <TD><INPUT TYPE=”TEXT” NAME=”APELLIDOS” VALUE=””></TD> </TR> $_GET <TR> <TD>Email:</TD> A partir de la versión 4.1.0 de PHP se ha <TD><INPUT TYPE=”TEXT” NAME=”EMAIL” VALUE=””></TD> introducido el array asociativo $_GET, que </TR> es idéntico a $HTTP_GET_VARS, aunque un <TR> poco más corto de escribir. <TD COLSPAN=”2” ALIGN=”CENTER”> <INPUT TYPE=”SUBMIT” NAME=”enviar” VALUE=”Enviar”> Variables a través de Formularios </TD> </TR> El proceso es similar al explicado para las </TABLE> URLs, pero en esta ocasión el envió de </FORM> variables de una página PHP a otra no se </BODY> realiza a través de la URL, si no enviándolas </HTML> a través de un formulario. Al igual que en las variables a través de la URL, las variables que se procesan a través del envío de formularios no siempre se definen automáticamente, ello depende de una va r i a b l e d e c o n f i g u ra c i ó n d e P H P : register_globals, que tiene que estar activada para conseguir que las variables se definan automáticamente. Para ver el funcionamiento del procesamiento de variable a través de los formularios vamos a realizar el mismo ejemplo que en el apartado anterior. Tenemos dos páginas, registro1.php y registro2.php, que siguen los pasos para un registro simple de usuarios. <HTML> Como podemos ver, el código es exactamente <HEAD> igual al del ejemplo de procesamiento de <TITLE>Registro Paso 1</TITLE> variables a través de la URL, en lo único que </HEAD> se diferencia es en la línea de definición del <BODY> formulario: <FORM NAME=”formRegistro1” ACTION=”registro2.php” <FORM NAME=”formRegistro1” ACTION=”registro2.php” METHOD=”POST” METHOD=”POST” > > <TABLE BORDER=”1”> PC PASO A PASO Nº 18 Página 7
  7. 7. Programación PHP - Programación PHP - Programación PHP - Programación PHP Si ejecutamos el código anterior no recibiremos y en el botón que realiza el envío: las variables en registro2.php ¿porqué? PHP distingue entre mayúsculas y minúsculas, es <INPUT TYPE=”SUBMIT” NAME=”enviar” VALUE=”Enviar”> CASE-SENSITIVE, por lo que las variables $nombre, $apellidos y $email son nuevas para Vamos a prestar especial atención a la línea el y no tienen ningún valor. en la que se define el formulario, ACTION nos indica la página destino y METHOD, nos El siguiente código es el correcto: indica el método (GET o POST) utilizado para el envío del formulario. <HTML> <HEAD> Si METHOD es igual a GET las variables del <TITLE>Registro Paso 2</TITLE> formulario se envían a través de la URL, y </HEAD> si METHOD es igual a POST, el envío de <BODY> variables no es visible a través de la URL. Usuario Registrado: <TABLE BORDER=”1”> ¿Cuál es el mejor a utilizar? Pues esto <TR> dependerá del caso concreto en el que nos <TD>Nombre:</TD> encontremos, pero siempre queda mucho <TD><?= $NOMBRE;?></TD> más elegante y seguro que las variables no </TR> estén visibles en la URL. Además la longitud <TR> de cadena permitida en la URL es de 255, <TD>Apellidos:</TD> así que es aconsejable si se van a rellenar <TD><?= $APELLIDOS;?></TD> muchos datos que en METHOD utilizado sea </TR> POST. <TR> <TD>Email:</TD> <HTML> <TD><?= $EMAIL;?></TD> <HEAD> </TR> <TITLE>Registro Paso 2</TITLE> </TABLE> </HEAD> </BODY> <BODY> </HTML> Usuario Registrado: <TABLE BORDER=”1”> <TR> <TD>Nombre:</TD> <TD><?= $nombre;?></TD> </TR> <TR> <TD>Apellidos:</TD> <TD><?= $apellidos;?></TD> </TR> <TR> <TD>Email:</TD> <TD><?= $email;?></TD> </TR> Como podemos observar en la imagen anterior, </TABLE> las variables no están visibles en la URL de la </BODY> página, pero esto cambiaría si el METHOD </HTML> utilizado fuese GET. Página 8 PC PASO A PASO Nº 18
  8. 8. Programación PHP - Programación PHP - Programación PHP - Programación PHP $HTTP_POST_VARS de la URL y la segunda, que así nuestro códigoserá más claro cuando lo volvamos a También es posible recopilar en una variable leer, porque quedará especificado que esa tipo array el conjunto de variables que han variable estamos recibiéndola por la URL sido enviadas al script por este método a partir de la variable de sistema $_POST $HTTP_POST_VARS, que es un array asociativo. A partir de PHP 4.1.0 se pueden recoger las variables de formulario utilizando también el La sintaxis es la siguiente: array asociativo $_POST, que es el mismo que $HTTP_POST_VARS, pero más corto de escribir. $HTTP_POST_VARS["nombre"] En el próximo número… Aunque podamos recoger variables que se definen directamente en nuestra página, En el próximo número comenzaremos a resulta más seguro utilizar $HTTP_POST_VARS programar sockets, programar socket nos por dos razones, la primera que así nos permitirá hacer un emulador de Telnet, hacer aseguramos que esa variable viene realmente un FTP, ... y todo gracias al PHP ;) PC PASO A PASO Nº 18 Página 9
  9. 9. SERVIDOR DE HXC MODO DE EMPLEO - Hack x Crack ha habilitado tres servidores para que puedas realizar las Explicamos esto porque la mayoría, seguro que piensa en un Servidor Web como en algo extraño que no saben ni prácticas de hacking. donde está ni como se accede. Bueno, pues ya sabes dónde se encuentran la mayoría de IIS (en Inetpub) y cuál es - Las IPs de los servidores de hacking las la página por defecto (Inetpubwwwrootdefault.htm). Y encontrarás en EL FORO de la revista ahora, piensa un poco… … ¿Cuál es uno de los objetivos de ( w w w . h a c k x c r a c k . c o m ) . Una vez en el foro entra un hacker que quiere decirle al mundo que ha hackeado en la zona COMUNICADOS DE HACK X CRACK (arriba del u n a We b ? P u e s e s t á c l a r o, e l o b j e t i vo e s c a m b i a r ( o s u s t i t u i r ) todo) y verás varios comunicados relacionados con los el archivo default.html por uno propio donde diga “hola, servidores. No ponemos las IP aquí porque es bueno soy DIOS y he hackeado esta Web” (eso si es un lamer ;) acostumbrarte a entrar en el foro y leer los comunicados. Si hay alguna incidencia o cambio de IP o lo que sea, se A partir de ese momento, cualquiera que acceda a ese comunicará en EL FORO. s e r v i d o r, v e r á e l d e f a u l t . h t m m o d i f i c a d o p a r a v e r g ü e n z a d e l “site” hackeado. Esto es muy genérico pero os dará una idea de cómo funciona esto de hackear Webs ;) - Actualmente tienen el BUG del Code / D e c o d e . La forma de “explotar” este bug la explicamos - Cuando accedas a nuestro servidor mediante el CODE / extensamente en los números 2 y 3. Lo dejaremos así por DECODE BUG, crea un directorio con tu nombre (el que mas un tiempo (bastante tiempo ;) Nuestra intención es ir te guste, no nos des tu DNI) en la unidad d: a ser habilitando servidores a medida que os enseñemos distintos posible y a partir de ahora utiliza ese directorio para hacer tipos de Hack. t u s p r á c t i c a s . Ya s a b e s , s u b i r n o s p r o g r a m i t a s y p r a c t i c a r con ellos :) ... ... ¿cómo? ¿que no sabes crear directorios - En los Servidores corre el Windows 2000 con el IIS de Servidor Web. No hemos parcheado ningún bug, ni mediante el CODE/DECODE BUG... repasa los números 2 y t a n s i q u i e ra e l R P C y p o r s u p u e s t o t a m p o c o h e m o s i n s t a l a d o tres de Hack x Crack ;p n i n g ú n S e r v i c e Pa c k . Pa ra q u i e n p i e n s e q u e e s o e s u n e r r o r (lógico si tenemos en cuenta que el RPC provoca una caída Puedes crearte tu directorio donde quieras, no es necesario completa del sistema), solo decirte que AZIMUT ha que sea en d:mellamojuan. Tienes total libertad!!! Una configurado un firewall desde cero que evita el bug del i d e a e s c r e a r l o , p o r e j e m p l o , e n RPC, (bloqueo de los puertos 135 (tcp/udp), 137 (udp), d:xxxsystem32default10019901mellamojuan (ya irás 138 (udp), 445 (tcp), 593 (tcp)). La intención de todo esto aprendiendo que cuanto mas oculto mejor :) es, precisamente, que puedas practicar tanto con el CODE/DECODE como con cualquier otro “bug” que conozcas (y hay cientos!!!). Poco a poco iremos cambiando la Es posiblemente la primera vez que tienes la oportunidad c o n f i g u ra c i ó n e n f u n c i ó n d e l a e x p e r i e n c i a , l a i d e a e s t e n e r de investigar en un servidor como este sin cometer un delito los Servidores lo menos parcheados posibles pero (nosotros te dejamos y por lo tanto nadie te perseguirá). mantenerlos operativos las 24 horas del día. Por todo ello Aprovecha la oportunidad!!! e investiga mientras dure esta y debido a posibles cambios de configuración, no olvides iniciativa (esperemos que muchos años). visitar el foro (Zona Comunicados) antes de “penetrar” en nuestros servidores. - En este momento tenemos mas de 600 carpetas de peña que, como tu, está practicando. Así que haznos caso y crea - Cada Servidor tiene dos unidades (discos duros duros): t u p r o p i a c a r p e t a d o n d e t r a b a j a r. * La unidad c: --> Con 40GB y Raíz del Sistema * La unidad d: --> Con 40GB * La unidad e: --> CD-ROM N o t a : R a í z d e l S e r v i d o r, s i g n i f i c a q u e e l W i n d o w s A d va n c e d ! Server está instalado en esa unidad (la unidad c:) y concretamente en el Por lo tanto, la raíz directorio por defecto winnt del sistema está en c:winnt MUY IMPORTANTE... - E l I I S , I n t e r n e t I n f o r m a t i o n S e r v e r, e s e l S e r v i d o r d e páginas Web y tiene su raíz en c:inetpub (el directorio por defecto) MUY IMPORTANTE!!!!! Por favor, no borres archivos Nota: Para quien nunca ha tenido instalado el IIS, le será del Servidor si no sabes exactamente lo que estás haciendo ni e x t ra ñ o t a n t o e l n o m b r e d e e s t a c a r p e t a ( c : i n e t p u b ) c o m o s u c o n t e n i d o . Pe r o b u e n o , u n d í a d e e s t o s o s e n s e ñ a r e m o s borres las carpetas de los demás usuarios. Si haces eso, lo único a i n s t a l a r v u e s t r o p r o p i o S e r v i d o r We b ( I I S ) y d e t a l l a r e m o s su funcionamiento. que consigues es que tengamos que reparar el sistema servidor De momento, lo único que hay que saber es que cuando y, mientras tanto, ni tu ni nadie puede disfrutar de él :( T Ú p o n g a s n u e s t ra I P ( l a I P d e u n o d e n u e s t r o s s e r v i d o r e s ) en tu navegador (el Internet explorer por ejemplo), lo que Es una tontería intentar “romper” el Servidor, lo hemos puesto estás haciendo realmente es ir al directorio c : I n e t p u b w w w r o o t y l e e r u n a r c h i vo l l a m a d o d e fa u l t . h t m . para que disfrute todo el mundo sin correr riesgos, para que todo Nota: Como curiosidad, te diremos que APACHE es otro el mundo pueda crearse su carpeta y practicar nuestros ejercicios. S e r v i d o r d e p á g i n a s We b ( s e g u r o q u e h a s o í d o h a b l a r d e él). Si tuviésemos instalado el apache, cuando pusieses En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada n u e s t r a I P e n T U n a v e g a d o r, a c c e d e r í a s a u n d i r e c t o r i o de nada que “robar”, es un servidor limpio para TI, por lo tanto raíz del Apache (donde se hubiese instalado) e intentarías leer una página llamada index.html ... pero... ¿qué te cuídalo un poquito y montaremos muchos más :) estoy contando?... si has seguido nuestra revista ya dominas de sobras el APACHE ;)
  10. 10. Serie Xbox Life (IV) Convirtiendo nuestra Xbox en un centro Multimedia. - ¿Podemos ver películas en DivX con la XBOX? - ¿Y escuchar musica en formato MP3? - ¿Y visualizar fotos? Aquí estamos un mes más, antes de todo Pues muy sencillo, dependiendo del lector que quiero agradecer a los que apoyan esta serie, tengamos, podremos usar CD´s, CD-RW, DVD es muy grato ver recompensado el esfuerzo. y determinadas marcas de cada uno de éstos. GRACIAS. Samsung: Este mes vamos a descubrir los distintos Este lector es el lectores DVD que tiene la consola Xbox y mejor, lee lo que vamos a instalar y configurar unos programas le metas, tanto que nos permitan ver películas DivX, escuchar CD´s como MP3, ver fotos, incluso ahorrarnos el tener D V D ´ s y que comprar el Kit DVD para ver las películas prácticamente de en este formato. cualquier marca. En la imagen de Como es de costumbre en esta serie, os voy arriba podéis ver a detallar lo que necesitamos para hacer todas cómo es la estas cosas. bandeja de este lector, así podréis Lo que necesitamos: saber qué lector Xbox con mod chip. lleva vuestra Evox instalado en nuestra consola consola sin Media Center (la versión más reciente) necesidad de abrirla. DVDX2. ZXBTOOLS (Ultima versión). Philips: Pc Preparado. Este lector es el segundo si los Todos los programas los podréis encontrar en ordenamos de la Web de la revista (www.hackxcrack.com). mejor a peor. Lee algunos CD´s y Los DVD de XBOX: DVD´s de m a r c a s Algunos de vosotros sabréis ya que hay 3 conocidas, fabricantes distintos de lectores para esta siempre y cuando consola, para quien no lo sepa, las marcas se calibre la lente son Samsung, Thompson y Philips. para que los lea, ya que el láser encargado de leer los CD´s Os podéis estar preguntando, ¿para qué os está tan bajo de potencia que no es capaz de cuento esto? leerlos. PC PASO A PASO Nº 18 Página 11
  11. 11. Programación PHP - Programación PHP - Programación PHP - Programación PHP El calibrar la lente lleva sus riesgos, ya que consola para manejaros por los menús, pero os habréis ahorrado 30€. le acortas la vida y en muchos casos, si se hace mal, puede dejar de funcionar. Instalando y Configurando El Xbox Media Center: Thompson: Lo descargamos de la web, lo descomprimimos en una Este podríamos carpeta y veremos esto: decir que es el peor, ya que no lee CD´s, solo CD-RW y de lagunas marcas como VERBATIM. Con los DVD también tenemos el mismo problema y lo más aconsejable es usar los de marca PRIMCO. Nos metemos en la carpeta “xbmc-2004-01-02” y veremos Instalando DVDX2: esto: Nos lo descargamos de la Web y lo descomprimimos en una carpeta del pc. Veremos dos archivos: el dvdx_v2.0.iso y dvdx2.txt. El txt lo podemos borrar, sólo trae información de quien lo creó. Extraemos dvdx_v2.0.iso con el ZXBTOOLS (como os enseñé el mes pasado) y tendremos una carpeta llamada “Media” y un archivo Editamos con el bloc de notas el archivo “XboxMediaCenter.xml”. llamado “default.xbe”. Aquí os digo os enseño cómo he configurado el archivo, lo configuramos a nuestro gusto (lo que está en negrita Ahora tenemos que pasar la carpeta y el es la explicación): archivo al HD de la consola. Si tenéis configurado el evox como expliqué <xboxmediacenter> anteriormente, copiáis todo a la carpeta MP que creamos en el artículo de Evolution X. Si #Skin que cargará al iniciar el programa, lo dejamos no fuera así, lo copiáis a la carpeta que como está!# corresponda. <skin>MediaCenter</skin> La transferencia la hacemos por FTP. Copiamos todo, reiniciamos la consola y lo veremos en #Dirección IP, Máscara subred, Puerta de enlace por el apartado donde los hayáis copiado (en mi defecto, Nombre del server (Dejad en blanco si caso Media Players). queréis usar los valores del Evolution X) !# Nos preparamos unas palomitas, arrancamos <ipadres>-</ipadres> el DVDX2, metemos la película y a disfrutar. <netmask>-</netmask> Con esto tendréis que usar el mando de la <defaultgateway>-</defaultgateway> Página 12 PC PASO A PASO Nº 18
  12. 12. Programación PHP - Programación PHP - Programación PHP - Programación PHP <nameserver>192.168.0.1</nameserver> #Ruta donde guarda el contenido destinado a la <CDDBIpAdres>194.97.4.18</CDDBIpAdres> memoria caché de los álbumes de fotos (lo dejamos <CDDBEnabled>yes</CDDBEnabled> como está) !# #Determina las unidades del hd de la consola que <albums>$HOMEalbums</albums> se puede usar !# #Lo dejemos como esta, son los valores del mando !# <useFDrive>yes</useFDrive> <useGDrive>no</useGDrive> <delays> <remote> #Valores del servidor proxy!# <move>220</move> <httpproxy>-</httpproxy> <repeat>300</repeat> <httpproxyport>-</httpproxyport> </remote> #Servidor remoto que nos dará la fecha y hora!# <controller> <move>220</move> <timeserver>207.46.248.43</timeserver> <repeat>220</repeat> </controller> #El dashboard que arrancará al salir!# </delays> <dashboard>C:evoxdash.xbe</dashboard> # Aquí podemos especificar los iconos que se mostrarán en cada apartado !# #Directorios alternativos para los subtítulos de las #Para los archivos !# películas, no os olvidéis de crear esta carpeta !# <subtitles>$HOMEsubtitles</subtitles> <filetypeicons> <xbe>defaultProgram.png</xbe> #Lo dejamos como está !# </filetypeicons> <startwindow>0</startwindow> #Esta es la configuración base del menú, es decir #Extensiones de las fots, Videos y Sonidos que lo que vamos a ver en el programa, en cada sección. queremos que acepte. Si falta alguna, agregadla!# Podemos agregar o quitar la que queramos, en name ponemos el nombre que queramos y en path ponemos <pictureextensions>.png|.jpg|.jpeg|.bmp|.gif|.ico|.tif|.ti la ruta a la carpeta, por ejemplo, he quitado el acceso ff|.tga|.pcx</pictureextensions> a c: y os aconsejo que hagáis lo mismo.!# <musicextensions>.m4a|.flac|.ac3|.aac|.nfo|.pls|.rm|. mpa|.wav|.wma|.ogg|.mp3|.mp2|.m3u</musicextensions> #Configuración para Mis programas# <videoextensions>.nfo|.rm|.m3u|.ifo|.mov|.qt|.divx|.xv id|.bivx|.vob|.pva|.wmv|.asf|.asx|.ogm|.m2v|.avi|.bin|. <myprograms> dat|.mpg|.mpeg|.mkv|.avc|.vp3|.svq3|.nuv|.viv|.dv|.fli <bookmark> </videoextensions> <name>Programas en E:</name> <path>E:apps</path> <!-- path where xbmc should store its thumbnails !# </bookmark> <thumbnails>$HOMEthumbs</thumbnails> <bookmark> <name> Programas en F:</name> #Directorio donde almacenará los atajos (lo dejamos <path>F:apps</path> como está !# </bookmark> <bookmark> <shortcuts>$HOMEshortcuts</shortcuts> <name>Programas en DVD </name> #Ruta donde guarda el contenido destinado a la <path>D:</path> memoria caché (lo dejamos como está) !# </bookmark> </myprograms> <imdb>$HOMEimdb</imdb> PC PASO A PASO Nº 18 Página 13
  13. 13. Programación PHP - Programación PHP - Programación PHP - Programación PHP #Configuración para las fotos !# #Mis archivos !# <pictures> #Más de lo mismo, venga, a configurar !# <default></default> <bookmark> <files> <name>Fotos E </name> <bookmark> <path>E:fotos</path> <name>E :</name> </bookmark> <path>E:</path> <bookmark> </bookmark> <name>Fotos F:</name> <bookmark> <path>F:fotos</path> <name>F: drive</name> </bookmark> <path>F:</path> <bookmark> <name>Fotos en DVD</name> </bookmark> <path>D:</path> <bookmark> </bookmark> <name>DVD</name> <path>D:</path> #Ahora llega lo interesante, estos apartado son para </bookmark> hacer stemig o lo que es lo mismo, pillar los archivos <bookmark> en este caso las fotos del PC, por medio del cable <name>SMB</name> RJ-45, y aquí se pueden definir los valores. Podéis <path>smb://192.168.0.1/archivos/</path> quitar los que no uséis; yo solo uso el SMB, que más </bookmark> adelante os explicaré cómo se configura. A partir de </files> aquí quitaré los demás !# <bookmark> # Mi música !# <name>XNS</name> <path>xns://192.168.0.1:1400/</path> <music> </bookmark> <default></default> <bookmark> <bookmark> <name>XBMS</name> <path>xbms://192.168.0.1:1400/</path> <name>Musica E: </name> </bookmark> <path>E:MP3</path> </bookmark> #Aquí está la configuración del strem por SMB, <bookmark> dependiendo de cómo hayáis compartido la carpeta <name>Musica F:</name> en el pc, se configura de una manara o de otra!# <path>F:MP3</path> </bookmark> <bookmark> <bookmark> <name>SMB</name> <name>MP3 DVD</name> <path>D:</path> #Este es un ejemplo </bookmark> smb://dominio;Usuario:contraseña@servidor/carp <bookmark> eta compartida !# <name>SMB</name> #Así tengo configurado el mío !# <path>smb://192.168.0.1/mp3/</path> </bookmark> <path>smb://192.168.0.1/fotos/</path> </music> </bookmark> </pictures> Página 14 PC PASO A PASO Nº 18
  14. 14. Programación PHP - Programación PHP - Programación PHP - Programación PHP #Mis videos !# Pinchamos en la pestaña compartir, seleccionamos la casilla “Compartir esta carpeta <video> en la red”, cambiamos el nombre si ya esta <default></default> ocupado y aceptamos. <bookmark> Esto lo hacemos con todas las carpetas que <name>Viedos E:</name> hemos puesto en los apartados de SMB. <path>E:videos</path> </bookmark> Pues ya está todo. Pasamos todo lo que hay <bookmark> en esta carpeta a su carpeta correspondiente <name>Videos F:</name> del HD de la consola, lo arrancamos y a <path>F:videos</path> disfrutar. </bookmark> <bookmark> Con un poco de investigación os haréis con el <name>Videos DVD</name> control de todo, es muy sencillo e intuitivo. <path>D:</path> </bookmark> El mes que viene jugaremos online GRATIS. <name>SMB</name> Hasta entonces. <path>smb://192.168.0.1/videos/</path> </bookmark> Salu2. </video> </xboxmediacenter> Ya se ha acabado la configuración, así que guardamos los cambios, y salimos del bloc de notas. Ahora tenemos que compartir las carpetas en nuestro PC para que a través de la red podamos cargar películas o escuchar música. En Windows XP se haría de la siguiente manera: Abrimos el explorador de Windows, nos situamos encima de la carpeta que queremos compartir, por ejemplo el de videos, pinchamos con el botón derecho sobre la carpeta y pinchamos en propiedades: PC PASO A PASO Nº 18 Página 15
  15. 15. ProgramaciOn en GNU/LiNUX Memoria Compartida el_chaman. Luis U. Rodríguez Paniagua - Intercambio de datos entre procesos - pipes - Memoria compartida - sockets - Colas de mensajes 1. Presentación 2.1. Solicitud de memoria compartida En el presente artículo veremos como es posible intercambiar datos entre dos procesos. La primera operación que debemos aprender Dispondremos de tres mecanismos básicos: es la necesaria para solicitar una zona de Memoria compartida, colas de mensajes y memoria compartida. La manera de hacer esto es mediante la función: empleo de pipes y sockets. Analizaremos en el presente artículo las dos primeras formas. #include <sys/types.h> #include <sys/ipc.h> 2. Memoria compartida. #include <sys/shm.h> int shmget(key_t key, int size, int shmflg); Este será el método más rápido de comunicar dos procesos entre sí. Consiste en hacer que Retorna: -1 en caso de error, o el identificador dos procesos compartan una zona común de de la zona de memoria compartida en otro memoria de manera que los dos procesos caso. podrán leer y escribir en dicha zona de shmget reserva una zona de memoria de memoria. tamaño size bytes devolviendo un identificador que nos permitirá manejar dicha zona de Esto, que en teoría es sencillo de entender, memoria. El objetivo de key es similar al visto a la hora de llevarlo a la práctica se complica en la llamada de semáforos semget (es decir, un poco. Cada vez que ejecutamos un proceso, pasar una clave única que servirá en nuestro este tiene asociada una parte de la memoria caso para identificar de manera única la zona exclusivamente para él. Ahí será donde guarde de memoria asociada a nuestro proceso). sus datos ( va r i a b l e s , pila, etc...). En cuanto a shmflag será una máscara de bits Si en alguna ocasión este proceso intenta que indicarán el modo de adquisición del acceder a una zona de memoria a la que no identificador devuelto por shmget: tiene acceso u otro proceso intenta acceder Si el bit IPC_CREAT está activo, la zona a la memoria reservada para este proceso, compartida de memoria se creará a no ser se estará produciendo una violación de que haya sido creada por otros procesos. segmenteto con lo cual el programa fallará. Si los bits IPC_CREAT e IPC_EXCL están El encargado de controlar esto es el S.O., y activos simultáneamente, la llamada a shmget afortunadamente en nuestro caso, este falla en caso de que la memoria compartida dispone de la interfaz adecuada que nos hubiese sido reservada previamente. permitirá crear zonas de memoria especiales Además de estos valores podremos indicar que podrán ser compartidas entre varios los permisos: 0400 (lectura para el usuario), procesos. 0200 (modificación para el usuario), 0060 Página 16 PC PASO A PASO Nº 18
  16. 16. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux (permiso de lectura y modificación para el struct shmid_ds { struct ipc_perm shm_perm; /* Estructura de permisos */ grupo) y 0006 (permiso de lectura y int shm_segsz; /* Tamaño del área de memoria (bytes) */ time_t shm_atime; /* last attach time */ modificación para el resto de los usuarios). time_t shm_dtime; /* last detach time */ time_t shm_ctime; /* last change time */ Para crear una zona de memoria compartida unsigned short shm_cpid; /* pid of creator */ de 1KByte (1024 bytes) con permisos de unsigned short shm_lpid; /* pid of last operator */ short shm_nattch; /* no. of current attaches */ e s c r i t u ra l e c t u ra s ó l o p a ra u s u a r i o ... teclearíamos: }; int shmid; struct ipc_perm { ... key_t key; ushort uid; /* owner euid and egid */ if (( shmid = shmget(IPC_PRIVATE, 1024, IPC_CREAT | 0600 )) == -1) ushort gid; { ushort cuid; /* creator euid and egid */ ushort cgid; fprintf(stderr, " ERROR al reservar memoria compartidan"); ushort mode; /* lower 9 bits of access modes */ } ushort seq; /* sequence number */ }; .... 2.2. Control de memoria IPC_SET Inicializa algunos de los campos compartida de la estructura de control de la memoria compartida. El valor de estos campos se Una vez que hemos reservado una zona de toma de la estructura referenciada por *buf. memoria compartida, podemos realizar IPC_RMID Elimina la zona de memoria diversas operaciones de control sobre dicha asociada al identificador shmid. Si esta zona zona con el fin de establecer distintos atributos de memoria compartida está siendo usada de la misma. Estas operaciones de control por varios procesos, no se elimina hasta las realizará la función shmctl. que todos los procesos liberen esta zona de memoria compartida. La declaración de esta función es: #include <sys/types.h> SHM_LOCK Bloquea en memoria el segmento identificado por shmid impidiendo #include <sys/ipc.h> el intercambio sobre él. Esta operación sólo #include <sys/shm.h> puede ser realizada por el superusuario. int shmctl(int shmid, int cmd, struct shmid_ds *buf); SHM_UNLOCK. Desbloquea en memoria el Retorna 0 en caso de éxito y -1 en caso de segmento identificado por shmid. Esta error. operación sólo la puede realizar el superusuario. shmid es el identificador de memoria compartida sobre el que vamos a operar. 2.3. Operaciones con memoria cmd es la operación de control que queremos compartida realizar. Este parámetro puede tomar los Para poder usar una zona de memoria siguientes valores: compartida que previamente hemos creado, esta debe ligarse al espacio de direcciones de IPC_STAT Lee el estado de la estructura de memoria asignadas a nuestro proceso. La control de la memoria y lo devuelve a través forma en la que vamos a poder ligar o desligar de la zona de memoria apuntada por *buf. una zona de memoria compartida al espacio La estructura de esta zona de memoria es: de direcciones de nuestro proceso es mediante el empleo de las funciones shmat y shmdt. PC PASO A PASO Nº 18 Página 17
  17. 17. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux #include <sys/types.h> #include <stdio.h> #include <sys/ipc.h> #include <stdlib.h> #include <sys/shm.h> #include <sys/types.h> #include <sys/ipc.h> void *shmat(int shmid, const void *shmaddr, int shmflg); #include <sys/shm.h> #include <sys/sem.h> shmat es la función encargada de ligar una zona de memoria compartida al espacio de direcciones de memoria local del proceso. int main(int argc, char *argv[]) { Retorna: la dirección a la que está unida la zona de memoria compartida. -1 en caso de int shmid, i, semid, estado, pid; error. struct sembuf operaciones; char *mensaje; Los parámetros que recibe son: shmid que será el identificador de la zona de memoria key_t clave; compartida a enlazar. shmaddr será la dirección virtual donde queremos que nuestro // proceso "vea" la zona de memoria compartida. // Zona de cración de memoria compartida Como esto lo debe asignar el núcleo, puede // que no siempre se nos devuelva el puntero // Creación de la memoria compartida apuntando a shmaddr, por lo que se suele poner este parámetro a 0 y dejar la // Primero la clave de recurso IPC responsabilidad al S.O. if( (clave = ftok("shm.c",'K'))==-1) { En cuanto a shmflg, se trata de una máscara de bits que indica el modo de acceso a fprintf(stderr," Error al crear la claven"); memoria. Si queremos hacer un acceso de return -1; sólo lectura, indicaremos, por ejemplo, } SHM_RDONLY (Más información en la página // Ahora la memoria compartida. Tamaño: 1024 caracteres de manual correspondiente). if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1) La función encargada de desligar la zona de { memoria compartida es shmdt: fprintf(stderr," Error al crear segmento de memoria compartidan"); #include <sys/types.h> return -1; #include <sys/ipc.h> } #include <sys/shm.h> // Ahora debemos enlazar la zona de memoria compartida con la // memoria local del proceso. int shmdt(const void *shmaddr); if( (mensaje=(char *)shmat(shmid, 0, 0))==-1) Retorna: 0 en caso de éxito, -1 en caso de { error. fprintf(stderr," Error al ligar la memoria compartidan"); Esta función recibirá como único parámetro: return -1; shmaddr que es el puntero que señala a la zona de memoria compartida a desligar. } 2.4. Ejemplo de uso // Comienza el lanzamiento de procesos En este primer ejemplo vamos a hacer que // un proceso hijo llene un vector de caracteres if((pid=fork())==-1) con una frase. A continuación el proceso padre, espera a que termine el hijo y lee { dicho vector: // Escribimos en la memoria compartida Página 18 PC PASO A PASO Nº 18
  18. 18. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux fprintf(stderr, "Error al lanzar proceso hijon"); int main(int argc, char *argv[]) return -1; { } int shmid, i, estado; if (pid != 0) // Somos el padre struct sembuf operaciones; { char *mensaje, buffer[80]; // leemos de la memoria compartida key_t clave; // Esperamos a que termine el proceso hijo wait(&i); // for(i=0;i<1024;i++) // Zona de creación de memoria compartida printf("%c-", mensaje[i]); // return 0; // Creación de la memoria compartida } // Primero la clave de recurso IPC else // Somos el hijo if( (clave = ftok("shm.c",'K'))==-1) { { // Escribimos algo fprintf(stderr," Error al crear la claven"); strncpy(mensaje, "Hola, esto es una prueba de memoria compartida", 1024); return -1; return 0; } } // Ahora la memoria compartida. Tamaño: 1024 caracteres if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1) // Limpieza de memoria compartida { if((shmdt(mensaje))==-1) fprintf(stderr," Error al crear segmento de memoria compartidan"); { return -1; fprintf(stderr," Error al desaligar memoria compartidan"); } } // Ahora debemos enlazar la zona de memoria compartida return 0; // con la memoria local del proceso. } if( (mensaje=(char *)shmat(shmid, 0, 0))==-1) { Pero es en los siguientes ejemplos donde fprintf(stderr," Error al ligar la memoria compartidan"); muestra un poco más de potencia el empleo return -1; de la memoria compartida. Imaginemos que tenemos dos programas cuyo código es el } siguiente: // // Comienza el lanzamiento de procesos // Servidor que muestra lo que escribe el cliente // // Compilar con: gcc shm_s.c -o shm_s printf("n Lectorn"); // do{ #include <stdio.h> for(i=0;i<80;i++) #include <stdlib.h> printf("%c",mensaje[i]); #include <sys/types.h> printf("n"); #include <sys/ipc.h> sleep(1); #include <sys/shm.h> #include <sys/sem.h> }while(mensaje[0]!='0'); PC PASO A PASO Nº 18 Página 19
  19. 19. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux // Limpieza de memoria compartida { if((shmdt(mensaje))==-1) fprintf(stderr," Error al crear segmento de memoria compartidan"); { return -1; fprintf(stderr," Error al desaligar memoria compartidan"); } } // Ahora debemos enlazar la zona de memoria compartida con la return 0; // memoria local del proceso. } if( (mensaje=(char *)shmat(shmid, 0, 0))==-1) { El servidor examina el buffer de memoria fprintf(stderr," Error al ligar la memoria compartidan"); compartida cada segundo e imprime su contenido. return -1; } El cliente será el encargado de llenar dicho buffer: // Comienza el lanzamiento de procesos // // // Cliente que escribe lo que mostrará el servidor printf("n Escriba 0 para salirn"); // Compilar con: gcc shm_c.c -o shm_c do{ // printf("n > "); #include <stdio.h> i=0; #include <stdlib.h> do #include <sys/types.h> { #include <sys/ipc.h> fscanf(stdin, "%c", &mensaje[i]); #include <sys/shm.h> i++; #include <sys/sem.h> }while(mensaje[i-1]!=10); //scanf("%s", buffer); int main(int argc, char *argv[]) //strncpy(mensaje, buffer, 80); { for(j=i;j<1024;j++) int shmid, i,j, estado; mensaje[j]=' '; // rellenamos el resto del buffer struct sembuf operaciones; // con espacios char *mensaje, buffer[80]; }while(mensaje[0]!='0'); key_t clave; // Limpieza de memoria compartida // if((shmdt(mensaje))==-1) // Zona de cración de memoria compartida { // fprintf(stderr," Error al desaligar memoria compartidan"); // Creación de la memoria compartida } // Primero la clave de recurso IPC return 0; if( (clave = ftok("shm.c",'K'))==-1) } { fprintf(stderr," Error al crear la claven"); Una vez compilados estos programas, en dos terminales distintos, abrimos primero un return -1; cliente y escribimos algo: } luis@leonov:~/articulos/articulo11_el_chaman/code$ ./shm_c // Ahora la memoria compartida. Tamaño: 1024 caracteres Escriba 0 para salir if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1) > hola Página 20 PC PASO A PASO Nº 18
  20. 20. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux Y en otro terminal ejecutamos el servidor: luis@leonov:~/articulos/articulo11_el_chaman/code$ ./shm_s Lector hola A partir de este momento cada cosa que escribamos en el cliente será mostrado en el servidor cada segundo. Estos dos programas aún se pueden mejorar un poco de manera que, por ejemplo, el servidor sólo muestre algo cuando el buffer está lleno (vaciándolo por ejemplo tras recibir el último dato o sincronizando los procesos mediante semáforos). Dejo a los lectores el practicar con estos ejercicios.
  21. 21. CURSO DE TCP/IP (2ª Entrega) EL PROTOCOLO DE TRANSPORTE UDP (PROTOCOLO DE DA AGRAMAS DE USUARIO) T - Vamos a descubrir las herramientas necesarias para "crear" paquetes de red - Empezaremos a desgranar las capas de red - Trataremos el Protocolo de Datagramas de Usuario 1. INTRODUCCIÓN el protocolo UDP, pero en futuras lecciones exprimiremos al máximo las herramientas Espero que no os perdieseis el primer artículo para hacer maravillas con las demás capas de del curso de TCP/IP (Transmisión Control protocolos: TCP, IP, ARP (Address Resolution Protocol / Internet Protocol --- Protocolo de Protocol --- Protocolo de Resolución de Control de Transmisión / Protocolo de Direcciones), etc. Internet), porque voy a asumir que habéis Empezaré explicando a grandes rasgos el comprendido a grandes rasgos el concepto mecanismo de transporte de un paquete UDP de capas de protocolos, y el mecanismo básico a través de Internet para luego detallar las de transporte de paquetes de datos a través cabeceras UDP y, por último, veremos todo de Internet (o cualquier otra red TCP/IP). esto de forma práctica utilizando unas herramientas que nos permiten construir ! NOTA DE PC PASO A PASO / HXC paquetes UDP desde cero (los llamados “raw sockets”). Para todos aquellos que no tienen la primera entrega del Pero, antes de empezar, he de aclararos un curso de TCP / IP publicada en el número 17 de PC PASO asunto. Supongo que algunos de vosotros os preguntareis qué ha pasado con la serie RAW. A PASO, hemos decidido pasarla a formato PDF y liberarla Mis intenciones no eran de ninguna manera en la Web de la revista (www.hackxcrack.com). sustituir la serie RAW por el curso de TCP/IP, si no desarrollar ambos en paralelo. Pero es También aprovechamos esta “nota” para indicar increíble de qué manera pueden conspirar a nuestros lectores que todos los artículos juntas las circunstancias de la vida para liberados y los programas que mencionamos cambiar por completo tu rumbo cuando menos en los artículos están disponibles en la sección te lo esperas. En poco más de un mes me han ARTÍCULOS LIBERADOS Y DESCARGAS de la surgido una serie de problemas de todo tipo Web. (familiares, personales, de salud, laborales, y académicos) por los cuales ahora (y sin Para esta primera “lección” he escogido un plazo definido) dispongo de muchísimo menos protocolo muy sencillo, el protocolo UDP (User tiempo. Datagram Protocol --- Protocolo de He barajado un poco mis posibilidades, y creo Datagramas de Usuario), para así poder que lo que puedo permitirme de momento es extenderme más en explicaros algunas continuar sólo con el curso de TCP/IP, aunque herramientas que nos pueden ser útiles a lo no descarto publicar algún otro artículo de la largo de todo el curso. De momento, estas serie RAW algún mes que consiga juntar algo herramientas las utilizaremos para manejar más de tiempo. Con esto lo que os quiero Página 22 PC PASO A PASO Nº 18
  22. 22. Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP decir es que no os prometo nada con respecto protocolo DNS. Vamos a utilizar este protocolo a la serie RAW, pero que haré lo que esté en como ejemplo para ver qué ocurre desde que mi mano para que no termine aquí, aunque un cliente solicita una consulta DNS a un haya que avanzar ahora mucho más despacio. servidor, hasta que éste cliente recibe la respuesta pertinente. Os aconsejo que leáis Gracias por vuestra comprensión. ;-) el artículo sobre DNS de la serie RAW, que se encuentra en el número 14 de la revista, ! NOTA EDITORIAL aunque voy a empezar haciendo una introducción sobre este protocolo. Para los nuevos lectores, simplemente decir que la serie de artículos denominada “SERIE RAW” ha estado presente en casi todos los números de esta publicación y ha ! NOTA DE PC PASO A PASO / HXC: constituido uno de los pilares de la misma. El artículo SERIE RAW: DNS mencionado por el autor ha La Serie RAW ya nos ha aportado conocimientos sobre los sido liberado y está disponible en nuestra Web: Protocolos más importantes y desde hace mucho tiempo www.hackxcrack.com se nos ha reclamado el inicio de un curso de TCP / IP. Finalmente, desde el anterior número 17 por fin ese curso ha llegado. 2.1. LAS CAPAS DE UDP/IP Tal y como nos describe el autor, esperamos poder hacer Os recuerdo que el protocolo DNS es el que más entregas de la Serie Raw en futuros números, pero de nos permite utilizar las famosas URLs en lugar forma más dilatada en el tiempo. Mientras tanto disfrutemos de direcciones IP. Es decir, nos permite escribir de este excelente curso de TCP / IP, una serie de artículos en nuestro navegador http://www.google.com ampliamente reclamada y esperada por nuestros lectores. en lugar de tener que escribir http://216.239.39.99, que es la dirección IP de Google. 2. FUNCIONAMIENTO DEL Para conseguir esto, existen repartidos por el PROTOCOLO UDP mundo una serie de servidores encargados de traducir URLs a IPs, e IPs a URLs. Nuestros PCs se comunicarán con alguno de estos Los que os perdisteis la introducción de este servidores cada vez que quieran utilizar una curso no tenéis que preocuparos, ya que este URL, para obtener así su IP correspondiente. primer punto resume en cierto modo lo que Esta comunicación se lleva a cabo a través expliqué entonces. Aún así, os recomiendo del protocolo DNS. que leáis la introducción, ya que aquí voy a resumir en un par de páginas lo que allí Cuando escribimos en nuestro navegador una explicaba en más de 20 páginas. URL, por ejemplo http://neworder.box.sk, nuestro sistema enviará una consulta DNS a Para los que sí que leísteis la introducción, un servidor, indicando en la consulta el nombre este punto creo que os puede ayudar a aclarar que desea traducir (en este caso las ideas a modo de resumen. neworder.box.sk, ya que el prefijo http:// es sólo una indicación al navegador sobre el A lo largo de la serie RAW os expliqué varios protocolo a utilizar, pero no forma parte del protocolos que funcionaban sobre TCP, pero nombre que deseamos traducir). sólo uno que funcionase sobre UDP: el PC PASO A PASO Nº 18 Página 23
  23. 23. Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP En segundo lugar, sabiendo que en Internet todas las máquinas están conectadas entre sí mediante una compleja red de cables y conexiones inalámbricas, es lógico pensar que será necesario conocer el camino a recorrer en toda esa maraña de cables para enlazar ambas máquinas entre sí. En tercer lugar, el cliente necesitará conocer la dirección IP del servidor DNS, ya que sólo conociendo la dirección IP de una máquina El servidor DNS nos enviará una respuesta puedes acceder a ella a través de Internet. que contendrá la IP correspondiente a ese nombre. En cuarto lugar, tiene que existir algún mecanismo que le indique al servidor que la consulta que le estamos haciendo es una consulta DNS, y no de cualquier otro tipo. Por ejemplo, el servidor DNS podría ser al mismo tiempo un servidor Web, y un servidor de correo electrónico. Por tanto, tiene que existir un mecanismo que le permita distinguir qué clientes solicitan servicios DNS, cuáles solicitan servicios Web, y cuáles solicitan servicios de correo eletrónico. Gracias a esto, a continuación nuestro A grandes rasgos, son cuatro los problemas navegador podrá acceder a la máquina que que hemos encontrado para conseguir llevar contiene la página Web que deseamos visitar, a cabo esta comunicación. Y, por supuesto, ya que sólo puede existir una comunicación no es coincidencia que sean cuatro las capas directa entre dos máquinas si cada una conoce de protocolos utilizadas en una comunicación la dirección IP de la otra. UDP: capa física, capa de enlace, capa de red, y capa de transporte. Ahora vamos a pensar un poco en cómo se podría conseguir todo este mecanismo del Si no fuese gracias a la existencia de estas 4 DNS, en el cual un cliente solicita un nombre capas diferenciadas, el protocolo DNS debería a un servidor, y el servidor le responde con encargarse por sí sólo de solucionar todos la IP correspondiente. ¿Qué problemas se nos estos problemas. Es decir, el protocolo DNS presentan a la hora de llevar a cabo este debería tener sus propias conexiones físicas proceso aparentemente tan sencillo? Pensadlo entre máquinas, sus mecanismos para un poco, y después mirad la lista de problemas encontrar un camino entre todas las máquinas a salvar que os pongo a continuación, para que están conectadas simultáneamente, sus ver si habéis llegado a las mismas propias direcciones IP, y sus propios conclusiones: mecanismos para diferenciarse de otros servicios (como la Web o el correo En primer lugar, por supuesto, hay que electrónico). conseguir que ambas máquinas (cliente y Esto convertiría al aparentemente sencillo servidor) tengan una conexión física, ya protocolo DNS en un sistema de una sea por cables, por radio, o por cualquier otro complejidad inabarcable, y lo mismo ocurriría medio físico que les permita establecer una con cualquier otro protocolo que tuviese que comunicación bidireccional. Página 24 PC PASO A PASO Nº 18

×