Archivos con idéntico nombre en el mismo directorio

Existen muchas razones para querer montar un disquete actualmente en un sistema GNU/Linux o en cualquier otro. Algunas son tontas y otras quizás no tanto. Por ejemplo para saltarte lo que te de la gana en disquetes de juegos, es decir, podemos clonarnos los discos y cambiar lo que queramos del contenido de estos si sabemos localizar los archivos. Digamos que podemos por ejemplo obtener más vidas en un juego y guardar el disco con más vidas iniciales, saltarnos sistemas de validación, etc… Lo cual nos permite luego ofrecer juegos modificados por nosotros mismos.

Lo importante no es la razón por la que queramos o necesitemos acceder a información almacenada en disquetes. Lo importante es aprender como hacerlo y al mismo tiempo ver como funcionaban esos sistemas de ficheros que solían emplearse.

Para poder hacerlo hemos de tener una disquetera. Es posible adquirir disqueteras USB en la actualidad (En mercados de segunda mano tiradas de precio).

Los disquetes podríamos catalogarlos como Disquettes de 8 pulgadas, 5.25, y 3.5.

Y para leerlos se necesita un hardware como por ejemplo estos:

El tipo de disquetera que dispongo es como la de la derecha pero USB. El tipo de disquette que vamos a ver como montar es como el de la derecha de la primera foto: de 3.5.

Y bueno aunque son cuadrados aparentemente en su interior tienen forma de disco:

Las nuevas generaciones que no han sufrido el uso de disquettes identifican la forma por el icono de guardar que suele emplearse en los programas. Eso es herencia de cuando el software permitia guardar a disco algo y tenias que insertar físicamente el disco antes de darle a guardar.

Digamos que cargabas con una misma disquetera por un lado el software para por ejemplo ejecutar un procesador de textos y luego podías cambiar de discos ya que el procesador de textos estaba cargado ya en la memoria RAM. El icono por tanto se mantiene en la actualidad aunque ahora digamos que es transparente para el usuario. Simplemente le dan a guardar, le dicen donde y eso normalmente es el disco duro.

Muchos programas y juegos al no caber en un solo disquete te pedían durante el juego que insertases el disquete 5 por ejemplo. Procesadores de textos también para por ejemplo acceder a disquetes de tipografías, disquetes de idiomas, disquetes de …

En Amiga si solamente contabas con la disquetera pues no te quedaba otra. Con el tiempo se popularizó tener un disco duro y ya los programas no precisaban de tan engorrosa tarea de ir metiendo discos cada 2 por 3.

Pero vamos a centrarnos en DOS (Disk operating system). El sistema operativo que Micro$oft compró y popularizó.

Este sistema operativo inicialmente estaba diseñado para trabajar con disquetes. Metias el disquete de arranque del sistema y luego pues ya con las herramientas básicas podías ir cargando otros programas que tenias en otros disquetes.

Actualmente si disponemos de una disquetera podemos hacernos copias de los disquetes enteros y por tanto trabajar sobre un archivo imagen para ver como funciona y funcionaba el sistema de archivo FAT.

Con el comando lsusb (si nuestra disquetera es usb) veremos que se detecta el cacharro (o tendría que hacerlo):

En mi caso una disquetera SONY (Floppy disk drive, la unidad de disquetes).

La desenchufamos y nos vamos al directorio /dev

$ cd /dev

Vamos a hacer “ls -1 | wc -l” sin la disquetera enchufada y luego con la disquetera enchufada:

Vemos que al realizar un ls -1 (para que el listado de archivos de /dev esté en una columna) y luego pasarle a wc como entrada el resultado nos dirá que son x lineas. Vemos que al enchufar la disquetera son 3 más.

Veamos que 3 más son haciendo el mismo proceso de desenchufarla y luego enchufarla:

De los 3 arhivos que salen listados vamos a probar a montarlos de uno en uno hasta dar con el que se monte bien usando “mount” y creando con “mkdir /tmp/disquetera” un directorio en el que se montará el contenido del disquete:

Como podemos ver de esos 3 que salían el dispositivo a montar es /dev/sda en nuestro caso. En tu caso podría ser otro (recordemos que antes hemos de ser root, por ejemplo escribiendo “su” y metiendo la password de root).

Ya tenemos montado el disquete y podemos trabajar en el en /tmp/disquete y luego desmontar con “umount /dev/sda” o “umount /tmp/disquete”.

Ok. Ya hemos montado el disquete. Vamos a cepillarnos el contenido del disquete y formartearlo como en los tiempos de msdos. Vamos a darle el formato de disquete adecuado con mkfs.fat así:

No olvides desmontar la unidad antes de darle formato.

A diferencia de discos duros por la limitación de tamaño que podemos almacenar en un disquete el sistema de ficheros empleado en los tiempos de MSDOS no era FAT16 para disquetes.

