Diferencia entre revisiones de «Anàlisi de FAT en Linux»

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
Línea 105: Línea 105:
És el principi d'una de les FAT. Normalment hi ha dos copies iguals per evitar errors.  
És el principi d'una de les FAT. Normalment hi ha dos copies iguals per evitar errors.  


  0000200: f8ff ffff f0ff ffff ff00 0000 0000 0000  ................
  0000200: <span style="color:#FFFFFF; background:#E44">f8ff</a> <span style="color:#FFFFFF; background:#44E">ffff</a> <span style="color:#FFFFFF; background:#666">f0ff ffff ff00 0000 0000 0000</a> ................
 
* <span style="color:#FFFFFF; background:#E44">f8ff</a>:
* <span style="color:#FFFFFF; background:#44E">ffff</a>:
* <span style="color:#FFFFFF; background:#666">f0ff ffff ff00 0000 0000 0000</a>:





Revisión del 09:35 4 jun 2013

El sistema d'arxius FAT és un sistema simple de fitxers dissenyat originalment per a discs menuts i estructures de carpetes senzilles. El sistema d'arxius FAT es diu així per la seva forma d'organització, la taula d'assignació d'arxius, que es troba al principi del volum. Per protegir el volum, es mantenen dues còpies de la taula. En cas que un es fa malbé. A més, les taules d'assignació d'arxius i la carpeta arrel s'han d'emmagatzemar en un lloc fix perquè els arxius necessaris per iniciar el sistema es poden localitzar correctament.

Les principals versions del format FAT són el nom del nombre de bits de la taula d'elements: 12 (FAT12), 16 (FAT16), i 32 (FAT32), cadascuna d'aquestes variants es troba encara en ús. L'estàndard FAT també s'ha ampliat en altres aspectes, mentre que en general la preservació de la compatibilitat amb el programari existent.

Fat1.png

Estructura global del sistema d'arxius FAT.

La FAT s'organitza en forma de llista enllaçada. Cada element apunta al següent fins que s'arriba a un FFFF.

Fat2.png


Exercici

Podem crear una imatge de FAT amb:

$ dd if=/dev/zero of=disc.img bs=512 count=2048

Si volem, podem utilitzar el urandom per donar un aspecte més realista amb un disc que té dades previament:

$ dd if=/dev/urandom of=disc.img bs=512 count=2048

Després, li donem format. Com per a Linux, tot es un fitxer, pots formatejar un fitxer igual que un disc:

$ mkfs.vfat -F 16 disc.img
# Observa que he forçat a que siga FAT16

Per a muntar-lo:

$ sudo mount -oloop ./disc.img ./imgs/

A partir de ací, podem analitzar el contingut amb xxd en hexadecimal. També podem utilitzar la comanda fsstat del paquet sleuthkit:

$ sudo apt-get install sleuthkit
$ fsstat disc.img

Si analitzem la primera part:

