Differences

This shows you the differences between two versions of the page.

Link to this comparison view

unix:dd_et_recuperation_de_donnees [2010/01/12 13:29] (current)
Line 1: Line 1:
 +====== Sauver les photos de tonton Jean-Mi avec dd. ======
 +
 +Tonton Jean-Mi a remporté le championnat du monde de jokari fin Decembre. Malheureusement pour lui les seules preuves de cet exploit se retrouvent sur une carte compaq flash fabriquée en 1990 et ayant servi de /home d'un venerable serveur hotmail de 1994 a 1997...(je ne poursuivrais pas cette histoire tragique)\\
 +
 +
 +
 +
 +== 1. l'Etat des lieux ==
 +
 +dmesg dit:\\
 +<​code>​
 +wdc2 at pcmcia1 function 0 "​SAMSUNG,​ Rev 1.15, " port 0xa040/16
 +wd1 at wdc2 channel 0 drive 0: <SAMSUNG CF/ATA>
 +wd1: 4-sector PIO, LBA, 61MB, 125952 sectors
 +wd1(wdc2:​0:​0):​ using BIOS timings
 +</​code>​
 +la CF s'​appellera sur mon OpenBSD wd1\\
 +
 +on va essayer d'en savoir un peu plus:\\
 +<​code>​
 +$ sudo fdisk wd1
 +fdisk: sysctl(machdep.bios.diskinfo):​ Device not configured
 +Disk: wd1       ​geometry:​ 246/16/32 [125952 Sectors]
 +Offset: 0       ​Signature:​ 0xAA55
 +         ​Starting ​      ​Ending ​      LBA Info:
 + #: id    C   ​H ​ S -    C   ​H ​ S [       ​start: ​     size   ]
 +------------------------------------------------------------------------
 +*0: 06    0   ​1 ​ 1 -  244  15 32 [          32:      125408 ] DOS > 32MB
 + 1: 00    0   ​0 ​ 0 -    0   ​0 ​ 0 [           ​0: ​          0 ] unused
 + 2: 00    0   ​0 ​ 0 -    0   ​0 ​ 0 [           ​0: ​          0 ] unused
 + 3: 00    0   ​0 ​ 0 -    0   ​0 ​ 0 [           ​0: ​          0 ] unused
 +</​code>​
 + ​.oO(bon signe deja on peut voir une partition FAT: ce n'est pas qu'une brique)\\
 +
 +
 +on tente le diable:
 +<​code>​
 +$ sudo mount /dev/wd1i /mnt
 +mount_msdos:​ /dev/wd1i on /mnt: Input/​output error
 +</​code>​
 +et dmesg dit alors:
 +<​code>​
 +wd1i:  aborted command reading fsbn 0 (wd1 bn 32; cn 0 tn 1 sn 0), retrying
 +wd1i:  aborted command reading fsbn 0 (wd1 bn 32; cn 0 tn 1 sn 0), retrying
 +wd1i:  !#​%@!#​%DTC%!#​%!
 +wd1i:  aborted command reading fsbn 0 (wd1 bn 32; cn 0 tn 1 sn 0)
 +</​code>​
 + 
 +.oO(c'​est un peu pour ca que tonton nous l'a confiée)
 +
 +revenons en arriere:\\
 +<​code>​
 +$ sudo fdisk wd1
 +fdisk: sysctl(machdep.bios.diskinfo):​ Device not configured
 +Disk: wd1       ​geometry:​ 246/16/32 [125952 Sectors]
 +Offset: 0       ​Signature:​ 0xAA55
 +         ​Starting ​      ​Ending ​      LBA Info:
 + #: id    C   ​H ​ S -    C   ​H ​ S [       ​start: ​     size   ]
 +------------------------------------------------------------------------
 +*0: 06    0   ​1 ​ 1 -  244  15 32 [          32:      125408 ] DOS > 32MB
 + 1: 00    0   ​0 ​ 0 -    0   ​0 ​ 0 [           ​0: ​          0 ] unused
 + 2: 00    0   ​0 ​ 0 -    0   ​0 ​ 0 [           ​0: ​          0 ] unused
 + 3: 00    0   ​0 ​ 0 -    0   ​0 ​ 0 [           ​0: ​          0 ] unused
 +</​code>​
 +
 +pour resumer cette compaq flash possede une capacite d'​environ 64MB (du secteur 0 a 125952) le tout est quasi totalement occupé logiquement par une partition unique wd1i (du secteur 32 a 125408) qui refuse d'etre montee conventionnelement.\\
 +
 +
 +== 2. Jouons avec dd ==
 +
 +<​code>​
 +$ sudo dd if=/​dev/​wd1c of=imagedtc
 +dd: /dev/wd1c: Input/​output error
 +32+0 records in
 +32+0 records out
 +16384 bytes transferred in 5.276 secs (3105 bytes/sec)
 +</​code>​
 +
 +.oO(*protch* on remarque tout de meme qu'il a pu lire les 32 premiers secteurs)\\
 +
 +**Round1: secteurs 0->32 ok, secteur 33 dead**\\
 +
 +il y a peu de chance de trouver une preuve dans les 32 premiers secteurs d'une CF...\\
 +
 +
 +On tatonne avec l'​option skip de dd pour sauter cet obstacle et on garde espoir:\\
 +<​code>​
 +$ sudo dd skip=48 if=/​dev/​wd1c of=imagecf
 +dd: /dev/wd1c: Input/​output error
 +0+0 records in
 +0+0 records out
 +0 bytes transferred in 2.623 secs (0 bytes/sec)
 +</​code>​
 +.oO(bouhouhou ca part mal tout doit etre foutu derriere on va tous crever ici..)
 +
 +**Round2: secteur 33->48 dead**
 +
 +Allons on ne perd pas espoir il y en a pleins des secteurs !\\
 +
 +<​code>​
 +$ sudo dd skip=64 if=/​dev/​wd1c of=imagecf
 +dd: /dev/wd1c: Input/​output error
 +35808+0 records in
 +35808+0 records out
 +18333696 bytes transferred in 21.953 secs (835100 bytes/sec)
 +</​code>​
 +
 +.oO(mais que vois-je ??? le disque s'​illumine...il reste de la vie par contre il se *protch* a nouveau au secteur 35873)\\
 +
 +**Round3: secteurs 65->​35872 ok**\\
 +et on n'​oublie pas de mettre immediatement de cote l'​image recuperee au cas ou...\\
 +
 +On tatonne de nouveau avec l'​option skip de dd :\\
 +<​code>​
 +$ sudo dd skip=35888 if=/​dev/​wd1c of=imagecf2
 +dd: /dev/wd1c: Input/​output error
 +0+0 records in
 +0+0 records out
 +0 bytes transferred in 2.622 secs (0 bytes/sec)
 +</​code>​
 +
 +.oO(bouhou)
 +
 +<​code>​
 +$ sudo dd skip=35904 if=/​dev/​wd1c of=imagecf2
 +dd: /dev/wd1c: Input/​output error
 +90048+0 records in
 +90048+0 records out
 +46104576 bytes transferred in 47.314 secs (974431 bytes/sec)
 +</​code>​
 +
 +.oO(victoire et on arrive jusqu'​a la fin de la CF: le secteur 125952 ce qui explique ici le message d'​erreur)\\
 +note: on aurait pu eviter le message d'​erreur en precisant -count=90048
 +
 +**Round 4: secteurs 35904 -> 125952 ok**\\
 +
 +On avait donc une CF de 125952 secteurs avec les secteurs de 33 a 64 et de 35873 a 35904 defectueux et on se retrouve avec 2 fichiers images de respectivement 17,5MB et 44M.\\
 +
 +**CF pwned**
 +
 +
 +== 3. recuperer les images avec du C et un amis ==
 +
 +
 +on recupere ces petites lignes que l'on compile:\\
 +http://​www.cs.washington.edu/​homes/​oskin/​saveimg.html \\
 +et on l'​utilise avec les 2 fichiers que l'on vient de recuperer.
 +
 +.oO(et on imagine l'air gené de tonton quand on va lui dire qu'il n'y avait pas que des images de jokari sur la CF.)
 +
  
unix/dd_et_recuperation_de_donnees.txt · Last modified: 2010/01/12 13:29 (external edit)