Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

Utiliser PhotoRec pour récupérer des données perdues
Locked
Message
Author
BitterColdSoul
Posts: 50
Joined: 07 Jun 2020, 20:38
Location: France

Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#1 Post by BitterColdSoul »

En analysant une récupération j'ai constaté que Photorec échouait à récupérer certains fichiers JPG de format standard, valides et contigus (= non fragmentés), détectés correctement par d'autres logiciels (comme R-Studio ou même Recuva -- en analyse brute je précise ; ces fichiers n'étaient plus répertoriés sur la partition d'origine, il s'agissait vraisemblablement d'une ancienne copie, les fichiers correspondants encore répertoriés étaient localisés ailleurs sur la même partition). La récupération initiale ayant été faite avec Photorec 7.1 WIP, j'ai fait un test avec la version la plus récente disponible, obtenant exactement le même résultat.
À chaque fois, Photorec a extrait un fichier avec une taille trop élevée, incluant le début du fichier qui suit immédiatement, et a subséquemment loupé le fichier en question. Plusieurs dizaines de fichiers sont concernés, dans un dossier comportant des photos prises par deux appareils (un Sony et un Nikon -- je doute que ça ait une incidence vu que les deux fichiers manquants dans l'exemple ci-dessous proviennent d'un appareil différent, néanmoins dans les deux cas le fichier qui précède provient de l'appareil Sony). L'en-tête des fichiers exclus me semble tout à fait normal, et les fichiers précédents comportent un indicateur de fin de fichier JPG (FF D9), lequel devrait normalement être pris en compte pour déterminer où s'arrête un fichier.
Ci-dessous une archive incluant :
– une image partielle extraite à partir du début d'un fichier JPG correctement détecté par Photorec, d'une taille de 35Mo, et contenant 8 fichiers JPG
– les 6 fichiers récupérés par Photorec 7.2 WIP (donc 2 sont manquants)
– le fichier report.xml généré par Photorec
– un fichier texte avec un rapport détaillé
– une capture d'écran montrant une anomalie d'affichage, Photorec ayant été ouvert via l'invite de commande en spécifiant le chemin du fichier image en tant que cible (j'ignore si c'est une anomalie ponctuelle ou reproductible, je l'inclus à toute fin utile...)
Photorec 7.2 WIP test (échoue à récupérer certains fichiers JPG).7z

Dans d'autres cas, Photorec récupère uniquement une miniature, échouant à récupérer le fichier complet, pourtant valide et contigu ; je peux fournir un exemple similaire si nécessaire.

recuperation
Posts: 2719
Joined: 04 Jan 2019, 09:48
Location: Hannover, Deutschland (Germany, Allemagne)

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#2 Post by recuperation »