0000000: eb3c 906d 6b64 6f73 6673 0000 0204 0100  .<.mkdosfs......
0000010: 0200 0200 08f8 0200 2000 4000 0000 0000  ........ .@.....
0000020: 0000 0000 0000 293a a2a6 8020 2020 2020  ......):...     
0000030: 2020 2020 2020 4641 5431 3620 2020 0e1f      FAT16   ..
0000040: be5b 7cac 22c0 740b 56b4 0ebb 0700 cd10  .[|.".t.V.......
0000050: 5eeb f032 e4cd 16cd 19eb fe54 6869 7320  ^..2.......This 
0000060: 6973 206e 6f74 2061 2062 6f6f 7461 626c  is not a bootabl
0000070: 6520 6469 736b 2e20 2050 6c65 6173 6520  e disk.  Please 
0000080: 696e 7365 7274 2061 2062 6f6f 7461 626c  insert a bootabl
0000090: 6520 666c 6f70 7079 2061 6e64 0d0a 7072  e floppy and..pr
00000a0: 6573 7320 616e 7920 6b65 7920 746f 2074  ess any key to t
00000b0: 7279 2061 6761 696e 202e 2e2e 200d 0a00  ry again ... ...
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000140: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.
0000200: f8ff ffff f0ff ffff ff00 0000 0000 0000  ................


Aquest és el boot record de la partició que hem creat. (L'última línia no és del boot record).

Observem el significat de alguns dels camps:

  • eb3c 90: Es tracta d'una instrucció de salt válida per a un x86, serveix per a indicar que els pròxims 3c bytes no són executables.
  • 6d 6b64 6f73 6673 00: OEM ID, Es part del BIOS Parameter Block (BPB)
  • 00 02: Bytes per sector. Està en Little endian, per tant, és 0x0200 = 512
  • 04: Sectors per Cluster.
  • 0100: Sectors reservats. També està en Little endian. 0x0001 = 1 sector reservat. Mínim ha de ser 1, ja que és el del sector de arranc.
  • 02: Número de FATs. És el nombre de cópies de la FAT, normalment és 2.
  • 00 02: Quantitat màxima de arxius en l'arrel del sistema d'arxius. És 512. Però cal dir que si utilitzem noms llargs són menys.
  • 00 08: Quantitat de sectors. No cal utilitzar-lo si és més de 32MB. En aquest cas es tracta de 0x0800 = 2048 sectors de 512 bytes. Ja que el disc l'hem fet de 1MB.
  • f8: Tipus de dispositiu (f8 = hard drive; f0 = floppy drive)
  • 0200: Sectors per FAT 0x0002= 2 sectors Donada aquesta informació, juntament amb el nombre dels greixos i els sectors reservats esmentats, podem calcular on comença el directori arrel. Donat el nombre d'entrades al directori arrel, també podem calcular on està l'àrea de dades del disc.
  • 2000: Sectors per track. Referència a la geometría del disc.
  • 4000: Número de capçals.
  • 0000 0000: Sectors fins al començament del volume. Poden ser molts si hi han altres particions. Però en aquest cas és 0.
  • 0000 0000: Sectors totals. S'utilitza en cas de que els sectors totals és més de 32MB.
  • 00: Drive id. Sols importa si és arrencable. 00 és floppy 80 disc dur.
  • 00: Reservat per a NT
  • 29: Extended boot signature. Pot ser 0x28 o 0x29 per a ser reconegut per NT.
  • 3a a2a6 80: Número de serie del volume. És un identificador únic i es calcula amb operacions matemàtiques sobre la data en que es va formatejar.
  • 20 2020 2020 2020 2020 2020: Nom del volumen o partició. Pot ser de 11 caracters. Es aquest cas són espais.
  • 4641 5431 3620 2020: Tipus de FAT. Pot ser FAT12 o FAT16. Per a FAT32 pot no utilitzar-se. No és totalment fiable.
  • 0e1f ... : Codi executable
  • 55aa: Signatura de arranc. Sempre ha de ser 0x55aa

La última línia:


És el principi d'una de les FAT. Normalment hi ha dos copies iguals per evitar errors.

0000200: f8ff</a> ffff</a> f0ff ffff ff00 0000 0000 0000</a>  ................
  • f8ff</a>:
  • ffff</a>:
  • f0ff ffff ff00 0000 0000 0000</a>:


0000a00: 4166 0069 006c 0065 0031 000f 00ed 2e00  Af.i.l.e.1......
0000a10: 7400 7800 7400 0000 ffff 0000 ffff ffff  t.x.t...........
0000a20: 4649 4c45 3120 2020 5458 5420 0064 e643  FILE1   TXT .d.C
0000a30: c342 c342 0000 e643 c342 0300 0700 0000  .B.B...C.B......
0000a40: 4166 0069 006c 0065 0032 000f 00f1 2e00  Af.i.l.e.2......
0000a50: 7400 7800 7400 0000 ffff 0000 ffff ffff  t.x.t...........
0000a60: 4649 4c45 3220 2020 5458 5420 0000 eb43  FILE2   TXT ...C
0000a70: c342 c342 0000 eb43 c342 0400 0600 0000  .B.B...C.B......
0000a80: 4164 0069 0072 0031 0000 000f 00a8 ffff  Ad.i.r.1........
0000a90: ffff ffff ffff ffff ffff 0000 ffff ffff  ................
0000aa0: 4449 5231 2020 2020 2020 2010 0064 4048  DIR1       ..d@H
0000ab0: c342 c342 0000 4048 c342 0500 0000 0000  .B.B..@H.B......
0000ac0: 0000 0000 0000 0000 0000 0000 0000 0000  ................


00051f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0005200: 686f 6c61 310a 0a00 0000 0000 0000 0000  hola1...........
0005210: 0000 0000 0000 0000 0000 0000 0000 0000  ................


http://www.beginningtoseethelight.org/fat16/index.htm http://support.microsoft.com/kb/140418