On Thu, 09 Nov 2006 21:26:41 +0100, Stéphane Morico <smorico@???>
wrote:
> Bsoir,
>
> Suite à mon précédent message (télégrenoble), je pose la question dans un
> thread séparé...
>
> Je cherche à faire un dump binaire d'un espace disque à partir d'un
> numéro d'inode..
>
> Je cherche en fait à faire un dd depuis un fichier mais à ne pas
> m'arrêter à la fin de celui-ci (pour copier les données se trouvant
> après...)
>
> Connaissez vous un outil permettant cela ou, à défaut, un outil pouvant
> me donner le segment:offset ou @ directe d'un fichier à partir de son N°
> d'inode (pour copie avec dd et ibs/skip) ??
>
Pour retouver les blocs du fichier une solution possible est d'utiliser
'debugfs' :
/sbin/debugfs -R 'stat <ref_fichier_dans_fs>' /dev/<device>
Si tu veux plus de détail, j'ai joins un petit mémo avec plus
d'informations (Pour des manip. de ce genre je me fais des mémo pour éviter
d'avoir à refaire la recherche la fois suivante)
> Merci par avance..
>
>
>
--
Using M2, Opera's revolutionary e-mail client:
http://www.opera.com/m2/La question initiale est :
» Je cherche à faire un dump binaire d'un espace disque à partir d'un numéro d'inode..
» Je cherche en fait à faire un dd depuis un fichier mais à ne pas m'arrêter à la fin de celui-ci (pour copier les données se trouvant après...)
» Connaissez vous un outil permettant cela ou, à défaut, un outil pouvant me donner le segment:offset ou @ directe d'un fichier à partir de son N°
» d'inode (pour copie avec dd et ibs/skip) ??
Solution possibles :
------------------
1 - Retrouver les séries de blocs de données du fichier
Commentaire :
-----------
Les séries de blocs parce que :
a - L'inode peut accéder directement à 11 blocs de données, ensuite il faut passer par des indirections
sur lusieurs niveaux,
b - Les blocs de données d'un fichier ne sont pas forécement écrits à la suite les uns des autres
Solution possible :
-----------------
Utiliser la commande debugfs :
- Commande SuperUser, placée normalement dans '/sbin' -> /sbi,/debugfs pour la lancer depui un autre compte
que root)
- par défaut elle est en mode read-only donc on peut limiter es risques quand on n'est pas trop sure de
soi,
- Elle travaile sur des devices donc il faut connaître le Fs du fichier et le device correspondant,
- Elle fonctionne normalement en mode interactif "Commande/Réponse" mais on peut lui faire exécuter une
seule requète : -R '<commande'
- La commande pour lister les infos d'une inode, y compris la liste des blocs de données est
'stat <fichier>'
- <fichier> peut être une référence relative (pas besoin de faire un cd avant de l'exécuter) mais une
référence relative à la racine du FileSysteme courant et non pas la racine du système.
Exemple :
/sbin/debugfs -R 'stat doc/C/ProgrammationC.pdf' /dev/sdb8'
Le résultat :
Inode: 30128 Type: regular Mode: 0644 Flags: 0x0 Generation: 59517
User: 501 Group: 501 Size: 255242
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 502
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x44bbaafe -- Mon Jul 17 17:21:34 2006
atime: 0x44bbaa9a -- Mon Jul 17 17:19:54 2006
mtime: 0x44bba5a8 -- Mon Jul 17 16:58:48 2006
BLOCKS:
(0-11):127353-127364, (IND):127365, (12-249):127366-127603
TOTAL: 251
Les blocs accedès directs :
(0-11):127353-127364
Première Indirection :
- Index (IND):127365,
- Data (12-249):127366-127603
Pour un fichier plus gros on verra des Double, puis Triple Indeirection
2 - Lister le contenu de certains blocs du disque, i possible en hexa
Solution possible :
-----------------
Pour lire les blocs du disque : utiliser la commande 'dd' avec les options :
- skip=<num_1er_bloc - 1>'
Pour se positionner sur le premier bloc à lister,
- count=<nb_blocs>'
pour le nombre de blocs à lister
- ibs=<taille_bloc>
Pour que dd utilise une unité correcte pour le FS,
Par défaut il utilise une taille de 512,
En ext2/3 c'est 1024 par défaut
Sinon 'commande stats ou show_super_stats de debugfs'
Pour afficher en hexa : c'est comme on veut, 'od -cx' par exemple
Exemple :
dd if=/dev/sdb10 skip=127366 count=251 ibs=1024 | od -cx