BitterColdSoul wrote: 10 Oct 2020, 08:44 En analysant une récupération j'ai constaté que Photorec échouait à récupérer certains fichiers JPG de format standard, valides et contigus (= non fragmentés), détectés correctement par d'autres logiciels (comme R-Studio ou même Recuva -- en analyse brute je précise ; ces fichiers n'étaient plus répertoriés sur la partition d'origine, il s'agissait vraisemblablement d'une ancienne copie, les fichiers correspondants encore répertoriés étaient localisés ailleurs sur la même partition). La récupération initiale ayant été faite avec Photorec 7.1 WIP, j'ai fait un test avec la version la plus récente disponible, obtenant exactement le même résultat.
À chaque fois, Photorec a extrait un fichier avec une taille trop élevée, incluant le début du fichier qui suit immédiatement, et a subséquemment loupé le fichier en question. Plusieurs dizaines de fichiers sont concernés, dans un dossier comportant des photos prises par deux appareils (un Sony et un Nikon -- je doute que ça ait une incidence vu que les deux fichiers manquants dans l'exemple ci-dessous proviennent d'un appareil différent, néanmoins dans les deux cas le fichier qui précède provient de l'appareil Sony). L'en-tête des fichiers exclus me semble tout à fait normal, et les fichiers précédents comportent un indicateur de fin de fichier JPG (FF D9), lequel devrait normalement être pris en compte pour déterminer où s'arrête un fichier.
Photorec finit un fichier au moment oû il trouve le fichier suivant. "FF D9" n'est pas tenu en compte.
Comme "FF D9" pourrait appartenir aux dates à l'intérieur du fichier cette méthode risque de raccourcir le fichier en question. Utiliser ce code serait seulement possible si la structure intérieure éviterait la combinaison "FF D9".

J'ai informé M. Grenier sur la documentation présente en fichier de type 7z.

BitterColdSoul
Posts: 50
Joined: 07 Jun 2020, 20:38
Location: France

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#3 Post by BitterColdSoul »

Photorec finit un fichier au moment oû il trouve le fichier suivant. "FF D9" n'est pas tenu en compte.
Comme "FF D9" pourrait appartenir aux dates à l'intérieur du fichier cette méthode risque de raccourcir le fichier en question. Utiliser ce code serait seulement possible si la structure intérieure éviterait la combinaison "FF D9".
Certes, mais d'une part cette structure semble suffisamment spécifique dans le cas des fichiers JPG (et il doit bien en être tenu compte pour déterminer qu'un fichier est “broken”), d'autre part dans ce cas précis un en-tête JPG valide suit immédiatement, donc même sans prendre en compte le marqueur “FF D9” les fichiers f0008632.jpg et f0023560.jpg (dans cet exemple) devraient être interrompus au maximum à la limite du dernier cluster (ce qu'a fait Recuva pour ces mêmes fichiers), le résultat observé ici est clairement aberrant. Merci en tout cas d'avoir fait suivre.

BitterColdSoul
Posts: 50
Joined: 07 Jun 2020, 20:38
Location: France

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#4 Post by BitterColdSoul »

