Haxcra18

Embed Size (px)

Citation preview

  • 8/14/2019 Haxcra18

    1/68

    LINUXCOMUNICACION

    ENTRE PROCESOS

    NUMERO 18

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

    LOS MEJORES ARTCULOS GRATIS EN NUESTRA WEBP 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 ! ! !

    N 18 -- P.V.P. 4,5 EUROS

    PASO DE VARIABLES

    3 SERVIDORES ON LINE PARA TUS PRACTICAS DE HA

    DESCUBRIMOS EL

    T C PC P / IP : U D P/ IP : U D P

    P R O TR O T O C O L O D E D AC O L O D E D A T A G R A M A SG R A M A S

    D E U S U A R IOE U S U A R IO

    POTENCIAL DEL XML

    PP

    A A

    SS

    OO

    PP A S O A S O

    PP

    A A

    SS

    OO

    PP A S O A S O aaaaaaa aaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    8 4 1 40 9 0 2 0 27 5 6

    81000

  • 8/14/2019 Haxcra18

    2/68

  • 8/14/2019 Haxcra18

    3/68

  • 8/14/2019 Haxcra18

    4/68

    EDITORIALel tiempo y las promesas

    Grandes cambios se han sucedido en las ltimas semanasen este pas. No, no me refiero al cambio de gobierno, esoes lo de menos lo importante son los cambios sociales,esos que hacen de nosotros quienes realmente somos.

    Hace tiempo, en el Foro de Hack x Crack se cre un hilodonde hablamos sobre el futuro de la humanidad. Unos,

    pesimistas, argumentaban que el hombre acabara

    destruyendo su entorno y a s mismos otros, optimistas,crean que en el ser humano sera lo suficientementeinteligente como para superar las adversidades de laevolucin.

    Yo no conozco el futuro, ignoro lo que le depara el futuroa la humanidad, pero SI SE QUE EL FONDO DEL SER HUMANO ES BUENO.

    Argumento? Muy simple, la realidad. En Marzo pude

    ver como unos hombres y mujeres que acababan de salvarsede la muerte, volvan al peligro para salvar a otros hombresy mujeres que ni tan siquiera conocan. Y pude ver comootros hombres y mujeres que podran haberse quedado asalvo en sus casas, optaron por enfrentarse al peligro paraayudar a sus semejantes.

    Tengo la certeza de que el hombre, en su interior ms profundo, es bueno. Eso me da esperanza y fuerzas paraseguir adelante, fuerza para creer que unos pocos jams

    podrn doblegar a la mayora y la mayora es buena, lamayora somos hroes, la mayora sacamos de nuestrointerior lo mejor que tenemos en los momentos msdifciles.

    No olvidemos nunca a quienes han dejado de vivir pararegalarnos la vida al resto.

    GRACIAS...

    44 EDITEDIT ORIALORIAL

    55 CurCu r so de PHP: Maneso de PHP: Mane jo de F jo de F oror mularios Wmularios W ebeb

    11 11 XBXB OO X (IV): ConX (IV): Con viervier tt ela en un centrela en un centr o multimediao multimedia

    11 66 PrPr ogramacin bajo linux: Memoria comogramacin bajo linux: Memoria com parpa r tidatida

    22 Cur22 Cur so de Tso de T CP/IP (II) UDPCP/IP (II) UDP

    40 Cur40 Cur so XML: XSLso XML: XSL

    50 La r50 La r ealidad de los virealidad de los vir us inf us inf oror mticosmticos

    11 0 Ser0 Ser vidor HXvidor HX CC : Modo de em: Modo de em pleo.pleo.

    22 1 Colabora con noso1 Colabora con noso trtr os .os .

    38 Descarga nues38 Descarga nues trtr os logos y melodias.os logos y melodias.

    38 Ganador SUSE LINUX38 Ganador SUSE LINUX

    39 Suscripciones.39 Suscripciones.

    65 Nmer65 Nmer os atrasados.os atrasados.

  • 8/14/2019 Haxcra18

    5/68

    PC PASO A PASO N 18 Pgina 5

    En la navegacin web intervienen lossiguientes elementos:

    Un Cliente (Navegador Web)Un Servidor WebUna Peticin (Request)

    Una Respuesta (Response)

    En pocas palabras, un cliente (NavegadorWeb) realiza peticiones (Request) a unServidor Web que responde (Response) laspginas web que estn almacenadas en l.

    Normalmente cuando se desarrollan pginasWeb, es necesario que los datos recogidosen un primer momento se arrastren entrelas diferentes pginas mientras nos seannecesarios.

    Un ejemplo muy claro de esto es un sistemade registro de usuarios, todos nos hemosregistrado en algn portal o algn site , ypara realizar el registro completo hay querealizarlo por pasos, donde cada paso es unapgina Web diferente y los datos obtenidosen la primera pgina se deben mantenerhasta la finalizacin del registro.

    Variables a travs de la URL

    Para pasar las variables de una pgina PHPa otra, lo podemos hacer introduciendo dichavariable dentro del enlace hipertexto de lapgina destino.

    La sintaxis sera la siguiente:

    enlace

    Si nos fijamos, veremos que las variables noposeen el smbolo $ delante. Esto se debe aque en realidad este modo de pasar variableses comn a todos los lenguajes (ASP, PHP,JSP,...)

    Las variables las recibe la pgina destino delenlace, y ya podemos trabajar directamentecon ellas; pero no siempre se definenautomticamente las variables recibidas porparmetro en las pginas Web, depende deuna variable de configuracin de PHP:register_globals , que tiene que estaractivada para que as sea.

    A continuacin vamos a explicar esto en unejemplo. Tenemos dos pginas, registro1.phpy registro2.php, que siguen los pasos paraun registro simple de usuarios.

    Registro Paso 1

    Nombre:

    Apellidos:

    Email:

    Curso de PHP

    Manejo de formularios web

    - FORMULARIOS EN PHP: Trabajaremos con los datos.- Enviaremos datos de una pgina a otra,- Los recogeremos y finalmente los trataremos.

  • 8/14/2019 Haxcra18

    6/68

    Pgina 6 PC PASO A PASO N 18

    Enviar

    Registro Paso 2

    Usuario Registrado:

    Nombre:

    Apellidos:

    Email:

    Si nos fijamos en la barra de direccin delnavegador de la imagen anterior, en la URLde la pgina aparecen las variables junto alvalor que les hemos rellenado en el formulario.

    $HTTP_GET_VAR S

    Tambin es posible recopilar en una variabletipo array el conjunto de variables que hansido enviadas al script por este mtodo apar t i r de la var iable de s is tema$HTTP_GET_VARS, que es un array asociativo.

    Registro Paso 2

    Usuario Registrado:

    Nombre:

    Apellidos:

    Email:

    Aunque podamos recoger variables que sedefinen directamente en nuestra pgina,resulta ms seguro utilizar $HTTP_GET_VARSpor dos razones:

    Programacin PHP - Programacin PHP - Programacin PHP - Programacin PHP

  • 8/14/2019 Haxcra18

    7/68

    PC PASO A PASO N 18 Pgina 7

    La primera es que as nos aseguramos queesa variable viene realmente de la URL

    La segunda, que as nuestro cdigo ser

    ms claro cuando lo volvamos a leer, porquequedar especificado que esa variableestamos recibindola por la URL.

    $_GET

    A partir de la versin 4.1.0 de PHP se haintroducido el array asociativo $_GET, quees idntico a $HTTP_GET_VARS, aunque unpoco ms corto de escribir.

    Variables a travs de Formularios

    El proceso es similar al explicado para lasURLs, pero en esta ocasin el envi devariables de una pgina PHP a otra no serealiza a travs de la URL, si no envindolasa travs de un formulario.

    Al igual que en las variables a travs de laURL, las variables que se procesan a travsdel envo de formularios no siempre se definenautomticamente, ello depende de una

    variable de configuracin de PHP:register_globals , que tiene que estaractivada para conseguir que las variables sedefinan automticamente.

    Para ver el funcionamiento del procesamientode variable a travs de los formularios vamosa realizar el mismo ejemplo que en el apartadoanterior.

    Tenemos dos pginas, registro1.php yregistro2.php, que siguen los pasos para un

    registro simple de usuarios.Registro Paso 1

    Nombre:

    Apellidos:

    Email:

    Como podemos ver, el cdigo es exactamenteigual al del ejemplo de procesamiento devariables a travs de la URL, en lo nico quese diferencia es en la lnea de definicin delformulario:

    Programacin PHP - Programacin PHP - Programacin PHP - Programacin PHP

  • 8/14/2019 Haxcra18

    8/68

    Pgina 8 PC PASO A PASO N 18

    y en el botn que realiza el envo:

    Vamos a prestar especial atencin a la lneaen la que se define el formulario, ACTIONnos indica la pgina destino y METHOD, nosindica el mtodo (GET o POST) utilizado parael envo del formulario.

    Si METHOD es igual a GET las variables delformulario se envan a travs de la URL, ysi METHOD es igual a POST, el envo devariables no es visible a travs de la URL.

    Cul es el mejor a utilizar? Pues estodepender del caso concreto en el que nosencontremos, pero siempre queda muchoms elegante y seguro que las variables noestn visibles en la URL. Adems la longitudde cadena permitida en la URL es de 255,as que es aconsejable si se van a rellenarmuchos datos que en METHOD utilizado seaPOST.

    Registro Paso 2

    Usuario Registrado:

    Nombre:

    Apellidos:

    Email:

    Si ejecutamos el cdigo anterior no recibiremoslas variables en registro2.php porqu? PHPdistingue entre maysculas y minsculas, esCASE-SENSITIVE, por lo que las variables$nombre, $apellidos y $email son nuevas parael y no tienen ningn valor.

    El siguiente cdigo es el correcto:

    Registro Paso 2

    Usuario Registrado:

    Nombre:

    Apellidos:

    Email:

    Como podemos observar en la imagen anterior,las variables no estn visibles en la URL de lapgina, pero esto cambiara si el METHODutilizado fuese GET.

    Programacin PHP - Programacin PHP - Programacin PHP - Programacin PHP

  • 8/14/2019 Haxcra18

    9/68

    PC PASO A PASO N 18 Pgina 9

    $HTTP_POST_VARS

    Tambin es posible recopilar en una variabletipo array el conjunto de variables que hansido enviadas al script por este mtodo apar t i r de la var iable de s is tema$HTTP_POST_VARS, que es un arrayasociativo.

    La sintaxis es la siguiente:

    $HTTP_POST_VARS["nombre"]

    Aunque podamos recoger variables que sedefinen directamente en nuestra pgina,resulta ms seguro utilizar $HTTP_POST_VARSpor dos razones, la primera que as nosaseguramos que esa variable viene realmente

    de la URL y la segunda, que as nuestrocdigoser ms claro cuando lo volvamos aleer, porque quedar especificado que esa

    variable estamos recibindola por la URL

    $_POST

    A partir de PHP 4.1.0 se pueden recoger lasvariables de formulario utilizando tambin elarray asociativo $_POST, que es el mismo que$HTTP_POST_VARS, pero ms corto de escribir.

    En el prximo nmero

    En el prximo nmero comenzaremos aprogramar sockets, programar socket nospermitir hacer un emulador de Telnet, hacerun FTP, ... y todo gracias al PHP ;)

    Programacin PHP - Programacin PHP - Programacin PHP - Programacin PHP

  • 8/14/2019 Haxcra18

    10/68

    MUY IMPORTANTE!!!!! Por favor, no borres archivosdel Servidor si no sabes exactamente lo que ests haciendo ni

    borres las carpetas de los dems usuarios. Si haces eso, lo nicoque consigues es que tengamos que reparar el sistema servidor

    y, mientras tanto, ni tu ni nadie puede disfrutar de l :(

    Es una tontera intentar romper el Servidor, lo hemos puesto

    para que disfrute todo el mundo sin correr riesgos, para que todo

    el mundo pueda crearse su carpeta y practicar nuestros ejercicios.

    En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada

    de nada que robar , es un servidor limpio para TI, por lo tanto

    cudalo un poquito y montaremos muchos ms :)

    MUY IMPORTANTE. . .!

    SERVIDOR DE HXCSERVIDOR DE HXCMM ODO DE EMPLEOODO DE EMPLEO

    - H a c k x C r a c k h a h a b i l i t a d o t r e s

    s e r v i d o r e s p a r a q u e p u e d a s r e a l i z a r l a sp rc t i cas de hack ing .

    - Las IPs de los serv idores de hacking lase n c o n t r a r s e n E L F O R O d e l a r e v i s t a(www.hackxcrack.com). Una vez en el foro entraen l a zona COMUNICADOS DE HACK X CRACK (a r r iba de lt o d o ) y v e r s v a r i o s c o m u n i c a d o s r e l a c i o n a d o s c o n l o ss e r v i d o r e s . N o p o n e m o s l a s I P a q u p o r q u e e s b u e n oacostumbrar te a entrar en el foro y leer los comunicados.S i hay a lguna inc idenc ia o cambio de IP o lo que sea , secomunicar en EL FORO.

    - A c t u a l m e n t e t i e n e n e l B U G d e l C o d e /Decode . La forma de explotar es te bug la expl icamosextensamente en los nmeros 2 y 3. Lo dejaremos as poru n t i e m p o ( b a s t a n t e t i e m p o ; ) N u e s t r a i n t e n c i n e s i r

    habilitando servidores a medida que os enseemos distintost ipos de Hack .- En los Se rv idores co r re e l Windows 2000 con e l I ISd e S e r v i d o r We b . No hemos parcheado n ingn bug , n itan siquiera el RPC y por supuesto tampoco h emos instaladoningn Service Pack. Para quien piense que eso es un error( lgico s i tenemos en cuenta que el RPC provoca una cadac o m p l e t a d e l s i s t e m a ) , s o l o d e c i r t e q u e A Z I M U T h aconf igurado un f i rewal l desde ce ro que ev i ta e l bug de lRPC, (b loqueo de los puer tos 135 ( t cp /udp) , 137 (udp) ,138 (udp) , 445 ( tcp) , 593 ( tcp)) . La intencin de todo estoe s , p r e c i s a m e n t e , q u e p u e d a s p r a c t i c a r t a n t o c o n e lCODE/DECODE como con cualquier otro bug que conozcas( y h a y c i e n t o s ! ! ! ) . P o c o a p o c o i r e m o s c a m b i a n d o l aconfiguracin en funcin de la experiencia , la idea es tenerl o s S er v i d o r e s l o m e n o s p a r c h e a d o s p o s i b l e s p e r omantenerlos operat ivos las 24 horas del da . Por todo el loy deb ido a pos ib les cambios de conf igurac in , no o lv idesvis i tar e l foro (Zona Comunicados) antes de penetrar ennues t ros se rv idores .- Cada Serv idor t i ene dos un idades (d i scos duros duros ) :* La unidad c: - -> Con 40GB y Raz del Sis tema* La unidad d: - -> Con 40GB* La un idad e : - -> CD-ROM

    Nota: Raz del Servidor, significa que el Windows AdvancedS e r v e r e s t i n s t a l a d o e n e s a u n i d a d ( l a u n i d a d c : ) yc o n c r e t a m e n t e e n e l d i r e c t o r i o p o r d e f e c t o \ w i n n t \ P o r l o t a n t o , l a r a z d e l s i s t e m a e s t e n c : \ w i n n t \

    - E l I IS , In te rne t In format ion Server, e s e l Serv idor depg inas Web y t i ene su ra z en c : \ ine tpub (e l d i rec to r iopor de fec to )

    Nota: Para quien nunca ha tenido instalado el I IS, le serextrao tanto el nombre de esta carpeta (c : \ inetpub) comosu contenido. Pero bueno, un da de estos os ensearemosa instalar vuestro propio Servidor Web (IIS) y detal laremossu func ionamien to .

    De momento , lo n ico que hay que saber es que cuandoT pongas nuestra IP (la IP de uno de nuestros servidores)en tu navegador (e l Internet explorer por e jemplo) , lo quee s t s h a c i e n d o r e a l m e n t e e s i r a l d i r e c t o r i oc:\Inetpub\wwwroot\ y leer un archivo llamado default.htm.

    Nota : Como cur ios idad , t e d i remos que APACHE es o t roServ idor de pg inas Web ( seguro que has o do hab la r de l ) . S i tuv isemos ins ta lado e l apache , cuando pus iesesnues t ra IP en TU navegador, acceder as a un d i rec to r ioraz del Apache (donde se hubiese instalado) e intentar asl e e r u n a p g i n a l l a m a d a i n d e x . h t m l . . . p e r o . . . q u t ee s t o y c o n t a n d o ? . . . s i h a s s e g u i d o n u e s t r a r e v i s t a y adominas de sobras e l APACHE ; )

    Expl icamos es to porque l a mayor a , seguro que p iensa u n S e r v i d o r We b c o m o e n a l g o e x t r a o q u e n o s a b e n ndonde est ni como se accede. B ueno, pues ya sabes dndse encuen t ran l a mayor a de I IS (en \ Ine tpub \ ) y cu l ela pg ina por de fec to ( \ Ine tpub \wwwroot \defau l t .h tm) . ahora, piensa un poco Cul es uno de los objet ivos du n h a c k e r q u e q u i e r e d e c i r l e a l m u n d o q u e h a h a c k e a duna Web? Pues est claro, el objetivo es cambiar (o sustituie l a r c h i v o d e f a u l t . h t m l p o r u n o p r o p i o d o n d e d i g a h osoy DIOS y he hackeado es ta Web (eso s i e s un l amer

    A p a r t i r d e e s e m o m e n t o , c u a l q u i e r a q u e a c c e d a a e sservidor, ver e l defaul t .htm modif icado para vergenza d

    s i t e hackeado . Es to es muy genr ico pero os dar ui d e a d e c m o f u n c i o n a e s t o d e h a c k e a r We b s ;

    - Cuando accedas a nues t ro se rv idor median te e l CODEDECODE BUG, crea un director io con tu nombre (el que t e g u s t e , n o n o s d e s t u D N I ) e n l a u n i d a d d : a s e r

    posible y a par t i r de ahora ut i l iza ese director io para hactus p rc t i cas . Ya sabes , sub i rnos p rogrami tas y p rac t i cacon e l los : ) . . . . . . cmo? que no sabes c rea r d i rec to r iomedian te e l CODE/DECODE BUG. . . r epasa los nmerost res de Hack x Crack ;p

    Puedes crear te tu director io donde quieras , no es necesar iq u e s e a e n d : \ m e l l a m o j u a n . Ti e n e s t o t a l l i b e r t a d ! ! ! U ni d e a e s c r e a r l o , p o r e j e m p l o , e nd : \ x x x \ s y s t e m 32 \ d e f a u l t \ 1 0 0 1 9 9 01 \ m e l l a m o j u a n ( y a i r a p r e n d i e n d o q u e c u a n t o m a s o c u l t o m e j o r :

    Es pos ib lemente l a p r imera vez que t i enes l a opor tun idde invest igar en un servidor como este s in cometer un del i(noso t ros t e de jamos y por lo t an to nad ie t e pe rsegu i r )

    Aprovecha la oportunidad!!! e invest iga mientras dure esin ic ia t iva (esperemos que muchos aos) .

    - En es te momento t enemos mas de 600 ca rpe tas de peque, como tu, es t pract icando. As que haznos caso y cretu p rop ia ca rpe ta donde t raba ja r.

  • 8/14/2019 Haxcra18

    11/68

    PC PASO A PASO N 18 Pgina 11

    Aqu estamos un mes ms, antes de todoquiero agradecer a los que apoyan esta serie,es muy grato ver recompensado el esfuerzo.GRACIAS.

    Este mes vamos a descubrir los distintoslectores DVD que tiene la consola Xbox yvamos a instalar y configurar unos programasque nos permitan ver pelculas DivX, escucharMP3, ver fotos, incluso ahorrarnos el tenerque comprar el Kit DVD para ver las pelculasen este formato.

    Como es de costumbre en esta serie, os voya detallar lo que necesitamos para hacer todasestas cosas.

    Lo que necesitamos: Xbox con mod chip.Evox instalado en nuestra consolaMedia Center (la versin ms reciente)DVDX2.ZXBTOOLS (Ultima versin).Pc Preparado.

    Todos los programas los podris encontrar enla Web de la revista (www.hackxcrack.com).

    Los DVD de XBOX:

    Algunos de vosotros sabris ya que hay 3fabricantes distintos de lectores para estaconsola, para quien no lo sepa, las marcasson Samsung, Thompson y Philips.

    Os podis estar preguntando, para qu oscuento esto?

    Pues muy sencillo, dependiendo del lector quetengamos, podremos usar CDs, CD-RW, DVDy determinadas marcas de cada uno de stos.

    Samsung:Este lector es elmejor, lee lo quele metas, tantoC D s c o m oD V D s yprcticamente decualquier marca.En la imagen dearriba podis verc m o e s l abandeja de este

    lector, as podrissaber qu lectorl leva vuestrac o n s o l a s i nnecesidad deabrirla.

    Philips:Este lector es elsegundo si losordenamos demejor a peor. Lee

    algunos CDs yD V D s d em a r c a sc o n o c i d a s ,siempre y cuandose calibre la lentepara que los lea,ya que el lser encargado de leer los CDsest tan bajo de potencia que no es capaz deleerlos.

    Serie Xbox Life (IV)Convirtiendo nuestra Xbox en un

    centro Multimedia.

    - Podemos ver pelculas en DivX con la XBOX?- Y escuchar musica en formato MP3?- Y visualizar fotos?

  • 8/14/2019 Haxcra18

    12/68

    El calibrar la lente lleva sus riesgos, ya quele acortas la vida y en muchos casos, si sehace mal, puede dejar de funcionar.

    Thompson:Este podramosdecir que es elpeor, ya que nolee CDs, soloCD-RW y delagunas marcascomo VERBATIM.

    Con los DVDtambin tenemose l m i s m o

    problema y lo ms aconsejable es usar losde marca PRIMCO.

    Instalando DVDX2:

    Nos lo descargamos de la Web y lodescomprimimos en una carpeta del pc.Veremos dos archivos: el dvdx_v2.0.iso ydvdx2.txt.

    El txt lo podemos borrar, slo trae informacinde quien lo cre.

    Extraemos dvdx_v2.0.iso con el ZXBTOOLS(como os ense el mes pasado) y tendremosuna carpeta llamada Media y un archivollamado default.xbe .

    Ahora tenemos que pasar la carpeta y elarchivo al HD de la consola. Si tenisconfigurado el evox como expliquanteriormente, copiis todo a la carpeta MPque creamos en el artculo de Evolution X. Sino fuera as, lo copiis a la carpeta quecorresponda.

    La transferencia la hacemos por FTP. Copiamostodo, reiniciamos la consola y lo veremos enel apartado donde los hayis copiado (en micaso Media Players).

    Nos preparamos unas palomitas, arrancamosel DVDX2, metemos la pelcula y a disfrutar.Con esto tendris que usar el mando de la

    consola para manejaros por los mens, pero os habrisahorrado 30 .

    Instalando y Configurando El Xbox Media

    Center:Lo descargamos de la web, lo descomprimimos en unacarpeta y veremos esto:

    Nos metemos en la carpeta xbmc-2004-01-02 y veremosesto:

    Editamos con el bloc de notas el archivo XboxMediaCenter.xml .Aqu os digo os enseo cmo he configurado el archivo,lo configuramos a nuestro gusto (lo que est en negritaes la explicacin):

    #Skin que cargar al iniciar el programa, lo dejamoscomo est!#

    MediaCenter

    #Direccin IP, Mscara subred, Puerta de enlace pordefecto, Nombre del server (Dejad en blanco siqueris usar los valores del Evolution X) !#

    ---

    Pgina 12 PC PASO A PASO N 18

    Programacin PHP - Programacin PHP - Programacin PHP - Programacin PHP

  • 8/14/2019 Haxcra18

    13/68

    PC PASO A PASO N 18 Pgina 13

    192.168.0.1194.97.4.18yes

    #Determina las unidades del hd de la consola quese puede usar !#

    yesno

    #Valores del servidor proxy!#--

    #Servidor remoto que nos dar la fecha y hora!#

    207.46.248.43

    #El dashboard que arrancar al salir!#C:\evoxdash.xbe

    #Directorios alternativos para los subttulos de laspelculas, no os olvidis de crear esta carpeta !#

    $HOME\subtitles

    #Lo dejamos como est !#

    0

    #Extensiones de las fots, Videos y Sonidos quequeremos que acepte. Si falta alguna, agregadla!#

    .png|.jpg|.jpeg|.bmp|.gif|.ico|.tif|.tiff|.tga|.pcx

    .m4a|.flac|.ac3|.aac|.nfo|.pls|.rm|.mpa|.wav|.wma|.ogg|.mp3|.mp2|.m3u

    .nfo|.rm|.m3u|.ifo|.mov|.qt|.divx|.xvid|.bivx|.vob|.pva|.wmv|.asf|.asx|.ogm|.m2v|.avi|.bin|.dat|.mpg|.mpeg|.mkv|.avc|.vp3|.svq3|.nuv|.viv|.dv|.fli

  • 8/14/2019 Haxcra18

    14/68

    Pgina 14 PC PASO A PASO N 18

    #Configuracin para las fotos !#

    Fotos E E:\fotos\

    Fotos F:F:\fotos\

    Fotos en DVDD:\

    #Ahora llega lo interesante, estos apartado son parahacer stemig o lo que es lo mismo, pillar los archivosen este caso las fotos del PC, por medio del cableRJ-45, y aqu se pueden definir los valores. Podisquitar los que no usis; yo solo uso el SMB, que msadelante os explicar cmo se configura. A partir deaqu quitar los dems !#

    XNSxns://192.168.0.1:1400/

    XBMSxbms://192.168.0.1:1400/

    #Aqu est la configuracin del strem por SMB,dependiendo de cmo hayis compartido la carpetaen el pc, se configura de una manara o de otra!#

    SMB

    #Este es un ejemplosmb://dominio;Usuario:contrasea@servidor/carpeta compartida !##As tengo configurado el mo !#

    smb://192.168.0.1/fotos/

    #Mis archivos !#

    #Ms de lo mismo, venga, a configurar !#

    E :E:\

    F: driveF:\

    DVDD:\

    SMBsmb://192.168.0.1/archivos/

    # Mi msica !#

    Musica E: E:\MP3\

    Musica F:F:\MP3\

    MP3 DVDD:\

    SMBsmb://192.168.0.1/mp3/

    Programacin PHP - Programacin PHP - Programacin PHP - Programacin PHP

  • 8/14/2019 Haxcra18

    15/68

    PC PASO A PASO N 18 Pgina 15

    #Mis videos !#

    Viedos E:E:\videos\

    Videos F:F:\videos\

    Videos DVDD:\

    SMB

    smb://192.168.0.1/videos/

    Pinchamos en la pestaa compartir,seleccionamos la casilla Compartir esta carpetaen la red , cambiamos el nombre si ya estaocupado y aceptamos.

    Esto lo hacemos con todas las carpetas quehemos puesto en los apartados de SMB.

    Pues ya est todo. Pasamos todo lo que hayen esta carpeta a su carpeta correspondientedel HD de la consola, lo arrancamos y adisfrutar.

    Con un poco de investigacin os haris con elcontrol de todo, es muy sencillo e intuitivo.

    El mes que viene jugaremos online GRATIS.Hasta entonces.

    Salu2.

    Ya se ha acabado la configuracin, as que guardamos loscambios, y salimos del bloc de notas.

    Ahora tenemos que compartir las carpetas en nuestro PCpara que a travs de la red podamos cargar pelculas oescucharmsica.

    En Windows XP se hara de la siguiente manera:

    Abrimos el exploradorde Windows, nossituamos encima del a c a r p e t a q u equeremos compartir,por ejemplo el devideos, pinchamoscon el botn derechosobre la carpeta yp i n c h a m o s e npropiedades:

    Programacin PHP - Programacin PHP - Programacin PHP - Programacin PHP

  • 8/14/2019 Haxcra18

    16/68

    Pgina 16 PC PASO A PASO N 18

    1. Presentacin

    En el presente artculo veremos como esposible intercambiar datos entre dos procesos.Dispondremos de tres mecanismos bsicos:Memoria compartida, colas de mensajes yempleo de pipes y sockets . Analizaremos enel presente artculo las dos primeras formas.

    2. Memoria compartida.

    Este ser el mtodo ms rpido de comunicardos procesos entre s. Consiste en hacer quedos procesos compartan una zona comn dememoria de manera que los dos procesospodrn leer y escribir en dicha zona dememoria.

    Esto, que en teora es sencillo de entender,a la hora de llevarlo a la prctica se complicaun poco. Cada vez que ejecutamos un proceso,este tiene asociada una parte de la memoriaexclusivamente para l. Ah ser donde guardesus datos (variables, pila, etc. . .) .

    Si en alguna ocasin este proceso intentaacceder a una zona de memoria a la que notiene acceso u otro proceso intenta accedera la memoria reservada para este proceso,

    se estar produciendo una violacin desegmenteto con lo cual el programa fallar.

    El encargado de controlar esto es el S.O., yafortunadamente en nuestro caso, estedispone de la interfaz adecuada que nospermitir crear zonas de memoria especialesque podrn ser compartidas entre variosprocesos.

    2.1. Solici tud de memoriacompartidaLa primera operacin que debemos aprenderes la necesaria para solicitar una zona dememoria compartida. La manera de haceresto es mediante la funcin:#include

    #include

    #include

    int shmget(key_t key, int size, int shmflg);

    Retorna: -1 en caso de error, o el identificadorde la zona de memoria compartida en otrocaso.

    shmget reserva una zona de memoria detamao size bytes devolviendo un identificador

    que nos permitir manejar dicha zona dememoria. El objetivo de key es similar al vistoen la llamada de semforos semget (es decir,pasar una clave nica que servir en nuestrocaso para identificar de manera nica la zonade memoria asociada a nuestro proceso).

    En cuanto a shmflag ser una mscara de bitsque indicarn el modo de adquisicin delidentificador devuelto por shmget :

    Si el bit IPC_CREATest activo, la zonacompartida de memoria se crear a no ser

    que haya sido creada por otros procesos.Si los bits IPC_CREATe IPC_EXCLestn

    activos simultneamente, la llamada a shmgetfalla en caso de que la memoria compartidahubiese sido reservada previamente.

    Adems de estos valores podremos indicarlos permisos: 0400 (lectura para el usuario),0200 (modificacin para el usuario), 0060

    Programaci On en GNU/LiNUXMemoria Compartida

    el_chaman. Luis U. Rodrguez Paniagua

    - Intercambio de datos entre procesos - pipes- Memoria compartida - sockets- Colas de mensajes

  • 8/14/2019 Haxcra18

    17/68

    PC PASO A PASO N 18 Pgina 17

    (permiso de lectura y modificacin para elgrupo) y 0006 (permiso de lectura ymodificacin para el resto de los usuarios).

    Para crear una zona de memoria compartidade 1KByte (1024 bytes) con permisos deescritura lectura slo para usuarioteclearamos:

    int shmid;

    ...

    if (( shmid = shmget(IPC_PRIVATE, 1024, IPC_CREAT | 0600 )) == -1)

    {

    fprintf(stderr, " ERROR al reservar memoria compartida\n ");

    }

    ....

    2.2. Control de memoriacompartida

    Una vez que hemos reservado una zona dememoria compartida, podemos realizardiversas operaciones de control sobre dichazona con el fin de establecer distintos atributosde la misma. Estas operaciones de controllas realizar la funcin shmctl.

    La declaracin de esta funcin es:#include

    #include

    #include

    int shmctl(int shmid, int cmd, struct shmid_ds *buf);

    Retorna 0 en caso de xito y -1 en caso deerror.

    shmid es el identificador de memoriacompartida sobre el que vamos a operar.

    cmd es la operacin de control que queremosrealizar. Este parmetro puede tomar lossiguientes valores:

    IPC_STATLee el estado de la estructura decontrol de la memoria y lo devuelve a travsde la zona de memoria apuntada por *buf .La estructura de esta zona de memoria es:

    struct shmid_ds { struct ipc_perm shm_perm; /* Estructura de permisos */ int shm_segsz; /* Tamao del rea de memoria (bytes) */ time_t shm_atime; /* last attach time */ time_t shm_dtime; /* last detach time */

    time_t shm_ctime; /* last change time */ unsigned short shm_cpid; /* pid of creator */ unsigned short shm_lpid; /* pid of last operator */

    short shm_nattch; /* no. of current attaches */ ...

    };

    struct ipc_perm { key_t key;ushort uid; /* owner euid and egid */ ushort gid;ushort cuid; /* creator euid and egid */ ushort cgid;ushort mode; /* lower 9 bits of access modes */ ushort seq; /* sequence number */

    };

    IPC_SETInicializa algunos de los camposde la estructura de control de la memoriacompartida. El valor de estos campos setoma de la estructura referenciada por *buf .

    IPC_RMIDElimina la zona de memoriaasociada al identificador shmid. Si esta zonade memoria compartida est siendo usadapor varios procesos, no se elimina hastaque todos los procesos liberen esta zona de

    memoria compartida.SHM_LOCKBloquea en memoria elsegmento identificado por shmid impidiendoel intercambio sobre l. Esta operacin slopuede ser realizada por el superusuario.

    SHM_UNLOCK. Desbloquea en memoria elsegmento identificado por shmid. Estaoperacin slo la puede realizar elsuperusuario.

    2.3. Operaciones con memoria

    compartidaPara poder usar una zona de memoriacompartida que previamente hemos creado,esta debe ligarse al espacio de direcciones dememoria asignadas a nuestro proceso. Laforma en la que vamos a poder ligar o desligaruna zona de memoria compartida al espaciode direcciones de nuestro proceso es medianteel empleo de las funciones shmat y shmdt .

    Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux

  • 8/14/2019 Haxcra18

    18/68

    Pgina 18 PC PASO A PASO N 18

    #include

    #include

    #include

    void *shmat(int shmid, const void *shmaddr, int shmflg);

    shmat es la funcin encargada de ligar unazona de memoria compartida al espacio dedirecciones de memoria local del proceso.

    Retorna: la direccin a la que est unida lazona de memoria compartida. -1 en caso deerror.

    Los parmetros que recibe son: shmid queser el identificador de la zona de memoriacompartida a enlazar. shmaddr ser ladireccin virtual donde queremos que nuestroproceso "vea" la zona de memoria compartida.Como esto lo debe asignar el ncleo, puedeque no siempre se nos devuelva el punteroapuntando a shmaddr, por lo que se sueleponer este parmetro a 0 y dejar laresponsabilidad al S.O.

    En cuanto a shmflg, se trata de una mscarade bits que indica el modo de acceso amemoria. Si queremos hacer un acceso deslo lectura, indicaremos, por ejemplo,

    SHM_RDONLY(Ms informacin en la pginade manual correspondiente).

    La funcin encargada de desligar la zona dememoria compartida es shmdt :

    #include

    #include

    #include

    int shmdt(const void *shmaddr);

    Retorna: 0 en caso de xito, -1 en caso deerror.Esta funcin recibir como nico parmetro:shmaddr que es el puntero que seala a lazona de memoria compartida a desligar.

    2.4. Ejemplo de usoEn este primer ejemplo vamos a hacer queun proceso hijo llene un vector de caracterescon una frase. A continuacin el procesopadre, espera a que termine el hijo y leedicho vector:

    #include

    #include

    #include

    #include #include

    #include

    int main(int argc, char *argv[])

    {

    int shmid, i, semid, estado, pid;

    struct sembuf operaciones;

    char *mensaje;

    key_t clave;

    //

    // Zona de cracin de memoria compartida

    //

    // Creacin de la memoria compartida

    // Primero la clave de recurso IPC

    if( (clave = ftok("shm.c",'K'))==-1)

    {

    fprintf(stderr," Error al crear la clave\n");

    return -1;

    }

    // Ahora la memoria compartida. Tamao: 1024 caracteres if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1)

    {

    fprintf(stderr," Error al crear segmento de memoria compartida\n ");

    return -1;

    }

    // Ahora debemos enlazar la zona de memoria compartida con la

    // memoria local del proceso.

    if( (mensaje=(char *)shmat(shmid, 0, 0))==-1)

    {

    fprintf(stderr," Error al ligar la memoria compartida\n ");return -1;

    }

    // Comienza el lanzamiento de procesos

    //

    if((pid=fork())==-1)

    {

    // Escribimos en la memoria compartida

    Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux

  • 8/14/2019 Haxcra18

    19/68

    PC PASO A PASO N 18 Pgina 19

    fprintf(stderr, " Error al lanzar proceso hijo\n ");

    return -1;

    }

    if (pid != 0) // Somos el padre

    {

    // leemos de la memoria compartida

    // Esperamos a que termine el proceso hijo

    wait(&i);

    for(i=0;i

  • 8/14/2019 Haxcra18

    20/68

    Pgina 20 PC PASO A PASO N 18

    // Limpieza de memoria compartida

    if((shmdt(mensaje))==-1)

    {

    fprintf(stderr," Error al desaligar memoria compartida\n ");}

    return 0;

    }

    El servidor examina el buffer de memoriacompartida cada segundo e imprime sucontenido.

    El cliente ser el encargado de llenar dichobuffer:

    //

    // Cliente que escribe lo que mostrar el servidor // Compilar con: gcc shm_c.c -o shm_c

    //

    #include

    #include

    #include

    #include

    #include

    #include

    int main(int argc, char *argv[])

    {

    int shmid, i,j, estado;

    struct sembuf operaciones;

    char *mensaje, buffer[80];

    key_t clave;

    //

    // Zona de cracin de memoria compartida

    //

    // Creacin de la memoria compartida

    // Primero la clave de recurso IPC if( (clave = ftok(" shm.c ",' K '))==-1)

    {

    fprintf(stderr," Error al crear la clave\n ");

    return -1;

    }

    // Ahora la memoria compartida. Tamao: 1024 caracteres

    if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1)

    {

    fprintf(stderr," Error al crear segmento de memoria compartida\n");

    return -1;

    } // Ahora debemos enlazar la zona de memoria compartida con la

    // memoria local del proceso.

    if( (mensaje=(char *)shmat(shmid, 0, 0))==-1)

    {

    fprintf(stderr," Error al ligar la memoria compartida\n ");

    return -1;

    }

    // Comienza el lanzamiento de procesos

    //

    printf(" \n Escriba 0 para salir\n ");

    do{

    printf(" \n > ");

    i=0;

    do

    {

    fscanf(stdin, " %c", &mensaje[i]);

    i++;

    }while(mensaje[i-1]!=10);

    //scanf(" %s", buffer);

    //strncpy(mensaje, buffer, 80);for(j=i;j hola

    Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux

  • 8/14/2019 Haxcra18

    21/68

    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 queescribamos en el cliente ser mostrado en elservidor cada segundo.

    Estos dos programas an se pueden mejorarun poco de manera que, por ejemplo, elservidor slo muestre algo cuando el bufferest lleno (vacindolo por ejemplo tras recibirel ltimo dato o sincronizando los procesos

    mediante semforos). Dejo a los lectores elpracticar con estos ejercicios.

    Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux

  • 8/14/2019 Haxcra18

    22/68

    Pgina 22 PC PASO A PASO N 18

    1. INTRODUCCIN

    Espero que no os perdieseis el primer artculodel curso de TCP/IP (Transmisin ControlProtocol / Internet Protocol --- Protocolo deControl de Transmisin / Protocolo deInternet), porque voy a asumir que habiscomprendido a grandes rasgos el conceptode capas de protocolos, y el mecanismo bsicode transporte de paquetes de datos a travsde Internet (o cualquier otra red TCP/IP).

    Para esta primera leccin he escogido unprotocolo muy sencillo, el protocolo UDP (UserDatagram Protocol --- Protocolo deDatagramas de Usuario), para as poderextenderme ms en explicaros algunasherramientas que nos pueden ser tiles a lolargo de todo el curso. De momento, estasherramientas las utilizaremos para manejar

    el protocolo UDP, pero en futuras leccionesexprimiremos al mximo las herramientaspara hacer maravillas con las dems capas deprotocolos: TCP, IP, ARP (Address ResolutionProtocol --- Protocolo de Resolucin deDirecciones), etc.

    Empezar explicando a grandes rasgos elmecanismo de transporte de un paquete UDPa travs de Internet para luego detallar lascabeceras UDP y, por ltimo, veremos todoesto de forma prctica utilizando unasherramientas que nos permiten construirpaquetes UDP desde cero (los llamados rawsockets ).

    Pero, antes de empezar, he de aclararos unasunto. Supongo que algunos de vosotros ospreguntareis qu ha pasado con la serie RAW.Mis intenciones no eran de ninguna manerasustituir la serie RAW por el curso de TCP/IP,si no desarrollar ambos en paralelo. Pero esincreble de qu manera pueden conspirar

    juntas las circunstancias de la vida paracambiar por completo tu rumbo cuando menoste lo esperas. En poco ms de un mes me hansurgido una serie de problemas de todo tipo(familiares, personales, de salud, laborales,y acadmicos) por los cuales ahora (y sinplazo definido) dispongo de muchsimo menostiempo.

    He barajado un poco mis posibilidades, y creoque lo que puedo permitirme de momento escontinuar slo con el curso de TCP/IP, aunqueno descarto publicar algn otro artculo de laserie RAW algn mes que consiga juntar algoms de tiempo. Con esto lo que os quiero

    CURSO DE TCP / IP ( 2 Entrega)

    EL PROTOCOLO DE TRANSPORTE UDP(PROTOCOLO DE DATAGRAMAS DE USUARIO)

    - 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

    NOTA DE PC PASO A PASO / HXC!

    Para todos aquellos que no tienen la primera entrega delcurso de TCP / IP publicada en el nmero 17 de PC PASOA PASO, hemos decidido pasarla a formato PDF y liberarlaen la Web de la revista ( www.hackxcrack.com ).

    Tambin aprovechamos esta nota para indicara nuestros lectores que todos los artculosliberados y los programas que mencionamosen los artculos estn disponibles en la seccinARTCULOS LIBERADOS Y DESCARGAS de laWeb.

  • 8/14/2019 Haxcra18

    23/68

    PC PASO A PASO N 18 Pgina 23

    decir es que no os prometo nada con respectoa la serie RAW, pero que har lo que est enmi mano para que no termine aqu, aunquehaya que avanzar ahora mucho ms despacio.

    Gracias por vuestra comprensin. ;-)

    2. FUNCIONAMIENTO DELPROTOCOLO UDP

    Los que os perdisteis la introduccin de estecurso no tenis que preocuparos, ya que esteprimer punto resume en cierto modo lo queexpliqu entonces. An as, os recomiendoque leis la introduccin, ya que aqu voy aresumir en un par de pginas lo que all explicaba en ms de 20 pginas.

    Para los que s que lesteis la introduccin,este punto creo que os puede ayudar a aclararlas ideas a modo de resumen.

    A lo largo de la serie RAW os expliqu variosprotocolos que funcionaban sobre TCP, peroslo uno que funcionase sobre UDP: el

    protocolo DNS. Vamos a utilizar este protocolocomo ejemplo para ver qu ocurre desde queun cliente solicita una consulta DNS a unservidor, hasta que ste cliente recibe larespuesta pertinente. Os aconsejo que leisel artculo sobre DNS de la serie RAW, que seencuentra en el nmero 14 de la revista,aunque voy a empezar haciendo unaintroduccin sobre es te protocolo.

    2.1. LAS CAPAS DE UDP/IP

    Os recuerdo que el protocolo DNS es el quenos permite utilizar las famosas URLs en lugarde direcciones IP. Es decir, nos permite escribiren nuestro navegador http://www.google.come n l u g a r d e t e n e r q u e e s c r i b i r

    http://216.239.39.99, que es la direccin IPde Google.

    Para conseguir esto, existen repartidos por elmundo una serie de servidores encargadosde traducir URLs a IPs, e IPs a URLs. NuestrosPCs se comunicarn con alguno de estosservidores cada vez que quieran utilizar unaURL, para obtener as su IP correspondiente.Esta comunicacin se lleva a cabo a travsdel protocolo DNS.

    Cuando escribimos en nuestro navegador unaURL, por ejemplo http://neworder.box.sk ,nuestro sistema enviar una consulta DNS aun servidor, indicando en la consulta el nombreque desea t raducir (en es te casoneworder.box.sk, ya que el prefijo http:// esslo una indicacin al navegador sobre elprotocolo a utilizar, pero no forma parte delnombre que deseamos traducir).

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

    NOTA EDITORIAL!

    Para los nuevos lectores, simplemente decir que la seriede artculos denominada SERIE RAW ha estado presenteen casi todos los nmeros de esta publicacin y haconstituido uno de los pilares de la misma.

    La Serie RAW ya nos ha aportado conocimientos sobre losProtocolos ms importantes y desde hace mucho tiempose nos ha reclamado el inicio de un curso de TCP / IP.Finalmente, desde el anterior nmero 17 por fin ese cursoha llegado.

    Tal y como nos describe el autor, esperamos poder hacer ms entregas de la Serie Raw en futuros nmeros, pero deforma ms dilatada en el tiempo. Mientras tanto disfrutemosde este excelente curso de TCP / IP, una serie de artculosampliamente reclamada y esperada por nuestros lectores.

    El artculo SERIE RAW: DNS mencionado por el autor ha

    sido liberado y est disponible en nuestra Web:www.hackxcrack.com

    NOTA DE PC PASO A PASO / HXC:!

  • 8/14/2019 Haxcra18

    24/68

    Pgina 24 PC PASO A PASO N 18

    El servidor DNS nos enviar una respuestaque contendr la IP correspondiente a esenombre.

    Gracias a esto, a continuacin nuestronavegador podr acceder a la mquina quecontiene la pgina Web que deseamos visitar,

    ya que slo puede existir una comunicacindirecta entre dos mquinas si cada una conocela direccin IP de la otra.

    Ahora vamos a pensar un poco en cmo sepodra conseguir todo este mecanismo delDNS, en el cual un cliente solicita un nombrea un servidor, y el servidor le responde conla IP correspondiente. Qu problemas se nospresentan a la hora de llevar a cabo esteproceso aparentemente tan sencillo? Pensadloun poco, y despus mirad la lista de problemasa salvar que os pongo a continuacin, paraver si habis llegado a las mismasconclusiones:

    En primer lugar, por supuesto, hay queconseguir que ambas mquinas (cliente yservidor) tengan una conexin fsica , yasea por cables, por radio, o por cualquier otromedio fsico que les permita establecer unacomunicacin bidireccional.

    En segundo lugar, sabiendo que en Internettodas las mquinas estn conectadas entre s mediante una compleja red de cables yconexiones inalmbricas, es lgico pensar queser necesario conocer el camino a recorreren toda esa maraa de cables para enlazarambas mquinas entre s.

    En tercer lugar, el cliente necesitar conocerla direccin IP del servidor DNS, ya que sloconociendo la direccin IP de una mquinapuedes acceder a ella a travs de Internet.

    En cuarto lugar, tiene que existir algnmecanismo que le indique al servidor que laconsulta que le estamos haciendo es unaconsulta DNS, y no de cualquier otro tipo. Porejemplo, el servidor DNS podra ser al mismotiempo un servidor Web, y un servidor decorreo electrnico. Por tanto, tiene que existirun mecanismo que le permita distinguir quclientes solicitan servicios DNS, culessolicitan servicios Web, y cules solicitanservicios de correo eletrnico.

    A grandes rasgos, son cuatro los problemasque hemos encontrado para conseguir llevara cabo esta comunicacin. Y, por supuesto,

    no es coincidencia que sean cuatro las capasde protocolos utilizadas en una comunicacinUDP:capa fsica, capa de enlace, capa dered, y capa de transporte .

    Si no fuese gracias a la existencia de estas 4capas diferenciadas, el protocolo DNS deberaencargarse por s slo de solucionar todosestos problemas. Es decir, el protocolo DNSdebera tener sus propias conexiones fsicasentre mquinas, sus mecanismos paraencontrar un camino entre todas las mquinasque estn conectadas simultneamente, suspropias direcciones IP, y sus propiosmecanismos para diferenciarse deotros servicios (como la Web o el correoelectrnico).

    Esto convertira al aparentemente sencilloprotocolo DNS en un sistema de unacomplejidad inabarcable, y lo mismo ocurriracon cualquier otro protocolo que tuviese que

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    25/68

    PC PASO A PASO N 18 Pgina 25

    lidiar l solito con todos los problemasexistentes en una comunicacin.

    Vamos a ver entonces cmo se reparte eltrabajo de la comunicacin para permitir queel protocolo DNS se abstraiga de todo lo queno sea su misin directa.

    Empezamos escribiendo una url en nuestronavegador:http://neworder.box.sk/home.html

    En primer lugar, nuestro navegador quitarla parte de la URL que no corresponda alnombre, que es: neworder.box.sk .

    Teniendo ya el nombre, nuestro sistemaconstruye un paquete que contiene la consultaDNS.

    Y ah termina la responsabilidad del protocoloDNS, ya que su nica funcin consiste enenviar consultas de nombres para recibirdirecciones IP en respuesta. Por tanto, nuestrosistema pasar ahora la bola a otro protocolo,que ser el encargado del transporte delpaquete DNS.

    Existen varios protocolos de transporte,aunque los ms importantes son TCP y UDP.

    En este caso, el protocolo de transporteutilizado ser UDP, as que el sistema pasarel paquete DNS al protocolo UDP para queste realice su funcin, que consistebsicamente en marcar el paquete con unpuerto de origen y otro de destino.

    Segn el puerto de destino asignado, lamquina que reciba el paquete (el servidorDNS) podr saber a qu servicio estdestinado.

    En este caso, el puerto de destino es el 53y, por tanto, es un paquete DNS. El puerto

    de origen , en cambio, servir para que elservidor pueda responder a nuestra consulta,utilizando como puerto de destino el que paranosotros era un puerto de origen.

    En resumen, lo que el protocolo UDP haconseguido es identificar una comunicacinentre dos mquinas, entre las cuales podrahaber simultneamente varias comunicacionesestablecidas.

    Lo que hace UDP es envolver el paquete conuna pequea cabecera que aade lainformacin necesaria, es decir, los puertos.

    El trabajo de UDP ya ha terminado, ytiene que pasar el paquete a otro protocolopara que se encargue del resto deproblemas de comunicacin. Concretamente,el prximo protocolo tendr que solucionarel problema de identificar a dos mquinas(cliente y servidor) dentro de los millones quehay en toda la red Internet. En este caso,el protocolo de red utilizado ser elprotocolo IP .

    Este protocolo se encargar de asignar lasdirecciones IP al paquete: la de origen serla nuestra, y la de destino ser la delservidor DNS. Igual que slo podemos llamara una persona por telfono si marcamos sunmero, slo podremos acceder a unamquina de Internet si marcamos sudireccin IP.

    El protocolo IP, por tanto, aade al paqueteuna nueva cabecera, que contendr las IPsde origen y de destino, as como una indicacinde que el protocolo desde el cual le lleg elpaquete fue el protocolo UDP.

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    26/68

    Pgina 26 PC PASO A PASO N 18

    El paquete pasa ahora al protocolo Ethernet ,un protocolo que permite encontrar el caminofsico para enlazar dos mquinas (cada unacon una direccin IP que ya conocemos graciasal protocolo IP).

    Si cada mquina de Internet tuviese millonesde cables para enlazarse con todas y cadauna de las dems mquinas conectadas a lared, no sera necesario el uso de protocolosde enlace. Pero, al estar en Internet todoconectado con todo, necesitamos unmecanismo para encontrar el camino entredos mquinas, an conociendo las direccionesque las identifican (direcciones IP).

    Exactamente lo mismo ocurre en el telfono,lo cual podemos ver claramente si recordamosa las telefonistas de antao. Antiguamente(y hoy tambin ocurre, pero con la diferenciade que est automatizado) en el instante enque marcabas un nmero de telfono no seestableca una comunicacin. Para conseguiresto haca falta un procedimiento intermedio,que era el de las telefonistas. Las telefonistasse encargaban de ir conectando ydesconectando cables en sus paneles paraconseguir enlazar los dos puntos de lacomunicacin.

    En el caso de Internet, a pesar de lo que oshayan contado vuestros padres, no existeuna raza de enanitos encargada de conectary desconectar cables, as que todo esto ocurrede forma automtica y virtual, es decir, nose conecta ni se desconecta nada fsicamente,si no que simplemente se establecenconexiones lgicas.

    Para establecer estas conexiones se utilizanotro tipo de direcciones sobre las que ya hablun poco en el artculo anterior, y hablar

    mucho ms en prximos artculos, por lo quede momento nos quedamos slo con la ideade que el protocolo Ethernet aade su propiacabecera a todas las que haba ya en elpaquete.

    Hasta ahora ya hemos solucionado los tresltimos problemas que mencion (volved atrsy revisad la lista de problemas, y veris queen efecto estn solucionados), as que slonos queda el primer problema: la conexinfsica . La solucin a este problema es biensencilla: enchufa el cable del mdem, porquesi no, por mucho protocolo que tengas seguroque no vas a poder enviar ninguna consultaDNS! :-P

    Una vez que nuestro paquete est ya circulandopor los cables fsicos (u ondas de radio fsicas),terminar llegando hasta el servidor DNS. Elservidor analizar el paquete, ver que setrata de una consulta DNS, y har lo que tengaque hacer para conseguir el resultado pedido(explicado en detalle en el artculo sobre DNSde la serie RAW, en el nmero 14 de la revista).

    Una vez encontrada la respuesta, tendr queconstruir un sencillo paquete de respuestaDNS que simplemente contendr la direccinIP pedida como resultado de la traduccin delnombre neworder.box.sk. Este paquete, parapoder circular hasta nosotros de vuelta,tambin tendr que tener sus propiascabeceras UDP, IP, y Ethernet.

    El paquete completo (con las cabeceras) derespuesta podra ser parecido a este:

    RESPUESTA DNS:IP = 66.250.131.132

    CABECERA UDP:Puerto origen = 53Puerto destino = 20

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    27/68

    PC PASO A PASO N 18 Pgina 27

    CABECERA IP:IP origen = 215.22.1.13IP destino = 217.12.1.15Protocolo = UDP

    CABECERA Ethernet:MAC origen = 548F44A5558DMAC destino = 54F566A47F88Protocolo = IP

    Os recomiendo que volvis atrs para ircomparando cada campo de la respuesta conlos campos correspondientes en la consulta.Posiblemente veris varias cosas que osparecern muy extraas. Por ejemplo, porqu la IP de destino de la respuesta no es192.168.1.2?Esto ya lo explicar cuando hablesobre el protocolo IP a lo largo del curso. Y,por qu ninguna de las dos direcciones MACtiene nada que ver con las que haba en laconsulta? Un poco de paciencia, por favor!Que ya explicar todo esto a lo largo delcurso! :-)

    2.2. FUNCIONES DE LA CAPA DETRANSPORTE UDP

    2 . 2 . 1 . I d e n t i f i c a c i n d econexiones

    Lo importante que tenemos que comprenderahora, una vez hecho este repaso al sistemade protocolos por capas UDP/IP, es que graciasal protocolo UDP se puede identificar unacomunicacin especfica entre dos mquinas,gracias a los puertos de origen y de destino.

    Esto nos permite tener varias conexionessimultneas entre dos mquinas (aunque lasdirecciones IP de cada conexin sean lasmismas, las conexiones se pueden diferenciargracias a los puertos), y tambin nos permiteacceder al mismo servicio en varias mquinasdiferentes (podemos, por ejemplo, estarviendo dos pginas Web de dos servidoresdiferentes al mismo tiempo).

    Supongo que la necesidad de especificar unpuerto de destino en cada paquete os habr

    quedado muy clara, pero quiz no tenis tanclara la necesidad de especificar tambin unpuerto de origen.

    Imaginemos que nuestro navegador realizauna consulta DNS con nuestro servidor DNS,pero casi al mismo tiempo nuestro cliente decorreo electrnico tambin est realizandootra consulta DNS al mismo servidor. Nopodemos saber de ninguna manera cul delas dos respuestas nos llegar antes.

    Por una parte, si lesteis el artculo sobre DNSde la serie RAW, sabris que el tiempo paraprocesar una consulta DNS puede variarenormemente. Por ejemplo, una traduccinque se encuentre en la cache del servidor DNSnos llegar casi al instante, mientras que otratraduccin menos afortunada podra requerirestablecer varias conexiones con variasmquinas, desde los servidores raz, y losservidores del TLD, hasta el ltimo servidorde la jerarqua DNS. Si no sabis de qu hablono os asustis, que esto no tiene nada quever con UDP, si no con DNS, y no os hace faltaconocerlo ahora. :-)

    La idea con la que os tenis que quedar esque de ninguna manera se puede asumir queal hacer dos consultas una detrs de otra, lasdos respuestas nos llegarn en el mismo orden.Por tanto, si el servidor nos enva las dosrespuestas, necesitamos de alguna manerasaber cul de las dos es la que solicit nuestronavegador, y cul es la que solicit nuestrocliente de correo electrnico. De ah lanecesidad del puerto de origen!

    Por supuesto, si lesteis el artculo sobre DNSos estaris preguntando: y qu hay de lostransaction ID? Permiten perfectamentediferenciar una consulta DNS de cualquierotra! Pues s, es cierto, pero el caso de DNSes un poco especial, ya que no es normal quelos protocolos que utilicen UDP (o TCP) parael transporte incluyan sus propiosidentificadores para cada conexin. Si se hizoas en el caso de DNS no fue por motivos deidentificar cada conexin, ya que para eso

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    28/68

    Pgina 28 PC PASO A PASO N 18

    sobraba con lo que hace UDP, si no por motivosde seguridad, como ya vimos al hablar en laserie RAW sobre los ataques porenvenenamiento de DNS.

    En la prctica, hay casos en los que el puertode origen es irrelevante, por lo que no siemprees obligatorio especificarlo. En estos casos,lo que se hace es usar el puerto 0 comoorigen.

    2.2.2. Correccin en los datos

    Imaginad que por cualquier problema en la lnea los datos llegasen corruptos hastanosotros, y uno de los nmeros que formanla IP que hemos solicitado al servidor DNSes incorrecto.

    Sera un gran problema no tener una ciertaseguridad de que los datos que nos llegan deun servidor DNS son correctos. Estaramoscada dos por tres estableciendo conexionescon direcciones IP incorrectas.

    UDP no puede garantizar que los datos lleguen,pero si que nos da cierta garanta de que, sihan llegado, son correctos. Para ello incorporaen su cabecera un dato que no hemos vistoantes (ya que estabamos vindolo slo agrandes rasgos), que nos permite comprobarque los datos son correctos, tal y comoveremos ms adelante.

    Este problema de la correccin de los datosperfectamente podra haberlo incluido en lalista de problemas de la comunicacin, perono lo hice a propsito para que saliesen justocuatro. :-P

    2.3. LO QUE NO NOS DA ELPROTOCOLO UDP FRENTE A TCP

    2 . 3 . 1 . F i a b i l i d a d e n l acomunicacin

    Aunque antes desment el mito de los enanitostelefonistas de Internet, unos enanos que sinduda si que existen en la red son los enanos

    gruones que se dedican a desconectar cablesde vez en cuando, ocasionando as la prdidade paquetes.

    No cabe duda de que ninguna tecnologa esperfecta, y por eso siempre puede haberprdidas de datos en cualquier comunicacin.Qu ocurrira, por ejemplo, si no nos llegasela respuesta del servidor DNS, a pesar de queste la hubiera enviado? Si, por cualquiermotivo, la respuesta se perdiese por el camino,no pudiendo llegar hasta nosotros, habraalguna forma de detectar y solventar estasituacin?

    Analizando el funcionamiento bsico delprotocolo UDP, tal y como lo hemos visto,no habra ninguna manera. En UDP cadamquina enva sus paquetes a la red, sin tenerninguna certeza de si llegarn o no a sudestino. Una vez que el servidor DNS envesu respuesta, se desentender del asunto, alno tener forma de saber si la respuesta nosha llegado o no.

    Este es el principal problema de los protocolosno orientados a conexin , como es el casode UDP. Como ya vimos en el artculo sobreDNS, en el caso de TCP esto es muy diferente,ya que TCP es un protocolo orientado aconexin . Por cada paquete transmitido enTCP es obligatorio que el receptor enve unacuse de recibo para que el emisor sepa concerteza que los datos han llegado al destino.Esto no es as en UDP.

    En UDP no hay manera de saber si los datosllegan al destino. Esto es una gran desventajapero, por otra parte, tiene la gran ventaja dehacer la comunicacin mucho ms fluida, alno verse interrumpida constantemente pormiles de paquetes de acuse de recibo.

    Esta caracterstica convierte a UDP en unprotocolo de transporte ideal paracomunicaciones sencillas (como DNS, o TFTP(Trivial File Transfer Protocol --- ProtocoloTrivial de Transferencia de Ficheros)), y paraenvos masivos de flujos de datos (como en

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    29/68

    PC PASO A PASO N 18 Pgina 29

    transmisiones multimedia de vdeo, audio,...), pero en un protocolo que de ningunamanera sirve para comunicaciones querequieren fiabilidad (FTP, IRC, HTTP, ...).

    Por ejemplo, ahora que menciono el IRC,imaginemos lo que sera una conversacinen un chat en el que no tuvisemos la certezade que lo que decimos vaya a llegar al restode interlocutores. Algunas frases se perderanpor el camino, y nadie podra saberlo, por loque muchas conversaciones perderan susentido y, probablemente, se convertiran endilogos de besugos (aunque, inclusoutilizando TCP hay gran cantidad de dilogosde besugos en IRC, pero eso ms que unproblema tecnolgico es un problemaintelectual).

    2.3.2. Flujo ordenado de datos

    Otro gran problema potencial de UDP es eldel desorden . En el caso de DNS parece todomuy sencillo: una consulta -> una respuesta.Pero, qu ocurrira si, por ejemplo,intentsemos hacer un chat mediante UDP?

    Internet es una red increblemente compleja,y existen muchos factores que puedendeterminar que los paquetes vayan ms omenos rpidos en cada instante. Esto puededar lugar a situaciones tan extraas comoque dos paquetes salgan uno tras otro deuna mquina, pero primero llegue al receptorel ltimo que sali. Si no hay un mecanismopara controlar el orden en que deben ir lospaquetes, en el chat veramos respuestas apreguntas an no formuladas, monlogos sinsentido, etc.

    Otros protocolos de transporte, como TCP, s que incluyen mecanismos para garantizar elcorrecto orden de los paquetes; pero no esel caso de UDP, por lo que es otro aspecto atener en cuenta a la hora de decidir si nuestraaplicacin funcionar mejor sobre unprotocolo seguro y robusto como es TCP, osobre un protocolo ms fluido comoes UDP.

    2.3.3.Tratamiento adecuado delos paquetes grandesImaginemos que enviamos una consulta deDNS a un servidor, y ste nos responde, perosu respuesta se ha perdido por el camino. Enuna situacin normal, tras pasar un tiemposin recibir la respuesta, volveramos asolicitarla, asumiendo que se perdi por elcamino. Vaya! Eso s que es genial. Acabamosde solucionar el problema de la fiabilidad enla comunicacin. O no?...

    Que ocurrira si en lugar de ser una simpleconsulta DNS nuestro paquete fuese unasolicitud a un servidor FTP para bajarnos unarchivo grande (por ejemplo una ISO de700MB?

    Si se perdiese el paquete de respuesta, elservidor tendra que volver a enviar nadamenos que 700MB! Esto, por supuesto, esuna barbaridad, y lo ideal para minimizar estetipo de problemas es dividir los paquetesdemasiado grandes en paquetes mspequeos, para que luego estos se unan enel orden adecuado al llegar al destino, yreconstruir as el paquete original. Si ha habidoalgn fallo tecnolgico en un momento dado,normalmente slo se perder alguno de lospaquetes pequeos, que podr ser reenviadosin problemas.

    UDP no incorpora ningn mecanismo parapartir los paquetes grandes, por lo que tampocoes adecuado para es ta c lase decomunicaciones. Quiz ahora os estarispreguntando por qu entonces he dicho queUDP puede ser adecuado para transmisionesmultimedia donde, sin duda, el flujo de datoses enorme.

    La cuestin fundamental aqu es que en loscontenidos multimedia no es crtica la prdidade los datos. Por ejemplo, podemos estartransmitiendo una pelcula a razn de 20fotogramas por segundo, enviando por ejemplocada fotograma en un paquete independiente.En este caso, la prdida de un nico paquete

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    30/68

    Pgina 30 PC PASO A PASO N 18

    no sera en absoluto crtica. Simplementeperderamos un fotograma, y eso seraprcticamente imperceptible para el ojohumano, y para nada afectara al espectadorde la pelcula. En cualquier caso, nunca seranecesario reenviar el paquete.

    El tema de la particin de paquetes grandeses mucho ms complejo de lo que puedeparecer en un principio ya que, entre otrascosas, no slo es misin del protocolo de nivelde transporte, pero mejor que me quedecalladito ahora, que si no os voy a liar bastante,y ya habr tiempo de ver todo eso a lo largodel curso. ;-)

    3. UDP EN DETALLEAntes de deciros cul es el RFC que detallael protocolo UDP os tengo que poner sobreaviso: podis asustaros del tamao del RFC,as que no tengis miedo, que yo har todolo posible por resumiros lo ms importante,como siempre. ;-)

    El RFC en cuestin es el RFC 768 (ftp://ftp.rfc-editor.org/in-notes/rfc768.txt ). Ejem... esto....slo dos pginas? Bueno, quiz he exagerado

    un peln con eso del tamao. 0;-)

    El RFC de UDP est sin duda escrito paragente entendida en el tema, por lo que no seandan con explicaciones, van directamenteal grano, que es la especificacin de lascabeceras UDP.

    Como ya hemos explicado los conceptos,podemos permitirnos el lujo de poner lascabeceras sin explicar nada, como hace el RFC :)

    Esta es la estructura de una cabecera UDP, esdecir, del trozo que se aade a cada paquetepara luego pasarlo al protocolo IP, el cual asu vez aadir otro trozo, que se sumartambin al trozo que luego aadir el protocoloEthernet.

    En los ejemplos anteriores veamos slo doscampos: puerto de origen, y puerto de destino.Aqu no slo vemos todos los campos, si noque adems vemos su longitud.

    Los numerajos que he puesto en la ilustracinencima de la cabecera son el nmero de bits.Es decir, el campo Puerto origen abarcadesde el bit 0 hasta el bit 15, es decir, 16 bits,que son 2 bytes. Por tanto, como 2 16 son65536 , ste es el nmero de puertos queexisten en UDP (y tambin en TCP, por cierto).

    Como vemos, el campo Puerto destino abarcadesde el bit 16 hasta el 31, que son otros 16bits.

    El campo Tamao paquete son otros 16 bits,as como el campo Suma de comprobacin .

    En el campo DATOS es donde se encuentratodo lo que ha englobado el paquete UDP. Porejemplo, en el caso de DNS, la consulta DNSestara en el campo DATOS del paquete UDP.Su tamao ahora puede ser cualquiera, yprecisamente para eso sirve el campo Tamaopaquete .

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

    NOTA DE PC PASO A PASO / HXC!

    Para los que nunca nos han leido, decir que RFC ( R equestFor Comments) son una serie de ms de 3000 documentosdonde se detalla todo lo relacionado con la tecnologa deInternet.

    Para los ALERGICOS al ingls, tienes al final de esteartculo el RFC en perfecto castellano ;)

  • 8/14/2019 Haxcra18

    31/68

    PC PASO A PASO N 18 Pgina 31

    Lo he llamado Tamao paquete porque esun nombre ms claro, pero su nombre originales Length (por si leis algo sobre el tema yos lais). Este campo indica el nmero debytes que ocupa todo el paquete UDP,incluyendo la cabecera. Al ser la cabecera deun tamao fijo de 64 bits, es decir, 8 bytes,el campo Length ser siempre como mnimo8 (sera el caso de un paquete que no contengadatos).

    Con respecto al campo Suma decomprobacin (checksum en el original)hay bastante ms que decir. ste es el campoque nos permite comprobar que los datosque hemos recibido son correctos, es decir,que el paquete no ha tenido problemas quehayan corrompido los datos durante sutransporte. Para calcular la Suma decomprobacin se genera una cabecera conlos siguientes campos:

    Todos estos campos los conocemos, exceptoel campo Protocolo . Cada protocolo existentetiene un nmero nico asignado que lediferencia de los dems protocolos, y estopermite por ejemplo, propagar la informacinsobre a qu protocolo hay que pasar unpaquete despus de procesarlo, tal y comohemos visto en el ejemplo al principio de esteartculo, en el cual la cabecera IP contenaun campo Protocolo = UDP , y la cabeceraEthernet contena un campo Protocolo = IP .

    Esta lista est mantenida por el IANA(Internet Assigned Numbers Authority), as que podis consultarla en www.iana.org. Siqueris una lista ms sencilla, aunque noactualizada, la tenis en el RFC 1700(http://www.rfc-editor.org/rfc/rfc1700.txt ).

    Si habis echado un vistazo a la lista, habrisvisto que el protocolo UDP tiene asignado elnmero 17 . Por tanto, en la cabecera queestamos tratando ahora habra que poner un17 en el campo Protocolo.

    Con todos estos campos se realiza unaoperacin de aritmtica binaria, que es lasuma en complemento a uno de 16 bits detoda la cabecera. No voy a entrar en detallesde cmo se realiza esta operacin, as que sitenis curiosidad podis consultar el RFC1071 o, si lo prefers, tenis aqu directamenteun cdigo en C que calcula la suma decomprobacin (checksum) para el protocoloTCP:http://www.netfor2.com/tcpsum.htm .

    Si queris utilizar este cdigo para el caso deUDP slo tenis que cambiar esta lnea:

    u16 prot_tcp=6;

    Por esta otra:

    u16 prot_tcp=17;

    Aunque, si queris que quede un poco ms

    bonito, preocupaos de cambiar tambin elnombre de la variable para que se llameprot_udp . ;-)

    Cuando recibimos un paquete UDP, nuestrosistema compara la suma de comprobacincon los datos que conoce sobre el paquete (IPde origen, IP de destino, y tamao de paqueteUDP), y si algo no concuerda sabr que hahabido algn problema y los datos del paqueteno son vlidos.

    Un detalle curioso con respecto al complementoa uno (la forma de representacin binariautilizada en la suma de comprobacin) es queexisten dos formas de representar el cero: obien que todos los dgitos sean 1, o bien quetodos sean 0.

    Esto nos es til en nuestro caso, ya que loque se hace es usar la primera representacindel cero (todos los dgitos son 1) para las

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    32/68

    sumas cuyo resultado son cero, y la otrarepresentacin del cero (todos los dgitos son0) indica simplemente que ese paquete noincluye una suma de comprobacin, por elmotivo que sea (por ejemplo, si el protocolono requiere una comprobacin de los datos).

    4. UDP EN LA PRCTICA

    Aqu voy a presentar algunas herramientasque nos pueden ser tiles a lo largo de todoel curso de TCP/IP. Intentar no discriminara nadie, explicando herramientas tanto paraWindows como para Linux.

    Concretamente, las herramientas que vamos

    a utilizar nos permiten construir paquetesdesde cero para varios protocolos diferentes(en este caso, el que nos interesa es UDP).

    Para que estos programas funcionen, nuestrosistema tiene que permitir el uso de rawsockets , es decir, de paquetes generadosdesde cero. Linux siempre ha permitido losraw sockets, y Windows slo lo hace desdesus versiones XP y 2000. Si an queda algnusuario de Windows 9x (95, 98, o Millenium),que tampoco se preocupe, ya que puedeutilizar las libreras WinPCap para que susistema admita raw sockets. Estas libreraslas tenis en: http://winpcap.polito.it/ .

    De todas maneras, nosotros vamos a utilizarpara nuestras prcticas en Windows unprogramita llamado Nemesis. Esta aplicacinnecesitar las libreras WinPCap incluso sitienes un Windows XP y 2000 tranquilos,ahora veremos detalladamente todo esto :)

    4.1. NEMESIS PARA WINDOWS

    (TODAS LAS VERSIONES)En primer lugar vamos con los usuarios deWindows, no porque sean ms importantes,si no porque ya he empezado hablando deellos antes. :-P

    Lo primero que tenemos que hacer es bajarnoslas libreras WinPCap . Para ello abriremosnuestro navegador preferido e iremos a

    http://winpcap.polito.it/ , pincharemos enDOWNLOADS (en el men de la izquierda) yaparecer una lista descargas. Tenemos quedescargarnos el WINPCAP 3.0

    No cometas el error de bajarte la ltima versin(WINPCAP 3.1 BETA), hemos podido comprobarque no funciona correctamente en bastantesde nuestros equipos, incluso conconfiguraciones muy normalitas . As que yasabes, descarga la versin 3.0 tal y como teindicamos :)

    Una vez descargado el archivo mencionado(WinPcap_3_0.exe) lo ejecutaremos para quese instale en el sistema. Si te pide reiniciarWindows, hazle caso :)

    A continuacin, ya podemos bajar el Nemesis ,que lo tenis aqu:

    http://www.packetfactory.net/Projects/nemesis/ (Por supuesto, bajad la versin paraWindows).

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

    Pgina 32 PC PASO A PASO N 18

  • 8/14/2019 Haxcra18

    33/68

    PC PASO A PASO N 18 Pgina 33

    Obtendremos el archivo comprimido nemesis-1.4beta3.zip y lo descomprimiremos en lacarpeta c:\nemesis. Este programa no necesitainstalarse, ahora veremos cmoutilizarlo ;)

    Podemos pasar ya a la accin. Si vais aldirectorio (carpeta) sobre donde habisdescomprimido el Nemesis (en nuestro casoc:\nemesis), veris que hay una serie dearchivos TXT, uno de los cuales se llamanemesis-udp.txt . En ese archivo tenisinstrucciones para utilizar Nemesis con UDP,que es lo que nos interesa ahora.Enseguida descubriris que Nemesis es unaaplicacin ms prctica que esttica, ya queno tiene interfaz grfica, si no que funcionadesde la consola MS-DOS.

    Vamos a ver un primer ejemplo de uso deNemesis:

    Primero abrimos una consola de MS-DOS(una de nuestras habituales ventanitasnegras ). Cmo se hace eso? Ya lo hemosexplicado mil veces, tienes dos opciones:

    Menu Inicio --> Todos los Programas

    --> Accesorios --> Smbolo del sistema

    Menu Inicio --> Ejecutar y en laventana que nos aparezca escribimoscommand y pulsamos enter

    Ahora, utilizando nuestra consola de MS-DOSvamos al directorio donde hemos tenemosen Nemesis esperndonos. Para el que nosepa hacer eso (que a estas alturas de lapublicacin ya deberan ser MUY POCOS):

    En nuestra ventanita negra escribimoscd c:\ y pulsamos enter (con esto nosvamos al directorio raz del disco duroC).

    En nuestra ventanita negraescribiremos cd c:\nemesis ypulsaremos enter (con esto nosposicionamos en el directorio dondetenemos nuestro Nemesis).

    Escribimos dir y pulsamos enter. Conello veremos un listado del contenidode la carpeta Nemesis, veremos, entreotros el archivo nemesis.exe (nuestropreciado Nemesis ;))

    Por fin, escribimos:

    nemesis udp v y 53 D 194.224.52.6 P

    y pulsamos enter, nos aparecer algo comoesto:

    UDP Packet Injection -=- The NEMESISProject Version 1.4beta3 (Build 22)

    [IP] 68.253.120.0 > 194.224.52.6[IP ID] 64988[IP Proto] UDP (17)[IP TTL] 255[IP TOS] 00[IP Frag offset] 0000[IP Frag flags]

    [UDP Ports] 64988 > 53

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    34/68

    Pgina 34 PC PASO A PASO N 18

    A continuacin, escribimos cualquier cosa:

    holaWrote 33 byte UDP packet.

    UDP Packet Injected

    Vamos a analizar lo que hemos hecho.

    En primer lugar, al llamar a Nemesis con laopcin udp en primer lugar ( nemesis udp )le decimos que queremos enviar un paqueteUDP, de entre todos los protocolos quesoporta Nemesis.

    La opcin v es la clsica opcin verbose demuchos programas, que nos permite ver enpantalla informacin detallada sobre lo queestamos haciendo.

    La opcin y sirve para detallar el puertoUDP de destino . En este caso, hemosutilizado el conocido puerto 53, que es elpuerto de DNS.

    La opcin D sirve para especificar ladireccin IP de destino . En este caso,hemos utilizado la direccin de un servidorDNS de Telefnica.

    Por ltimo, la opcin P sirve para indicarqu datos queremos meter en el campoDATOS del paquete UDP. Por ejemplo, eneste caso, debera ir aqu la supuesta consultaDNS. En el caso de este ejemplo, poniendo

    P indicamos a la aplicacin que queremosmeter nosotros los datos directamente desdeteclado.

    Analicemos ahora el comportamiento deNemesis. En primer lugar, vemos que hautilizado como IP de origen una que no es lanuestra, por lo que la respuesta a este paquetedifcilmente podra llegarnos a nosotros. Esms, es tambin improbable que el paquetellegue siquiera a su destino, ya que los routersque habr en los primeros pasos del camino(por ejemplo, nuestro router ADSL, o el routerde nuestro ISP) probablemente rechazarnel paquete al no provenir supuestamente de

    una de las mquinas a las que tienen que darservicio.

    Y cual puede ser la utilidad de utilizar una IP

    que no es la tuya? Pues ya hablaremos sobretodo eso a lo largo del curso, pero os adelantoque esto puede servir para llevar a cabo grannmero de ataques.

    En nuestro caso no queremos atacar a nadie,simplemente queremos comprender de formaprctica el funcionamiento del protocolo UDP.Por lo tanto preferimos utilizar nuestra IPcomo IP de origen:

    nemesis udp v y 53 S 192.168.1.2 D194.224.52.6 P

    Hemos aadido la opcin S para especificarla IP de origen . Si estamos detrs de unrouter, tendremos que especificar nuestra IPprivada (de nuestra red local), ya que el routerya se encargar de convertirla luego en vuestraIP pblica.

    Si seguimos observando el comportamientode Nemesis, veremos que ha escogido unpuerto aleatorio como puerto de origen .Para la mayora de las aplicaciones esto nosvaldr, pero si queremos probar a especificarun puerto de origen en concreto utilizaremosla opcin x:

    nemesis udp v x 1000 y 53 S192.168.1.2 D 194.224.52.6 P

    Esto puede sernos til si estamos detrs deun firewall muy exigente que slo nos permitautilizar algunos puertos UDP determinados(en el caso del ejemplo, el puerto 1000).

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

    Ya se explico...!

    Ya se ha explicado mil veces, pero bueno para saber cul es tu IP, simplemente abre una "ventanita negra",

    escribe ipconfig /all y pulsa enter. Este tema ya se traten profundidad en los primeros nmeros de Hack x Crack.

  • 8/14/2019 Haxcra18

    35/68

    PC PASO A PASO N 18 Pgina 35

    Por ltimo, os habris dado cuenta de que noes nada prctico meter los datos directamentedesde teclado, ya que es bastante complicadogenerar una consulta DNS a pelo e introducirladesde el teclado. En la mayora de los casos,os ser mucho ms til construir primero laconsulta con algn editor hexadecimal (porejemplo, podis utilizar UltraEdit, que ademsde ser un magnfico editor y visor de textos,es tambin un editor hexadecimal bsico),guardarla en un fichero , y luego cargarladirectamente en Nemesis con la opcin P.Por ejemplo, si nuestro fichero se llamaconsulta.txt haremos:

    nemesis udp v x 1000 y 53 S

    192.168.1.2 D 194.224.52.6 Pconsulta.txt

    Podemos, por ejemplo, capturar una consultaDNS real con un sniffer, despus modificarlaa nuestra voluntad con el editor hexadecimal,guardar la consulta modificada en un archivo,y despus enviarla a travs de Nemesis.

    En el artculo de la Serie RAW sobre DNSh a b l a c e r c a d e l a t c n i c a d eenvenenamiento de cache DNS . Con

    Nemesis, y un sencillo shell script podramosexplotar esta tcnica una vez conseguidos losdatos necesarios. Si no habis ledo el artculosobre DNS, os recomiendo que pasis estepunto, porque probablemente no os enterarisde nada. :-)

    Si, por ejemplo, tenemos estos datos parallevar a cabo el ataque:

    Direccin IP del servidor DNS de lavctima = 194.224.52.6

    Direccin IP del servidor DNSauthoritative que queremos suplantar =194.220.51.2

    Puerto UDP utilizado por el servidorDNS de la vctima = 1200

    Suponemos, por supuesto, que conocemostambin el identificador de transaccin, y quecon l hemos construido una respuesta DNS

    falsa que tenemos almacenada en el archivoenvenenamiento.txt . La forma de lanzaresta respuesta falsa sera:

    nemesis udp x 53 y 1200 S194.220.51.2 D 194.224.52.6 Penvenenamiento.txt

    Podemos automatizar esto mediante un scriptque haga un bucle en el cual vaya utilizandodistintos Transaction ID y, tal y como vimosen el artculo sobre DNS, segn la versin deBIND que utilice el servidor DNS de la vctimatendremos una mayor o menor probabilidadde xito.

    4.2. HPING PARA LINUXExiste tambin versin de Nemesis para Linux,pero os ensear mejor una herramientabastante ms potente, que es Hping . Podisbajar Hping de www.hping.org. Para instalarlotendris que compilarlo primero. Los pasos aseguir son los tpicos:

    Primero, una vez bajado el archivo conextensin .tar.gz , lo descomprimimos ydesempaquetamos con el comando:ta r -zxvf hp ing2 .0 .0 - rc2 . t a r.gz

    Nos crear un directorio hping2-rc2 , en elcual entraremos ( cd hping2-rc2 ), paradespus ejecutar:./configure

    A continuacin, ejecutamos:Make

    Y, por ltimo:make install

    En caso de cualquier problema con este sistemaestndar de instalacin, podis consultar elarchivo INSTALL con instrucciones msdetalladas sobre el proceso.

    Una vez instalado, vamos a probar un pocosu funcionamiento. Por supuesto, tendris lacorrespondiente pgina del manual de hping:

    man hping2Hping no slo permite enviar un nico paquete,

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    36/68

    Pgina 36 PC PASO A PASO N 18

    si no que adems implementa sencillos buclespara poder generar muchos paquetes sinnecesidad de programar scripts. Si queremosque enve un nico paquete tendremos queusar la opcin --count 1 . Aunque mejor queveamos directamente un ejemplo:

    hping2 193.224.52.6 --udp --destport 53--file envenenamiento.dat --data 14 --count 1

    El primer parmetro ( 193.224.52.6 ), comopodis imaginar, es la IP de destino delpaquete, y es el nico parmetro obligatorio.

    El parmetro --count ya hemos dicho que

    indica el nmero de paquetes a enviar.Segn las opciones estos paquetes podrnser diferentes entre s, por ejemplo,incrementando el puerto de origen en cadapaquete. Si queris ms detalle sobre estasopciones consultad la pgina del manual. Pordefecto, el puerto de origen se incrementacon cada paquete, as que si queremos utilizarsiempre el mismo puerto utilizaremos laopcin --keep .

    El parmetro --udp , por supuesto, indica que

    el protocolo a utilizar ser UDP.

    El parmetro --destport es el puerto dedestino del paquete.

    El parmetro --file es el fichero en el quetenemos el campo DATOS del paquete, esdecir, por ejemplo la consulta DNS, o larespuesta falsa para el caso de que estemoshaciendo un ataque de envenenamiento decache DNS.

    El parmetro --data es el tamao de losdatos sin la cabecera, es decir, en este casosera igual al campo Tamao paquete de lacabecera UDP, pero restndole 8 bytes , queson los que ocupa la cabecera UDP.

    Si quisisemos especificar un puerto deorigen usaramos el parmetro --baseport .Si no se especifica, el puerto de origen seraleatorio.

    Una opcin curiosa de hping es la opcin --badcksumque genera una suma de comprobacin invlida en elpaquete enviado, lo cual puede ser til para comprobar lareaccin de un sistema ante un paquete malformado.

    A lo largo del curso, entraremos en ms detalle en elfuncionamiento de stas y otras herramientas. Por elmomento, os animo a que vayis investigando por vuestracuenta.

    Autor: PyC (LCo)

    RFC 768 J. Postel

    ISI

    28 de Agosto de 1980

    PROTOCOLO DE DATAGRAMAS DE USUARIO

    (User Datagram Protocol)

    (Traduccin al castellano: Diciembre de 1999)

    (Por Domingo Snchez Ruiz )

    Introduccin

    Este Protocolo de Datagramas de Usuario (UDP:

    User Datagram Protocol)se define con la

    intencin de hacer disponible un tipo de

    datagramas para la comunicacin por intercambio

    de paquetes entre ordenadores en el entorno

    de un conjunto interconectado de redes de

    computadoras.

    Este protocolo asume que el Protocolo de

    Internet (IP: Internet protocol) [1] se

    utiliza como protocolo subyacente.

    Este protocolo aporta un procedimiento para

    que los programas de aplicacin puedan enviar

    mensajes a otros programas con un mnimo de

    mecanismo de protocolo. El protocolo se

    orienta a transacciones, y tanto la entrega

    como la proteccin ante duplicados no se

    garantizan.

    Las aplicaciones que requieran de una entrega

    fiable y ordenada de secuencias de datos

    deberan utilizar el Protocolo de Control de

    Transmisin (TCP: Transmission Control

    Protocol). [2]

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    37/68

    PC PASO A PASO N 18 Pgina 37

    Formato

    0 7 8 15 16 23 24 31

    +--------+--------+--------+--------+

    | Puerto de | Puerto de |

    | Origen | Destino |

    +--------+--------+--------+--------+

    | | |

    | Longitud | Suma de Control |

    +--------+--------+--------+--------+

    |

    | octetos de datos ...

    +---------------- ...

    Formato de la Cabecera de un Datagrama de Usuario

    Campos

    El campo Puerto de Origen es opcional; cuando

    tiene sentido, indica el puerto del proceso

    emisor, y puede que se asuma que se sea el

    puerto al cual la respuesta debera ser

    dirigida en ausencia de otra informacin. Si

    no se utiliza, se inserta un valor cero.

    El campo Puerto de Destino tiene significado

    dentro del contexto de una direccin de

    destino en un entorno internet particular.

    El campo Longitud representa la longitud en

    octetos de este datagrama de usuario, incluyendo

    la cabecera y los datos. (Esto implica que

    el valor mnimo del campo Longitud es ocho.)

    El campo Suma de Control (Checksum) es el

    complemento a uno de 16 bits de la suma de

    los complementos a uno de las palabras de la

    combinacin de una pseudo-cabecera construida

    con informacin de la cabecera IP, la cabecera

    UDP y los datos, y rellenada con octetos de

    valor cero en la parte final (si es necesario)

    hasta tener un mltiplo de dos octetos.

    La pseudo-cabecera que imaginariamente antecede

    a la cabecera UDP contiene la direccin de

    origen, la direccin de destino, el protocolo

    y la longitud UDP. Esta informacin proporciona

    proteccin frente a datagramas mal encaminados.

    Este procedimiento de comprobacin es el

    mismo que el utilizado en TCP.

    0 7 8 15 16 23 24 31

    +--------+--------+--------+--------+

    | direccin de origen |

    +--------+--------+--------+--------+

    | direccin de destino |

    +--------+--------+--------+--------+

    | cero |protocol| longitud UDP |

    +--------+--------+--------+--------+

    Si la suma de control calculada es cero, se

    transmite como un campo de unos (el equivalente

    en la aritmtica del complemento a uno). Un

    valor de la suma de control trasmitido como

    un campo de ceros significa que el emisor

    no gener la suma de control (para depuracin

    o para protocolos de ms alto nivel a los

    que este campo les sea indiferente).

    Interfaz de Usuario

    Un interfaz de usuario debera permitir:

    la creacin de nuevos puertos de recepcin,

    operaciones de recepcin en los puertos de

    recepcin que devuelvan los octetos de datos

    y una indicacin del puerto de origen y de

    la direccin de origen, y una operacin que

    permita enviar un datagrama, especificando

    los datos y los puertos de origen y de destino

    y las direcciones a las que se debe enviar.

    Interfaz IP

    El mdulo UDP debe ser capaz de determinar

    las direcciones de origen y destino en un

    entorno internet as como el campo de protocolo

    de la cabecera del protocolo internet. Una

    posible interfaz UDP/IP devolvera el datagrama

    de internet completo, incluyendo toda la

    cabecera, en respuesta a una operacin de

    recepcin. Un interfaz de este tipo permitira

    tambin al mdulo UDP pasar un datagrama

    deinternet completo con cabecera al mdulo

    IP para ser enviado. IP verificara ciertos

    campos por consistencia y calculara la suma

    de control de la cabecera del protocolo

    internet.

    Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP

  • 8/14/2019 Haxcra18

    38/68

    Pgina 38 PC PASO A PASO N 18

    Aplicacin del Protocolo

    Los usos principales de este protocolo son

    el Servidor de Nombres de Internet [3] y la

    Transferencia Trivial de Ficheros (Trivial

    File Transfer) [4].

    Nmero del protocolo

    Este es el protocolo 17 (21 en octal) cuando

    se utilice en el Protocolo de Internet (IP).

    Se indican otros nmeros de protocolo en [5].

    Referencias

    [1] Postel, J., "Internet Protocol," RFC

    760, USC/Information Sciences Institute, Enero de

    1980. (Nota del T. Hay traduccin al espaol por

    P.J. Ponce de Len: "Protocolo Internet", Mayo

    1999.)

    [2] Postel, J., "Transmission Control

    Protocol," RFC 761, USC/Information

    Sciences Institute, Enero de 1980.

    [3] Postel, J., "Internet Name Server,"

    USC/Information Sciences Institute, IEN

    116, Agosto de 1979.

    [4] Sollins, K., "The TFTP Protocol,"

    Massachusetts Institute of Technology,

    IEN 133, Enero de 1980.

    [5] Postel, J., "Assigned Numbers,"

    USC/Information Sciences Institute, RFC

    762, Enero de 1980.

    Nota del traductor

    Este documento y las traducciones al espaol

    mencionadas en las referencias pueden

    encontrarse en:

    http://lucas.hispalinux.es/htmls/estandare

    s.html

    El proyecto de traduccin de RFC al espaol

    tiene su web de desarrollo en:

    http://www.arrakis.es/~pjleon/rfc-es

    PERSONALIZA TU MOVILPERSONALIZA TU MOVILPERSO