Si probamos a darle formato FAT16 con mkfs.msdos nos dirá que no:

Hemos de darle formato en FAT12 así pero antes llenando de zeros el disco para no tener que andar luego mirando contenido antiguo (y no encontrarnos cosas raras solo zeros y lo que nosotros/as metamos):

# dd if=/dev/zero of=/dev/sda bs=512
# mkfs.msdos -F 12 /dev/sda 

Y con eso tendríamos ya un disquete formateado listo para meterle datos.

Por tanto el sistema de ficheros es FAT12.

FAT12 es un sistema de archivos obsoleto, superado por el sistema FAT16 (2 elevado a 16 = 65.536) y FAT32 (2 elevado a 32 = 4.294.967.296), pero que permite en muy poco espacio direccionar la capacidad del disquete 1,44 Mb.

Ahora que tenemos ya formateado el disquette vamos a crear 2 archivos idénticos pero con diferente nombre:

$ echo "hola mundo" > /tmp/disquete/arch1.txt
$ echo "hola mundo" > /tmp/disquete/arch2.txt

Nos hacemos una imagen binaria de todo el disquete con dd:

# dd if=/dev/sda bs=1 of=/tmp/disquete.img

Teóricamente si no hemos sido muy rápidos la imagen del disquete contendrá solamente 2 archivos + todo lo que el sistema de archivos necesita ocupar.

No hace falta que tengas disquetera. He clonado el archivo y puede bajarse desde aquí:

https://mierda.tv/descargas/disquete.img

Esto nos lleva a que teniendo la imagen del disco clonada vamos a poder alterarla a nuestro antojo y hacerle putadas.

En este post vamos a ver como podemos alterar simplemente los nombres de los archivos para que arch1.txt se llame igual que arch2.txt, es decir, vamos a tener 2 archivos llamados arch2.txt y desde GNU/linux cuando hagamos un ls -la veremos 2 archivos con idéntico nombre.

Una vez tenemos la copia del disquete vamos a abrirla con el editor “le”.
En debian podemos instalarlo así:

# apt-get install le

Este editor es un editor de archivos tradicional con la peculiaridad de que si le damos como argumento -h abrirá los archivos binarios y los veremos en hex | ascii . Con le -h vamos a poder editar lo que queramos y guardar los cambios.

Vamos por tanto a abrir el archivo de la imagen creada del disquete:

$ le -h /tmp/disquete.img

Vamos a movernos hasta el offset 2600 dándole al cursor de la fecha abajo:

Allí vamos a ver ARCH1.TXT Y ARCH2.TXT pero si nos fijamos con espacio entre medias. Eso es lo que se llama el 8.3. Estos sistemas de archivos pretendían que el nombre del archivo fuese de 8 caracteres de nombre y 3 de extensión de archivo.

El hack viene en cambiar el nombre del archivo primero (arch1.txt arch1) por arch2 (arch2.txt).
Lo editamos moviéndonos en el editor hasta la posición y cambiando el 31 por el 32. Lo cambiaremos en las 2 zonas que salen (si nos fijamos bien sale en varios lados el 31).

Tendría que quedar así:

Le damos a control+x y luego a yes pulsando enter. Tenemos ya la imagen de disquete alterada. Vamos a pasarla de nuevo al disquete:

# umount /dev/sda 
# dd if=disquete.img of=/dev/sda

Quizás tarda unos segundos en empezar pero empezará a clonar (escribir el contenido de la imagen en el disquete).

Ahora ya si montamos el disquete y hacemos un ls -la veremos esto:

# mount /dev/sda /tmp/disquete
# cd disquete
# ls -la

Como podemos ver (si nos bajamos esta otra imagen del disquete alterado: https://mierda.tv/descargas/disquete-mismo-nombre-archivos.img ) es posible tener archivos que se llaman igual en el mismo directorio.

Supongamos por tanto que creamos utilizando lo descrito en este post 10 archivos de 1Mb. En realidad solo existe 1 de 1Mb que es el que hemos llenado a posteriori con ese tamaño de modo que entra en el disquete y le sobra espacio. Lo curioso es que programas como du nos dirán que el disquete tiene un archivo de 10Mb, otros como ls nos dirán que tenemos 10 archivos de 1Mb, …

Saludos cordiales.

próximo Publicación

Atrás Publicación

2 Comentarios

  1. mierda 21 enero, 2018 — Autor de artículo

    Añado como comentario que estaría bien probar esto con tarjetas SD formateadas en FAT16/32.

  2. demoakracia 1 febrero, 2018

    Muy constructivo. Esto es muy poderoso, se pueden hacer muchas cabronadas en imágenes de CD, por ejemplo, y colar mierdas varias en los equipos.

Dejar una contestacion

© 2018 [ MIERDA TV ]

Tema de Anders Norén