- Travaillez-vous dans une entreprise de cybersécurité? Voulez-vous voir votre entreprise annoncée dans HackTricks? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF? Consultez les [PLANS D'ABONNEMENT](https://github.com/sponsors/carlospolop)!
- Rejoignez le [💬](https://emojipedia.org/speech-balloon/) groupe Discord ou le groupe [telegram](https://t.me/peass) ou suivez-moi sur Twitter [🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks_live).
- Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud).
**Ext2** est le système de fichiers le plus courant pour les partitions **sans journalisation** (**partitions qui ne changent pas beaucoup**) comme la partition de démarrage. **Ext3/4** sont **journalisés** et sont utilisés généralement pour les **autres partitions**.
Tous les groupes de blocs du système de fichiers ont la même taille et sont stockés séquentiellement. Cela permet au noyau de déduire facilement l'emplacement d'un groupe de blocs sur un disque à partir de son index entier.
* Une carte de bits de blocs de données qui est utilisée pour identifier les blocs libres à l'intérieur du groupe
* Une carte de bits d'inode, qui est utilisée pour identifier les inodes libres à l'intérieur du groupe
* Table d'inodes : elle se compose d'une série de blocs consécutifs, chacun contenant un nombre prédéfini Figure 1 Ext2 d'inodes. Tous les inodes ont la même taille : 128 octets. Un bloc de 1 024 octets contient 8 inodes, tandis qu'un bloc de 4 096 octets contient 32 inodes. Notez qu'en Ext2, il n'est pas nécessaire de stocker sur le disque une correspondance entre un numéro d'inode et le numéro de bloc correspondant car cette dernière valeur peut être déduite du numéro de groupe de blocs et de la position relative à l'intérieur de la table d'inodes. Par exemple, supposons que chaque groupe de blocs contient 4 096 inodes et que nous voulons connaître l'adresse sur le disque de l'inode 13 021. Dans ce cas, l'inode appartient au troisième groupe de blocs et son adresse sur le disque est stockée dans la 733ème entrée de la table d'inodes correspondante. Comme vous pouvez le voir, le numéro d'inode est simplement une clé utilisée par les routines Ext2 pour récupérer rapidement le descripteur d'inode approprié sur le disque.
* blocs de données, contenant des fichiers. Tout bloc qui ne contient aucune information significative est dit être libre.
Les **fonctionnalités affectent l'emplacement** des données, **la façon dont** les données sont stockées dans les inodes et certaines d'entre elles peuvent fournir des **métadonnées supplémentaires** pour l'analyse, donc les fonctionnalités sont importantes dans Ext.
S'il y a des fonctionnalités **incompatibles**, vous ne pourrez pas monter le système de fichiers car le système d'exploitation ne saura pas comment accéder aux données.
**Tout utilitaire** qui lit le **superblock** sera en mesure d'indiquer les **fonctionnalités** d'un **système de fichiers Ext**, mais vous pouvez également utiliser `file -sL /dev/sd*` pour obtenir cette information à partir d'un fichier système de fichiers Ext.
Vous pouvez également utiliser l'application GUI gratuite : [https://www.disk-editor.org/index.html](https://www.disk-editor.org/index.html)\
Ou vous pouvez également utiliser **python** pour obtenir les informations de superblock : [https://pypi.org/project/superblock/](https://pypi.org/project/superblock/)
Les **inodes** contiennent la liste des **blocs** qui **contiennent** les **données** réelles d'un **fichier**.\
Si le fichier est grand, un inode **peut contenir des pointeurs** vers d'autres inodes qui pointent vers les blocs/autres inodes contenant les données du fichier.
Dans **Ext2** et **Ext3**, les inodes ont une taille de **128B**, **Ext4** utilise actuellement **156B** mais alloue **256B** sur le disque pour permettre une expansion future.
| 0x0 | 2 | Mode de fichier | Mode de fichier et type |
| 0x2 | 2 | UID | 16 bits inférieurs de l'ID du propriétaire |
| 0x4 | 4 | Taille Il | 32 bits inférieurs de la taille du fichier |
| 0x8 | 4 | Atime | Temps d'accès en secondes depuis l'époque |
| 0xC | 4 | Ctime | Temps de modification en secondes depuis l'époque |
| 0x10 | 4 | Mtime | Temps de modification en secondes depuis l'époque |
| 0x14 | 4 | Dtime | Temps de suppression en secondes depuis l'époque |
| 0x18 | 2 | GID | 16 bits inférieurs de l'ID de groupe |
| 0x1A | 2 | Compteur de lien | Nombre de liens rigides |
| 0xC | 4 | Blocs Io | 32 bits inférieurs du nombre de blocs |
| 0x20 | 4 | Drapeaux | Drapeaux |
| 0x24 | 4 | Union osd1 | Linux : version I |
| 0x28 | 69 | Bloc\[15] | 15 points vers le bloc de données |
| 0x64 | 4 | Version | Version de fichier pour NFS |
| 0x68 | 4 | ACL de fichier bas | 32 bits inférieurs des attributs étendus (ACL, etc.) |
| 0x6C | 4 | Taille de fichier hi | 32 bits supérieurs de la taille du fichier (ext4 uniquement) |
| 0x70 | 4 | Fragment obsolète | Une adresse de fragment obsolète |
| 0x74 | 12 | Osd 2 | Deuxième union dépendante du système d'exploitation |
| 0x74 | 2 | Blocs hi | 16 bits supérieurs du nombre de blocs |
| 0x76 | 2 | ACL de fichier hi | 16 bits supérieurs des attributs étendus (ACL, etc.) |
| 0x78 | 2 | UID hi | 16 bits supérieurs de l'ID du propriétaire |
| 0x7A | 2 | GID hi | 16 bits supérieurs de l'ID de groupe |
| 0x7C | 2 | Somme de contrôle Io | 16 bits inférieurs de la somme de contrôle d'inode |
"Modifier" est l'horodatage de la dernière fois que le contenu du fichier a été modifié. On l'appelle souvent "_mtime_".\
"Changer" est l'horodatage de la dernière fois que l'_inode_ du fichier a été modifié, par exemple en modifiant les autorisations, la propriété, le nom de fichier et le nombre de liens rigides. On l'appelle souvent "_ctime_".
| 9 | Bit collant (sans cela, toute personne ayant des autorisations d'écriture et d'exécution sur un répertoire peut supprimer et renommer des fichiers) |
| 8 | Lecture propriétaire |
| 7 | Écriture propriétaire |
| 6 | Exécution propriétaire |
| 5 | Lecture de groupe |
| 4 | Écriture de groupe |
| 3 | Exécution de groupe |
| 2 | Lecture autres |
| 1 | Écriture autres |
| 0 | Exécution autres |
Les bits en gras (12, 13, 14, 15) indiquent le type de fichier (un répertoire, une socket...) seul l'une des options en gras peut exister.
| 0x7 | 1 | Type de fichier | <p>0x00 Inconnu<br>0x01 Régulier</p><p>0x02 Répertoire</p><p>0x03 Périphérique de caractère</p><p>0x04 Périphérique de bloc</p><p>0x05 FIFO</p><p>0x06 Socket</p><p>0x07 Lien symbolique</p> |
| 0x8 | | Nom | Chaîne de nom (jusqu'à 255 caractères) |
**Pour augmenter les performances, les blocs de hachage racine du répertoire peuvent être utilisés.**
**Attributs étendus**
Peut être stocké dans
* Espace supplémentaire entre les inodes (256 - taille de l'inode, généralement = 100)
* Un bloc de données pointé par file\_acl dans l'inode
Peut être utilisé pour stocker n'importe quoi en tant qu'attribut d'utilisateur si le nom commence par "user". Les données peuvent donc être cachées de cette manière.
Pour voir le contenu du système de fichiers, vous pouvez **utiliser l'outil gratuit** : [https://www.disk-editor.org/index.html](https://www.disk-editor.org/index.html)\
Ou vous pouvez le monter dans votre linux en utilisant la commande `mount`.