Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/01/2022, à 01:38

Elaine87

[Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Bonjour,

Je cherche à récupérer le contenu d'un fichier texte qui s'est corrompu lors d'une coupure de courant... La taille du fichier est toujours la bonne (14 Mo), mais tout le texte au bas du fichier s'est transformé en espaces.

Mes sources d'inspiration :

https://superuser.com/questions/223677/ … d-txt-file

you can open your disk in a sector editor (booted from a CD or USB) and search the raw contents of your HDD for text that you know had been present in the file. You may get lucky.

https://www.quora.com/How-can-I-retriev … ata-is-not

you can dump the raw data and search it. (...) use the “dd” command. Have a large empty flash drive ready to hold the file this will create. Then search that file for any bit of the text you can remember.

https://doc.ubuntu-fr.org/dd

5.6 Faire une recherche de chaines de caractères dans une partition tout entière

Supposons que vous souhaitiez trouver si votre petite amie vous trompe, a des cybers amants, ou se conduit mal avec son ordinateur. Même si l'ordinateur est protégé par un mot de passe, vous pouvez booter avec le CD: http://www.efense.com/helix ou un autre live-CD et chercher la chaine de caractères dans la partition entière, en utilisant la commande grep:

dd if=/dev/sda2 bs=16384| hexdump -C | grep 'je ne l aime vraiment plus'

Cherchera dans toute la partition la chaîne de caractères (pas d'accents) spécifiée entre les guillemets (utilisez éventuellement les options de grep: avec, disons, grep -3 'chaine' vous auriez un peu plus de contexte affiché pour chaque résultat de recherche). Chercher plusieurs fois dans une partition entière peut être fastidieux. Cette commande particulière sur les chaines de caractères imprime le résultat de la recherche sur l'écran, avec l'offset où il se trouve dans la partition. dd travaille en système décimal. L'offset des disques travaille en hexadécimal. Disons que vous trouvez la chaine de caractères dans votre partition à l'offset 0x020d0d90h. Vous convertissez cela en décimal avec l'une des nombreuses calculatrices trouvées sur Linux. Ceci est l'offset décimal 34409872. Divisé par 512 par secteur, nous obtenons 67206,78125.

J'ai fait une image de toute ma partition avec dd (850 Mo). Maintenant, il faut que je cherche, mais je ne sais pas trop 1) comment trouver ce que je cherche 2) comment l'extraire de l'image.
Je voudrais récupérer au minimum 10 000 lignes vers le milieu du fichier TXT. Et idéalement, plutôt environ 260 000 lignes, soit toute la fin du fichier.
Je sais quelles chaînes utiliser pour ces deux options ; dans les deux cas, je récupérerais le contexte après la chaîne trouvée.

Quelques questions :
* grep est-il l'outil le plus indiqué ?
* si oui, pour la syntaxe... quelque chose de ce genre ?

grep -A 10000 "ma chaine" /media/pointdemontage/mapartition.image > resultat.txt

* ça va mettre un temps fou, j'imagine ?

Ce fichier est vraiment important pour moi. Toutes les idées seront les bienvenues ! Merci.

Dernière modification par Elaine87 (Le 26/01/2022, à 14:26)

Hors ligne

#2 Le 25/01/2022, à 04:38

Watael

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

salut,

une image, créée avec dd, peut être montée ±comme une partition, en lecture seule :

# mount -o ro /chemin/fichier.image /emptyDir/

ensuite, tu travailles comme d'habitude.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 25/01/2022, à 13:34

Elaine87

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Merci Watael.
Cependant, je n'ai pas d'habitudes sous Linux...
Comment effectuer cette recherche si je monte l'image comme une partition ? Et cela ne va-t-il pas chercher dans les fichiers au lieu de chercher dans les données brutes existant (peut-être...) encore sur le disque "entre" les fichiers ?

Hors ligne

#4 Le 25/01/2022, à 13:52

Watael

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

d'accord. je n'avais pas compris. oui, monter le système de fichiers, ne permettra pas d'accéder aux "données brutes".
je ne saurais pas t'aider. désolé.

tu pourrais adapter le titre de ta discussion pour y indiquer que tu cherches des données brutes.
par exemple : « récupérer des données brutes d'une image disque »


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 25/01/2022, à 14:12

Nasman

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Il faudrait déjà savoir quel est le système de fichiers où se trouvait ton fichier. Selon le type de fichiers, les données ne seront pas forcément organisées de la même façon.
Si le fichier est petit alors il y a des chances que la totalité des données soient dans le même bloc. S'il est beaucoup plus gros, on pourra les retrouver dans des blocs différents et pas forcément contigus (fragmentation)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

Hors ligne

#6 Le 25/01/2022, à 14:23

MicP

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Bonjour

Pour pouvoir monter et accéder au système de fichiers contenu dans un fichier image d'une partition
on peut se passer des privilèges du compte root
ça évitera de prendre le risque de provoquer des dégâts en cas d'erreur de frappe
et ça évite d'avoir besoin de créer un point de montage et d'avoir à le supprimer ensuite.

=======
Dans les lignes de commande suivantes,
le fichier image de la partition est nommé : fichierImagePartition.dd

michel@debbull:~$ udisksctl loop-setup -f fichierImagePartition.dd    # Pour créer un fichier de périphérique (de type loop) qui va permettre l'accès à la partition
Mapped file fichierImagePartition.dd as /dev/loop0.
michel@debbull:~$ 

Ci-dessus, on peut voir qu'en retour, la commande m'a donné le nom du fichier de périphérique qu'elle a choisi d'utiliser : /dev/loop0

michel@debbull:~$ udisksctl mount -b /dev/loop0                       # Pour monter le système de fichiers contenu dans la partition
Mounted /dev/loop0 at /media/michel/f5aec4cd-de3e-47cf-95b1-3026518f6b8b
michel@debbull:~$ 

Voilà : j'ai pu obtenir un accès au système de fichiers de cette partition sans avoir eu besoin d'utiliser le compte root
et je peux maintenant accéder à ce système de fichiers depuis mon compte utilisateur michel
par le point de montage qui a automatiquement été créé :  /media/michel/f5aec4cd-de3e-47cf-95b1-3026518f6b8b

Note :
Si le système de fichiers de la partition contenue dans le fichier image
avait eu un nom de Label (étiquette), le nom du point de montage qui aurait été automatiquement créé
aurait utilisé ce nom de Label au lieu de l'UUID de ce système de fichiers

=======

michel@debbull:~$ udisksctl unmount -b /dev/loop0                     # Pour dé-monter le système de fichiers qui avait été monté
Unmounted /dev/loop0.
michel@debbull:~$ 

(Attention, dans la ligne de commande ci-dessus, c'est bien unmount qui est écrit et PAS umount)
Le système de fichiers a été dé-monté, et juste après le dé-montage, le point de montage qui n'est plus utilisé a été automatiquement supprimé.

michel@debbull:~$ udisksctl loop-delete -b /dev/loop0                 # Pour "libérer" le fichier de périphérique qui avait été utilisé.
michel@debbull:~$ 

Toutes ces lignes de commande ont pu s'exécuter
sans avoir eu besoin d'utiliser les privilèges du compte utilisateur root

Dernière modification par MicP (Le 25/01/2022, à 14:47)

Hors ligne

#7 Le 25/01/2022, à 14:47

nany

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Bonjour,



Elaine87 a écrit :

Je voudrais récupérer au minimum 10 000 lignes vers le milieu du fichier TXT. Et idéalement, plutôt environ 260 000 lignes, soit toute la fin du fichier.
Je sais quelles chaînes utiliser pour ces deux options ; dans les deux cas, je récupérerais le contexte après la chaîne trouvée.

Quelques questions :
* grep est-il l'outil le plus indiqué ?
* si oui, pour la syntaxe... quelque chose de ce genre ?

grep -A 10000 "ma chaine" /media/pointdemontage/mapartition.image > resultat.txt

Si j’ai bien tout compris :

hd /media/pointdemontage/mapartition.image | sed -n '/ma chaine/,$p' > resultat.txt

?

Hors ligne

#8 Le 25/01/2022, à 15:04

MicP

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Je suppose que ce fichier texte corrompu a un nom, et qu'il doit être dans un répertoire dont le chemin est connu ausssi.
Il doit donc être possible de le retrouver facilement en utilisant le navigateur de fichiers une fois le système de fichiers monté,

ou bien, si on ne connaît pas son chemin absolu, en utilisant la commande find

find /chemin/du/pointDeMontage -type f -name nomDuFichier.txt

Dernière modification par MicP (Le 25/01/2022, à 15:13)

Hors ligne

#9 Le 25/01/2022, à 15:20

Elaine87

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Merci à tous.
Je connais le nom du fichier et son chemin d'accès, mais le texte au bas du fichier a été remplacé par des espaces ; ou si je choisis un affichage hexadécimal, plein de zéros...
Il s'agit d'un fichier de 14 Mo créé sur une partition NTFS sous Windows 7. Je l'utilise depuis des années, donc il doit être fragmenté, oui.
Je vais essayer de modifier le titre du sujet comme suggéré par Watael.

Hors ligne

#10 Le 25/01/2022, à 15:29

Nasman

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Il faudrait trouver les spécifications du NTFS pour savoir comment sont organisées les données, surtout si le fichier est fragmenté. Je pense qu'on va buter sur les points suivants :
1) Le fichier affiché rassemble les données actualisées des blocs constituant le fichier - si des zéros apparaissent c'est que des blocs ont été effacés (ou que les indications des différents blocs du fichier sont corrompus
2) La recherche d'éléments dudit fichier va faire apparaitre de nombreux blocs qui étaient utilisés au cours de la vie de ce fichier. Ils seront d'autant plus nombreux que le fichier est ancien.

Avec un peu (beaucoup) de chance, un de ces blocs (plus employé à ce jour - et en attente d'être écrasé) contient les infos que tu recherches.


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

Hors ligne

#11 Le 25/01/2022, à 16:28

MicP

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Il faut aussi espérer que les blocs de texte qui ont été libérés n'aient pas été réutilisés pour d'autres fichiers qui auraient étés créé après la corruption du fichier.

En bref, quand un problème de ce genre arrive, il ne faut surtout plus écire quoi que ce soit dans le système de fichier concerné.

=======
Après, pour la recherche des blocs de texte perdus, on peut utiliser dd ou un éditeur hexadécimal, c'est long, mais comme les blocs sont souvent de 4Ko, ça peut rapporter gros si on a la chance d'en  trouver un.
La recherche pourrait être faite en utilisant un motif de recherche qui serait une phrase particulière ou un mot particulier qu'on serait sûr de ne pas pouvoir le retrouver ailleurs,
mais ces blocs ne commencent et ne finissent pas forcement sur un début de mot.

=======
Tu peux aussi faire lancer plusieurs recherches différentes par différents processus lancés dans différentes fenêtre de terminal,
puisqu'il ne s'agit que de lire le fichier, il sera disponible pour être lu par plusieurs processus de recherche simultanés.

La chance, c'est qu'il semble s'agir d'un fichier au format texte brut.

Dernière modification par MicP (Le 25/01/2022, à 16:31)

Hors ligne

#12 Le 26/01/2022, à 14:25

Elaine87

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Bonjour,
Après le temps passé à faire l'image et toutes ces recherches... J'ai rebooté sur le système Windows, utilisé Recuva en mode portable (avec les options "chercher dans les fichiers non effacés" et "chercher dans le contenu", et... ça a fonctionné ! Recuva m'a restauré mon fichier.
Fiouuu, plus de peur que de mal pour finir. Désolée du dérangement, du coup ^^
Je passe le sujet en résolu, et mets tous vos conseils de côté au cas où quand même wink
Un grand merci à tous !

Hors ligne

#13 Le 26/01/2022, à 14:38

MicP

Re : [Résolu] Récupérer des données brutes dans une image dd (TXT corrompu)

Merci à toi pour ton retour détaillé smile

Hors ligne