Tant que j'y suis, j'ai aussi constaté que certains fichiers WMA n'étaient pas détectés. Une autre petite image extraite (11Mo) contenant :
– 1 fichier MP3 correctement détecté,
– 4 fichiers WMA non détectés (j'ai bien activé le type “ASF, WMA, WMV” dans “File opt.”),
– 1 fichier “Thumbs.db” faussement identifié comme “.doc” (ce qui est systématique).

http://www.mediafire.com/file/a8ee2kqxyxvxg9v

Code: Select all

00000000      Thumbs.db
00372736      Saint Seiya\Hades\01 Prologue - Légende nordique.wma
01937408      Saint Seiya\Hades\01-Hades OST.mp3
04931584      Saint Seiya\Hades\03 La tragédie d'un peuple.wma
07241728      Saint Seiya\Hades\10 Derbal dévoile sa force.wma
09310208      Saint Seiya\Hades\10 Souvenirs impérissables.wma

BitterColdSoul
Posts: 50
Joined: 07 Jun 2020, 20:38
Location: France

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#5 Post by BitterColdSoul »

Et encore une petite (15Mo) pour des fichiers MP3 mal ou non détectés.
http://www.mediafire.com/file/9461baw02o4eo3b

Code: Select all

Fichier d'origine      00000000      Doom\At Doom's Gate.mp3      699147
Fichier récupéré       00050688      f0000099.mp3      648459      # début mal détecté par Photorec
Fichier d'origine      00700416      Doom\Dark Halls.mp3      2108632
Fichier récupéré       00827904      f0001617.mp3      1981144      # début mal détecté par Photorec
Fichier d'origine      02809856      Doom\Deep Into The Code.mp3      904689
Fichier récupéré       02839040      f0005545.mp3      875505      # début mal détecté par Photorec
Fichier d'origine      03719168      Doom\Demons on the Prey.mp3      1308243
Fichier récupéré       03719168      f0007264.mp3      1308243      # correct
Fichier d'origine      05029888      Doom\Donna to the Rescue.mp3      936677
Fichier récupéré       05029888      f0009824.mp3      936677      # correct
Fichier d'origine      05967872      Doom\End Game.mp3      464997
Fichier récupéré       05967872      f0011656.mp3      464997      # correct
Fichier d'origine      06434816      Doom\Facing The Spider.mp3      719527 
Fichier récupéré       06567424      f0012827.mp3      586919      # début mal détecté par Photorec
Fichier d'origine      07155712      Doom\Hiding The Secrets.mp3      1082336
Fichier récupéré       07455712      f0013976.mp3      1082336      # correct
Fichier d'origine      08241152      Doom\I Sawed the Demons.mp3      1241369
Fichier récupéré       08241152      f0016096.mp3      1241369      # correct
Fichier d'origine      09486336      Doom\Intermission from Doom.mp3      1594963
Fichier récupéré       09486336      f0018528.mp3      1594963      # correct
Fichier d'origine      11083776      Doom\Kitchen Ace (And Taking Names).mp3      1397477
Fichier récupéré       11083776      f0021648.mp3      1397477      # correct
Fichier d'origine      12484608      Doom\Nobody Told Me About Id.mp3      1400189
Fichier récupéré       --------      ------------      -------      # non détecté par Photorec
Fichier d'origine      13885440      Doom\On The Hunt.mp3      674408
Fichier récupéré       13885440      f0027120.mp3      674408      # correct
Fichier d'origine      14561280      Doom\Sign of Evil.mp3      1373653
Fichier récupéré       14561280      f0028440.mp3      1373653      # correct

User avatar
cgrenier
Site Admin
Posts: 5432
Joined: 18 Feb 2012, 15:08
Location: Le Perreux Sur Marne, France
Contact:

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#6 Post by cgrenier »

Bonjour

Merci pour l'archive avec cet extrait de disque. L'appareil photo DSC-W610 genère des jpg utilisant le Multiple Picture Format (MPF).
Plusieurs jpg ont été édités avec Microsoft Windows Photo Viewer. Il y a un bug dans cette version provoquant la conservation des informations MPF mais la suppression des images suivantes:

Code: Select all

$ for file in recup_dir.1/f*.jpg; do echo $file; exiftool $file|grep -E "(Warning|Creator|^Camera|^MPF)"; done
recup_dir.1/f0000000.jpg
Camera Model Name               : DSC-W610
MPF Version                     : 0100
recup_dir.1/f0008632.jpg
Camera Model Name               : DSC-W610
Warning                         : [minor] Possibly incorrect maker notes offsets (fix by 4186?)
MPF Version                     : 0100
Creator Tool                    : Microsoft Windows Photo Viewer 6.1.7600.16385
recup_dir.1/f0015600.jpg
Camera Model Name               : DSC-W610
Warning                         : [minor] Possibly incorrect maker notes offsets (fix by 4186?)
MPF Version                     : 0100
Creator Tool                    : Microsoft Windows Photo Viewer 6.1.7600.16385
recup_dir.1/f0023336.jpg
Camera Model Name               : DSC-W610
Warning                         : [minor] Possibly incorrect maker notes offsets (fix by 2066?)
recup_dir.1/f0023560.jpg
Camera Model Name               : DSC-W610
Warning                         : [minor] Possibly incorrect maker notes offsets (fix by 4186?)
MPF Version                     : 0100
Creator Tool                    : Microsoft Windows Photo Viewer 6.1.7600.16385
recup_dir.1/f0031536.jpg
Camera Model Name               : COOLPIX S9200
Creator Tool                    : Microsoft Windows Photo Viewer 6.3.9600.16384
recup_dir.1/f0043800.jpg
Camera Model Name               : COOLPIX S9200
Creator Tool                    : Microsoft Windows Photo Viewer 6.3.9600.16384
recup_dir.1/f0057112.jpg
Camera Model Name               : COOLPIX S9200
Creator Tool                    : Microsoft Windows Photo Viewer 6.3.9600.16384
Je suis en train de mettre en ligne une nouvelle version de PhotoRec 7.2-WIP vérifiant la présence d'un entête jpg pour les jpg décrites dans l'entête MPF et en cas d'absence, tronquant le fichier au premier jpg.

BitterColdSoul
Posts: 50
Joined: 07 Jun 2020, 20:38
Location: France

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#7 Post by BitterColdSoul »

Plusieurs jpg ont été édités avec Microsoft Windows Photo Viewer. Il y a un bug dans cette version provoquant la conversation des informations MPF mais la suppression des images suivantes:
Merci pour ce retour rapide. Il faut lire ici “conservation” je présume ? Ce sont donc des fichiers intégrant normalement plusieurs versions d'une même image, avec un nouvel en-tête JPG pour chaque ?
Pour ce qui est de l'édition par Windows Photo Viewer, il est probable que cela arrive quand un utilisateur, généralement néophyte, fait pivoter les images prises en orientation “portrait” avec la visionneuse de base, d'ailleurs il semble (à vérifier) que les fichiers précédant les fichiers manqués soient tous en orientation “portrait”.
Il y a un cas étrange cependant où, sur la même partition du même disque dur de 3To en parfait état de fonctionnement, un même fichier JPEG (DSC_2941.jpg), suivi et précédé des mêmes fichiers JPEG (DSC_2940.jpg et DSC_2943.jpg), tous trois strictement identiques et présents en deux endroits de la partition dans le même ordre, a dans un cas été extrait correctement (bien que considéré “broken”, extrait sous le nom b3064832624.jpg) et dans l'autre n'a pas été extrait. Si j'extrais une image partielle du début du fichier n-1 (soit DSC_2940.jpg) jusqu'à la fin du fichier n+1 (DSC_2943.jpg), à ces deux emplacements, les deux fichiers obtenus (1569328525312-1569332203519 et 2075817197568-2075820875775) sont pourtant strictement identiques (vérifié par somme de contrôle).

Code: Select all

  <creator>
    <package>PhotoRec</package>
    <version>7.1-WIP</version>
    <build_environment>
      <compiler>GCC 5.4, Cygwin32 2005.2</compiler>
      <library name='libext2fs' version='1.43.1'/>
      <library name='libewf' version='20140608'/>
      <library name='libjpeg' version='libjpeg-turbo-1.5.0'/>
      <library name='libntfs' version='10:0:0'/>
      <library name='zlib' version='1.2.8'/>
    </build_environment>
    <execution_environment>
      <os_sysname>Windows</os_sysname>
      <os_release>Windows 7 (7601) SP1</os_release>
      <os_version>Windows 7 (7601) SP1</os_version>
      ...
    </execution_environment>
  </creator>

...

[1569328525312-1569332203519]
  <fileobject>
    <filename>/cygdrive/k/TestDisk/recup_dir.86/b3064830584.jpg</filename> = DSC_2940.jpg
    <filesize>1044480</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='1569328525312' len='1044480'/>
    </byte_runs>
  </fileobject>
  <fileobject>
    <filename>/cygdrive/k/TestDisk/recup_dir.86/b3064832624.jpg</filename> = DSC_2941.jpg
    <filesize>1027072</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='1569329569792' len='1027072'/>
    </byte_runs>
  </fileobject>
  <fileobject>
    <filename>/cygdrive/k/TestDisk/recup_dir.86/b3064834632.jpg</filename> = DSC_2943.jpg
    <filesize>1605632</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='1569330597888' len='1605632'/>
    </byte_runs>
  </fileobject>
  <fileobject>
    <filename>/cygdrive/k/TestDisk/recup_dir.86/b3064837768.jpg</filename> = DSC_3289.jpg
    <filesize>1072640</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='1569332203520' len='1072640'/>
    </byte_runs>
  </fileobject>

...

[2075817197568-2075820875775]
  <fileobject>
    <filename>/cygdrive/k/TestDisk/recup_dir.90/b4054066272.jpg</filename> = DSC_2940.jpg
    <filesize>1044480</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='2075817197568' len='1044480'/>
    </byte_runs>
  </fileobject>
  <fileobject>
    <filename>/cygdrive/k/TestDisk/recup_dir.90/b4054070320.jpg</filename> = DSC_2943.jpg
    <filesize>1605632</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='2075819270144' len='1605632'/>
    </byte_runs>
  </fileobject>
  <fileobject>
    <filename>/cygdrive/k/TestDisk/recup_dir.90/b4054073456.jpg</filename> = DSC_3289.jpg
    <filesize>1072640</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='2075820875776' len='1072640'/>
    </byte_runs>
  </fileobject>

...
Si je fais un test avec la version la plus récente, en toute logique le résultat sera exactement le même avec deux images partielles strictement identiques (et je ne vais pas refaire une analyse de la totalité de ce disque dur pour tester le comportement de Photorec avec un fichier...). Mais je viens de lancer une analyse de ce tout petit fichier (2075817197568-2075820875775[*] / 3,5Mo) : l'utilisation CPU grimpe à 13% (soit saturation d'un “cœur” virtuel sur un Intel i7 6700K) et aucun fichier n'a été extrait après plus de 10 minutes, avec un “estimated time to completion” d'1h17 ! (Pour mes tests d'hier sur des fichiers de 11 à 35Mo le traitement était quasi instantané.) Et impossible de l'arrêter avec le bouton “Stop”, obligé de terminer le processus... (Options : “Paranoid : Yes (Brute force disabled) / Keep corrupted files : No / Expert mode : No / Low memory : No”) Deuxième essai : idem. Clairement il y a un souci.
Et le fichier report.xml reste vide, ce qui n'aide pas pour le diagnostic. Mais voici un extrait d'un fichier report.xml créé lors d'un test d'hier :

Code: Select all

  <creator>
    <package>PhotoRec</package>
    <version>7.2-WIP</version>
    <build_environment>
      <compiler>GCC 9.3, Cygwin32 3001.4</compiler>
      <library name='libext2fs' version='1.45.3'/>
      <library name='libewf' version='20140608'/>
      <library name='libjpeg' version='libjpeg-turbo-1.5.3'/>
      <library name='libntfs' version='10:0:0'/>
      <library name='zlib' version='1.2.11'/>
    </build_environment>
    <execution_environment>
      <os_sysname>Windows</os_sysname>
      <os_release>Windows 7 (7601) SP1</os_release>
      <os_version>Windows 7 (7601) SP1</os_version>
      <host>...</host>
      <arch>i686</arch>
      <uid>197608</uid>
      <start_time>2020-10-10T12:46:35+0200</start_time>
    </execution_environment>
  </creator>
Le fichier image en question (3,5Mo), contenant 3 fichiers JPEG :
http://www.mediafire.com/file/y9sy7t88r6dtl38

Code: Select all

00000000      DSC_2940.jpg      1044423
01044480      DSC_2941.jpg      1026629
02072576      DSC_2943.jpg      1605440


[*] J'ai quand même fait le test par acquit de conscience : le résultat est bien évidemment le même avec le fichier 1569328525312-1569332203519.
Last edited by BitterColdSoul on 11 Oct 2020, 08:13, edited 1 time in total.

BitterColdSoul
Posts: 50
Joined: 07 Jun 2020, 20:38
Location: France

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#8 Post by BitterColdSoul »

J'ajoute donc quelques autres extraits / images partielles, correspondant à l'autre problème évoqué dans le premier message, à savoir des fichiers dont seule une miniature a été extraite, le fichier étant pourtant nommé selon le schéma de nommage général des fichiers et non celui spécifique aux images miniatures (f0012345.jpg et non t0012345.jpg). Je dois prévenir que la plupart des photos / images incluses sont clairement “NSFW” comme on dit, voire carrément dégueu pour certaines... (je décline toute responsabilité, ce n'étaient pas mes données !) ; mais ceci ne devrait point influer sur l'analyse strictement technique de ces anomalies.

1402879729664-1402880765951

Code: Select all

Fichier d'origine      00000000      Kristin%20Kreuk010_01~1.jpg      477029
Fichier PR 7.2 WIP     00000000      f0000000.jpg      477029      # correct
Fichier d'origine      00479232      Kristin%20Kreuk__S3b_10-04.08..jpg      222803
Fichier PR 7.2 WIP     00486400      f0000950.jpg      5412       # image entière non extraite, seulement miniature
Fichier d'origine      00704512      Kristin%20Kreuk__S3b_50-02_10_.jpg      331349
Fichier PR 7.2 WIP     00704512      f0001376.jpg      331349      # correct
1402458038272-1402460598271

Code: Select all

Fichier d'origine      00000000      60263_ThMichelleTrachtenberg002_122_198lo.jpg      553305      # correct
Fichier PR 7.2 WIP     00000000      f0000000.jpg      544469
Fichier d'origine      00557056      62303_IZb49_e352c580479a0d39153b88647f407fa2_123_600lo.jpg      1086466
Fichier PR 7.2 WIP     00566272      f0001106.jpg      7362       # image entière non extraite, seulement miniature
Fichier d'origine      01646592      64721_psycho_michelle_003_123_336lo.jpg      912484
Fichier PR 7.2 WIP     01646592      f0003216.jpg      912484      # correct
1392909066240-1392910499839

Code: Select all

Fichier d'origine      00000000      016.jpg      519620
Fichier PR 7.2 WIP     00000000      f0000000.jpg      519620      # correct
Fichier d'origine      00520192      017.jpg      452954
Fichier PR 7.2 WIP     00530432      f0001036.jpg 8684       # image entière non extraite, seulement miniature
Fichier d'origine      00974848      018.jpg      457731
Fichier PR 7.2 WIP     00974848      f0001904.jpg     457731      # correct
Pour le groupe ci-dessous, Photorec 7.2 WIP a extrait correctement la deuxième image, contrairement à Photorec 7.1 WIP.
823815950336-823821320191

Code: Select all

Fichier d'origine      00000000      femjoy_5055363_015.jpg      1899304
Fichier PR 7.2 WIP     00000000      f0000000.jpg      1899304      # correct
Fichier PR 7.1 WIP     00000000      f0000000.jpg      1899304      # correct
Fichier d'origine      01900544      femjoy_5055363_016.jpg      1724810
Fichier PR 7.2 WIP     01900544      f0003712.jpg      1724810      # correct
Fichier PR 7.2 WIP     01909248      f0003729.jpg      5034       # image entière non extraite, seulement miniature
Fichier d'origine      03633152      femjoy_5055363_017.jpg      1733033
Fichier PR 7.2 WIP     03633152      f0007096.jpg      1733033      # correct
Fichier PR 7.2 WIP     03633152      f0007096.jpg      1733033      # correct
Et pour ce dernier groupe, les deux versions ont correctement extrait les trois fichiers, alors que lors de la récupération initiale sur l'ensemble du disque dur, Photorec 7.1 WIP (très probablement la même version exactement, je n'avais téléchargé qu'une version de ce nom) avait loupé le fichier .gif[*] ; je transmets quand même, à toute fin utile, ou inutile...
1402383114240-1402391822335

Code: Select all

Fichier d'origine      00000000      f0000000.jpg      150337      104027265_10.jpg      150337
Fichier PR 7.2 & 7.1   00000000      f0000000.jpg      150337      104027265_10.jpg      150337      # correct
Fichier d'origine      00151552      f0000296.gif      8032705      1040462733.gif      8032705
Fichier PR 7.2 & 7.1   00151552      f0000296.gif      8032705      1040462733.gif      8032705      # correct / n'avait pas été détecté lors de l'analyse initiale sur le disque dur entier avec PR 7.1 WIP
Fichier d'origine      08187904      f0015992.jpg      518558      1093109054.jpg      518558
Fichier PR 7.2 & 7.1   08187904      f0015992.jpg      518558      1093109054.jpg      518558      # correct


[*] La détection des fichiers GIF était bien activée puisque j'ai eu lors de la même analyse des fichiers vidéo valides et contigus tronqués à cause de signatures GIF contenues dans ceux-ci :

Code: Select all

  <fileobject>
    <filename>f704461528.gif</filename>
    <filesize>3173</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='360819568640' len='3584'/> => fichier GIF correspondant à un logo intégré dans le MKV
    </byte_runs>
  </fileobject>
  <fileobject>
    <filename>f704800296.mkv</filename>
    <filesize>173306832</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='360993017856' len='173306880'/>
    </byte_runs>
  </fileobject>
  <fileobject>
    <filename>f704461504.mkv</filename>
    <filesize>173460277</filesize>
    <byte_runs>
      <byte_run offset='0' img_offset='360819556352' len='12288'/> => fichier MKV interrompu à 12288 à cause du fichier GIF détecté à 360819568640
      <byte_run offset='12288' img_offset='360819572224' len='173445632'/> => fragment suivant décalé, donc fichier résultant illisible
      <byte_run offset='173457920' img_offset='361166324736' len='2560'/>
    </byte_runs>
  </fileobject>
J'ai dû pour cela refaire une analyse en activant seulement la détection des fichiers MKV, MP4, WMV, AVI et ISO, vu que le logiciel utilisé pour le “gros” de cette récupération, à savoir R-Studio, en analyse “brute” par recherche de signatures, détectait très mal les MKV (ça s'est nettement amélioré depuis), parfois mal les AVI (ça c'est encore le cas avec les plus récentes versions), pas du tout les ISO (d'autres types d'images de volumes sont disponibles mais point celui-ci), tandis que ce disque dur comportait de nombreux WMV fragmentés pour lesquels l'un ou l'autre logiciel donnait un meilleur résultat au cas par cas (pour certains Photorec coupait pile à la fin du fragment valide et R-Studio ajoutait un fragment étranger à la suite, pour d'autres c'était le contraire, ou alors Photorec détectait bien la fin du fragment valide mais tentait de trouver ailleurs le ou les fragment(s) complémentaire(s), échouant à chaque fois et ajoutant donc un morceau inutile, car sur un DD de 3To où les fragments peuvent aller se mettre à peu près n'importe où -- parfois 1To plus loin, parfois même avant le début du fichier -- il est quasiment impossible de faire un assemblage correct, à moins d'avoir un algorithme d'analyse suffisamment précis pour déterminer, selon le type de fichier et selon le contenu de la fin du fragment N, à quoi doit ressembler le début du fragment N+1, ce qui doit être d'une effroyable complexité...) ; j'avais également désactivé la détection des MPG, car d'une part des signatures MPG se trouvaient dans certains fichiers ISO d'après la première analyse, empêchant leur extraction complète, et d'autre part c'est un type de fichier pour lequel la détection brute produit généralement de piètres résultats, vraisemblablement du fait que l'on trouve de multiples structures d'en-tête au sein d'un même fichier, et donc on peut avoir des dizaines voire des centaines de petits fichiers extraits pour chaque fichier valide et contigu d'origine -- c'est encore le cas avec R-Studio, Photorec s'en sort globalement beaucoup mieux mais les cafouillages restent nombreux (idem pour les fichiers MTS / M2TS qui ont la même particularité).

EDIT : En fait après vérification, dans l'exemple ci-dessus il ne s'agit pas d'une fausse signature GIF (cela arrive aussi mais plus souvent avec les JPG et MP3), mais d'un fichier GIF valide intégré dans le fichier MKV. On peut d'ailleurs trouver toutes sortes de fichiers dans un MKV : JPG, GIF, SRT, TTF... j'ai même déjà vu un MKV intégrant la B.O. d'un film sous forme de fichiers audio dans une archive ZIP ou RAR. Ce qui doit évidemment poser problème pour la récupération de tels fichiers par recherche de signatures.

User avatar
cgrenier
Site Admin
Posts: 5432
Joined: 18 Feb 2012, 15:08
Location: Le Perreux Sur Marne, France
Contact:

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#9 Post by cgrenier »

Je viens de tester le fichier "2075817197568-2075820875775" avec la dernière version 7.2-WIP sous Linux.

Code: Select all

[kmaster@adsl 20201011]$ time /home/kmaster/src/testdisk/src/photorec /debug /log /d recup_dir /cmd 2075817197568-2075820875775 options,keep_corrupted_file,search
PhotoRec 7.2-WIP, Data Recovery Utility, October 2020
Christophe GRENIER <grenier@cgsecurity.org>
https://www.cgsecurity.org

real	0m0.082s
user	0m0.032s
sys	0m0.024s
[kmaster@adsl 20201011]$ ls -l recup_dir.1/
total 3624
-rw-rw-r--. 1 kmaster kmaster 1044480 Dec 13  1901 b0000000.jpg
-rw-rw-r--. 1 kmaster kmaster 1028096 Dec 13  1901 b0002040.jpg
-rw-rw-r--. 1 kmaster kmaster 1605632 Jul 23  2014 b0004048.jpg
-rw-rw-r--. 1 kmaster kmaster    2087 Oct 11 09:23 report.xml
-rw-rw-r--. 1 kmaster kmaster    4418 Dec 13  1901 t0000000.jpg
-rw-rw-r--. 1 kmaster kmaster    4222 Dec 13  1901 t0002040.jpg
-rw-rw-r--. 1 kmaster kmaster    8360 Jul 23  2014 t0004048.jpg
[kmaster@adsl 20201011]$ exiftool -v -v recup_dir.2/b0000000.jpg|grep Warning
  | Warning = Tag ID 0x0112 Orientation out of sequence in IFD0
  | Warning = Tag ID 0x0110 Model out of sequence in IFD0
  | Warning = Tag ID 0x0101 ImageHeight out of sequence in IFD0
  | Warning = Tag ID 0x9209 Flash out of sequence in IFD0
  | Warning = Tag ID 0x9208 LightSource out of sequence in IFD0
  | Warning = Tag ID 0x0132 ModifyDate out of sequence in IFD0
  | Warning = Tag ID 0x0100 ImageWidth out of sequence in IFD0
Le test a duré moins de 0.1s. Les fichiers "broken" ont des informations exif ne respectant un ordre croissant des TAG et au niveau de la miniature, il y a aussi une corruption:

Code: Select all

jpeg: Corrupt JPEG data: 24 extraneous bytes before marker 0xd9
Pour le coup, je n'arrive pas à reproduire le problème de consommation CPU excessif et je confirme que les jpg sont bien corrompus.

User avatar
cgrenier
Site Admin
Posts: 5432
Joined: 18 Feb 2012, 15:08
Location: Le Perreux Sur Marne, France
Contact:

Re: Photorec échoue à récupérer certains fichiers JPG (valides et contigus)

#10 Post by cgrenier »

BitterColdSoul wrote: 10 Oct 2020, 11:41 Tant que j'y suis, j'ai aussi constaté que certains fichiers WMA n'étaient pas détectés. Une autre petite image extraite (11Mo) contenant :
– 1 fichier MP3 correctement détecté,
– 4 fichiers WMA non détectés (j'ai bien activé le type “ASF, WMA, WMV” dans “File opt.”),
– 1 fichier “Thumbs.db” faussement identifié comme “.doc” (ce qui est systématique).
Ces 2 problèmes sont corrigés:
https://github.com/cgsecurity/testdisk/ ... ce08b45aab
https://github.com/cgsecurity/testdisk/ ... ad516848dd

Locked