{"id":237,"date":"2026-03-04T00:22:32","date_gmt":"2026-03-04T00:22:32","guid":{"rendered":"https:\/\/hackcuba.net\/?p=237"},"modified":"2026-03-04T00:22:32","modified_gmt":"2026-03-04T00:22:32","slug":"el-cd-por-fuera","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=237","title":{"rendered":"El CD por fuera"},"content":{"rendered":"\n<p>Se habla mucho de la estructura f\u00edsica de los Discos Compactos (o CD por sus siglas en ingl\u00e9s), pero poco se menciona la manera l\u00f3gica en que se distribuye la informaci\u00f3n. En este trabajo pretendo introducir el tema, apoy\u00e1ndome en el sistema de ficheros m\u00e1s usado y extendido para trabajar con CD, el ISO 9660.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>La informaci\u00f3n en un medio de almacenamiento es contralada y organizada por el Sistema de Ficheros (FS por sus siglas en ingl\u00e9s). Los m\u00e1s conocidos por todos son: <code>FAT<\/code> en todas sus variantes, <code>NTFS<\/code>, <code>Ext 2<\/code>, <code>Ext 3<\/code> y <code>HFS<\/code> para Mac. Los CD se almacenan con la particularidad de que no se efectuar\u00e1n futuras modificaciones en los datos, se quema el disco y no se guardan archivos nuevos o se modifican los existentes. En todo caso, el disco tendr\u00e1 que ser quemado nuevamente pero ya ser\u00eda otro sistema el que contiene. En otras palabras: los CD son READ-ONLY.<\/p>\n\n\n\n<p>En 1986, las autoridades de normalizaci\u00f3n americanas ISO estandarizaron la propuesta de un sistema anterior, y publicaron la norma ISO 9660 (a partir de ahora solo ISO), que describe un FS para los CD. Este sistema de ficheros se dise\u00f1\u00f3 para que fuera com\u00fan a los ordenadores basados en plataformas MS-DOS, Microsoft Windows, Mac OS y UNIX.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Estructura<\/h2>\n\n\n\n<p>Un sistema de ficheros ISO divide el CD en Bloques L\u00f3gicos. Aunque el tama\u00f1o de los mismos puede variar, podemos asumir sin preocupaciones que un bloque l\u00f3gico siempre constar\u00e1 de 2048 bytes (2Kb).<\/p>\n\n\n\n<p>En los primeros 15 bloques puede aparecer informaci\u00f3n que nada tiene que ver con el est\u00e1ndar ISO, es usada por el Sistema Operativo(OS por sus siglas en ingl\u00e9s tambi\u00e9n, qu\u00e9 remedio) para sus propios fines. No olvidar que ISO especifica una estructura del disco para lograr compatibilidad entre diferentes SO, no es un programa o una implementaci\u00f3n, es un patr\u00f3n o modelo que debe cumplir la informaci\u00f3n del CD.<\/p>\n\n\n\n<p>En el bloque 16 comienza una sucesi\u00f3n de Descriptores de Volumen que ayudan a describir la informaci\u00f3n y forma de trabajar con el disco. Cada Descriptor utiliza 2 Kb(un bloque de hecho), y se ubican uno detr\u00e1s de otro. A continuaci\u00f3n referimos la estructura general de un Descriptor, sus campos comunes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"535\" height=\"97\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660008.png\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660008.png 535w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660008-300x54.png 300w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/figure>\n\n\n\n<p>El primer byte determina que tipo de Descriptor es, entre los posibles:<br>0: <em>Boot Record<\/em>.<br>1: <em>Primary Volume Descriptor (PVD)<\/em>. Debe aparecer al menos una vez en la secuencia. El mismo se describir\u00e1 detalladamente m\u00e1s adelante, por ser el m\u00e1s importante de todos.<br>2: <em>Supplementary Volume Descriptor<\/em>.<br>3: <em>Volume Partition Descriptor<\/em>.<br>4-254: son valores reservados.<br>255: Volume Descriptor Set Terminator. El Volume Descriptor Set Terminator (255) determina el fin de la secuencia de Descriptores.<\/p>\n\n\n\n<p>EL PVD se encarga entre otras cosas de brindar el nombre del disco (31 caracteres a lo sumo, traten de quemar un disco con un nombre mayor), la cantidad de bloques que contiene el disco (recuerden que son de 2KB), para qu\u00e9 sirven los primeros 15 bloques del disco (si sirven para algo), ubicaci\u00f3n del directorio ra\u00edz del disco (sin duda lo m\u00e1s importante), as\u00ed como la ubicaci\u00f3n y tama\u00f1o de la tabla de caminos. La tabla de caminos o <em>Path Table<\/em> se ver\u00e1 m\u00e1s adelante.<\/p>\n\n\n\n<p>Toda carpeta y archivo del CD tiene una estructura llamada Directory Record, la misma es variable, no tiene tama\u00f1o fijo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"549\" height=\"260\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660009.png\" alt=\"\" class=\"wp-image-240\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660009.png 549w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660009-300x142.png 300w\" sizes=\"auto, (max-width: 549px) 100vw, 549px\" \/><\/figure>\n\n\n\n<p>El campo Location of Extent representa la ubicaci\u00f3n de la informaci\u00f3n del Record (no es m\u00e1s que el contenido del fichero o directorio en cuesti\u00f3n). Si el bit 1 es 0 entonces extend est\u00e1 la informaci\u00f3n del archivo, desde esa posici\u00f3n hasta los <em>n<\/em> bloques que especif\u00edca el campo Data Length. En caso contrario es una secuencia de Directory Records hasta que especifique el Data Lentgth tambi\u00e9n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La tabla de Caminos<\/h2>\n\n\n\n<p>La tabla de caminos brinda al Sistema Operativo (SO) acceso r\u00e1pido a cada directorio en el disco, evit\u00e1ndole tener que recorrer cada directorio para llegar al archivo buscado. Por cada directorio distinto al ra\u00edz, la TC contiene un registro que lo describe.<\/p>\n\n\n\n<p>Es mucho m\u00e1s r\u00e1pido buscar en memoria la direcci\u00f3n en disco de \/juegos\/starcraft\/victorias\/, que ir a root, buscar su extent, luego localizar juegos, su extent, localizar starcraft,\u2026<\/p>\n\n\n\n<p>La mayor\u00eda de los SO hacen una copia de toda la Tabla de Caminos en memoria, para evitar continuadas lecturas a disco. Por esa raz\u00f3n en el PVD est\u00e1 la direcci\u00f3n de la misma y su tama\u00f1o para que sea reservado por el SO.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Restricciones<\/h2>\n\n\n\n<p>En cuanto al Nombre:<br>\u2022 Nivel 1: Los nombres de archivos cumplen el formato 8.3 de MS-DOS. La profundidad m\u00e1xima de los directorios es 8.<br>\u2022 Nivel 2: Los nombres de archivos pueden llegar hasta 31 caracteres.<br>\u2022 Nivel 3: Archivos pueden ser fragmentados (para permitir la escritura por paquetes o grabaci\u00f3n incremental.<\/p>\n\n\n\n<p>Otras restricciones:<br>\u2022 Todos los niveles restringen a los nombres ha ser representados por caracteres en may\u00fasculas, n\u00fameros, underscores (_) y puntos. Linux convierte may\u00fasculas a min\u00fasculas mientras monta sistemas de archivos ISO.<br>\u2022 Los nombres de archivos no pueden empezar o terminar con un punto.<br>\u2022 Los nombres de archivos no pueden tener m\u00e1s de un punto.<br>\u2022 Los directorios no pueden usar ning\u00fan punto.<\/p>\n\n\n\n<p>En cuanto al l\u00edmite de profundidad de los directorios:<br>Las restricciones en la longitud de los nombres y la profundidad de los directorios (hasta 8 niveles incluyendo el directorio ra\u00edz), han sido las m\u00e1s serias limitaciones de este sistema de archivos.<\/p>\n\n\n\n<p>En cuanto al l\u00edmite de memoria:<br>Normalmente, un archivo en un disco formateado con ISO no puede ser superior en tama\u00f1o a 231-1. La causa es que su tama\u00f1o se guarda en un campo de 32 bit, para el cual 231 -1 es el valor m\u00e1ximo.<\/p>\n\n\n\n<p>En cuanto al limite de numero de directorios:<br>Existe otra, menos conocida limitante: recordemos la estructura con que ISO cuenta llamada \u201ctabla de direcciones\u201d o \u201cpath table\u201d. Por cada archivo la tabla brinda un identificador de su directorio padre. El problema llega cuando nos enteramos que el identificador es de 16-bit, lo que restringe a 65 535 el numero de carpetas. Algunos SO como Windows usan esta estrategia, y otros como Linux no. Si un disco ISO consiste en mas de 65 535 carpetas, ser\u00e1 le\u00eddo en Linux pero en un ambiente Windows todos los ficheros de los directorios adicionales ser\u00e1n visibles, pero vacios (longitud cero).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones<\/h2>\n\n\n\n<p>Existen extensiones a ISO como Joliet(Windows) y Rock Ridge(UNIX) para quitarnos estas restricciones de arriba, y hacer m\u00e1s potables los CD. Espero que ahora cuando quieran quemar un disco en Nero sepan de que va lo de ISO+Joliet, o los niveles en el tama\u00f1o de nombres. Un disco con Joliet es posible trabajarlo desde Linux, pero uno de Rock Ridge no estoy seguro de que sea compatible con Windows.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"632\" height=\"371\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660010.png\" alt=\"\" class=\"wp-image-241\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660010.png 632w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660010-300x176.png 300w\" sizes=\"auto, (max-width: 632px) 100vw, 632px\" \/><\/figure>\n\n\n\n<p>A modo de curiosidad, el formato UDF es un sistema de archivos con est\u00e1ndar ISO 9660 que utiliza las grabadoras de CD\/DVD como un dispositivo de almacenamiento l\u00f3gico (como los discos duros), este formato permite leer, escribir o modificar los archivos contenidos en discos CD\/DVD re escribibles (RW) del mismo modo que se hace en el disco duro, memorias USB o disquete; igual permite la caracter\u00edstica de arrastrar y soltar; estas propiedades solo se pueden usar en las grabadoras de CD\/DVD no en las lectoras. El \u00fanico inconveniente es que no aprovecha todo el disco, uno de 700mb te los deja en 550.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Escrito por Krio<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se habla mucho de la estructura f\u00edsica de los Discos Compactos (o CD por sus siglas en ingl\u00e9s),<\/p>\n","protected":false},"author":2,"featured_media":238,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[96,38],"class_list":["post-237","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyecto-blackhat","tag-cd","tag-proyecto-blackhat"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=237"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions"}],"predecessor-version":[{"id":242,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions\/242"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/238"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}