^L^ Benutzer

Anmeldungsdatum: 10.08.2005 Beiträge: 485 Wohnort: wien.at
|
Verfasst am: Mi. 17-Aug-2005 (9:23) Titel: h2cdimage + DaRes -> Datenrettung für CDs & DVDs |
|
|
| Zitat: | H2cdimage
DD: 300KB - Jul 2005 - Standalone
HP: http://www.heise.de/ct/05/16/links/078.shtml
DL: ftp://ftp.heise.de/pub/ct/ctsi/h2cdimage.zip
| Zitat: | H2cdimage -- by Harald Bögeholz / c't Magazin für Computertechnik
Version 1.8, Copyright (C) 2005 Heise Zeitschriften Verlag GmbH & Co. KG
========================================================================
H2cdimage ist für die Datenrettung von beschädigten CDs oder DVDs
gedacht. Es erzeugt ein sektorweises Image einer CD oder DVD in einer
Datei mit der Endung .iso. In einer weiteren Datei mit der Endung .h2i
merkt es sich, welche Sektoren des Datenträgers es bisher erfolgreich
lesen konnte.
Empfehlungen zum richtigen Einsatz von H2cdimage sowie Erklärungen zu
der Frage, wie man denn anschließend die geretteten Dateien wieder aus
der Image-Datei extrahiert stehen im Artikel "Silberpuzzle, Daten von
beschädigten CDs und DVDs retten" in c't 16/05, S. 78.
ACHTUNG: In der derzeitigen Version unterstützt H2cdimage nur
Datenträger mit 2048-Byte-Sektoren. Mit Audio-CDs und (S)VCDs kann es
nicht umgehen.
Systemvoraussetzungen
---------------------
H2cdimage ist ein Kommandozeilenprogramm für Win32 und sollte unter
allen 32-bittigen Windows-Versionen laufen. Getestet wurde es
hauptsächlich unter Windows XP und stichprobenartig unter Windows 98.
Unter Windows XP und den anderen NT-Abkömmlingen erfordert das
Programm Administratorrechte.
H2cdimage greift über ASPI auf das Laufwerk zu und benötigt dazu die
Datei Wnaspi32.dll. Wir liefern im Zip-Archiv von H2cdimage mit
freundlicher Genehmigung der Nero AG deren Wnaspi32.dll in Version
2.0.1.74 mit. Sie muss im gleichen Verzeichnis liegen wie
H2cdimage.exe und darf _nicht_ in einen Systemordner kopiert werden.
Bitte beachten Sie die Nutzungsbedingungen der Nero AG unter
http://www.nero.com/deu/WNASPI32.DLL.html.
Das FAT-Dateisystem begrenzt Dateien auf eine Größe von 4 GByte. Um
eine mit mehr als 4 GByte gefüllte DVD einzulesen, ist daher NTFS
erforderlich.
Aufruf
------
Rufen Sie H2cdimage auf der Kommandozeile wie folgt auf:
h2cdimage <a>:<t>:<l> <filename> [-i]
<filename> ersetzen Sie durch den gewünschten Dateinamen ohne
Erweiterung. H2cdimage arbeitet dann mit den beiden Dateien
<filename>.iso (Image) und <filename>.h2i. Beim ersten Aufruf muss die
Option -i zum Anlegen dieser Dateien angegeben werden; ohne sie
ergänzt H2cdimage ein bestehendes Image.
Die Zahlen <a>, <t> und <l> adressieren das Laufwerk, und zwar (auch
bei IDE-Laufwerken) als SCSI-Gerät: <a> steht für die Nummer des
Adapters, <t> für die SCSI-ID und <l> für die LUN (Logical Unit
Number, eine Unternummerierung innerhalb des Geräts; gabs mal bei
CD-Wechslern). Welche Adresse richtig ist, findet man am einfachsten
durch Probieren heraus. Bei einem Aufruf von H2cdimage ohne Parameter
sollte zwischen Copyright-Meldung und Hilfetext eine Zeile wie
ASPI geladen. Anzahl der Adapter: 3
erscheinen. Im Beispiel wurden 3 (virtuelle) SCSI-Adapter gefunden,
die über die Nummern 0 bis 2 angesprochen werden. In der Regel taucht
an der ASPI-Schnittstelle jeder IDE-Kanal sowie jeder SCSI-Hostadapter
als ein Adapter auf. Bei IDE-Geräten hat der Master die ID 0, der
Slave die ID 1, die LUN ist jeweils 0.
In einem System mit zwei IDE-Kanälen und ohne SCSI-Adapter gelten
damit die folgenden Adressen:
0:0:0 - Master am primären Kanal
0:1:0 - Slave am primären Kanal
1:0:0 - Master am sekundären Kanal
1:1:0 - Slave am sekundären Kanal
Bei korrektem Aufruf zeigt H2cdimage den Namen des gefundenen
Laufwerks im Klartext an, sodass man das richtige im Zweifelsfalle
durch Probieren findet (am besten mit einer intakten CD oder DVD
testen).
Dateiformate
------------
H2cdimage erzeugt zwei Dateien. Die .iso-Datei enthält ein
sektorweises Abbild des kompletten Datenträgers ohne irgendwelche
Header oder sonstigen Verwaltungsinformationen. Sektoren, die (noch)
nicht vom Medium gelesen werden konnten, sind im Image mit dem
Hex-Wert 0xB0 gefüllt. Eine vollständige .iso-Datei lässt sich mit
gängigen Brennprogrammen 1:1 auf ein neues Medium brennen oder mit
Programmen wie den Daemon Tools als virtuelles Laufwerk ins System
einbinden.
Die .h2i-Datei enthält für jeden Sektor der Image-Datei ein Byte, das
aussagt, ob dieser Sektor erfolgreich gelesen wurde. Byte 0 gehört zu
Sektor 0 des Image, Byte 1 zu Sektor 1 und so weiter. Das Zeichen '_'
bedeutet, dass der zugehörige Sektor noch nicht gelesen wurde, jedes
andere Zeichen bedeutet, dass der Sektor gültige Daten enthält.
In den erfolgreich gelesenen Bereichen nutzt H2cdimage die Flag-Bytes,
um fortlaufend die Sektornummern im Klartext anzugeben. Eine
.h2i-Datei beginnt also so:
0*********10********20********30********40********50********60** ...
und ein Bereich, in dem vereinzelte Lesefehler aufgetreten sind,
könnte beispielsweise so aussehen:
_____7090*****27100*_***27110**_**27120***_*27130*****27140***** ...
Indem man eine .h2i-Datei in einen Editor seiner Wahl lädt (von den
Windows-Bordmitteln ist Wordpad zu empfehlen; Notepad stellt sich
dusselig an), kann man so mit bloßem Auge die Nummern der fehlerhaften
Sektoren abzählen. Im Beispiel ist (unter anderem) der Sektor 27106
fehlerhaft.
WICHTIG:
Die aktuelle Version unterstützt nur Datenträger mit 2048 Byte - Sektoren.
Mit Audio-CDs und (S)VCDs kann es (noch) nicht umgehen.
________________________________________________________________________________________________ |
|
Ergänzendes Tool...
| Zitat: | Dares DAta REScue für Windows
DD: 1.4 MB - Jul 2005 - Standalone
HP: http://www.heise.de/ct/05/16/links/078.shtml
DL: ftp://ftp.heise.de/pub/ct/ctsi/dares.zip
| Zitat: | Wie es arbeitet
----------------
Wie jedes Dateisystem enthält das CD- und DVD-Dateisystem ISO
9660 neben Dateien Metainformationen, die beschreiben, wo auf dem
Datenträger eine Datei gespeichert ist. Sind diese
Verwaltungsstrukturen beispielsweise durch einen kleinen Kratzer
beschädigt, sieht das Betriebssystem keine Dateien mehr, obwohl
noch alle Daten vorhanden sein können. Das ist ungefähr so, als
hätte man seine Schätze im Wald vergraben und dann den Lageplan
verbummelt: Weil ein kleines Stück Papier fehlt, ist alles
verloren -- es sei denn, man gräbt den ganzen Wald um.
Dares tut genau das und kratzt alle auffindbaren Dateien von
einem beliebig kaputtem CD- oder DVD-Image oder Datenträger. Nach
Verwaltungsinformationen sucht Dares gar nicht erst; stattdessen
scannt es das Image systematisch von Anfang bis Ende und prüft,
ob irgendwo eine Datei beginnt. Dazu bedient es sich der
Magic-Library, die auch das Unix-Programm file zur Bestimmung des
Dateityps nutzt. File schließt anhand des Anfangs einer Datei auf
deren Inhalt und nutzt dazu so genannte "magic numbers", typische
Kennbytes zu Beginn einer Datei.
Zwei Eigenschaften von ISO-9660 machen das Graben nach den Daten
recht erfolgversprechend. Zum einen beginnen Dateien immer am
Start eines Sektors: Man muss nur alle 2048 Bytes testen, ob hier
eine Datei beginnt. Zum anderen kennt ISO-9660 keine
Fragmentierung: Ist eine Datei größer als die 2**KByte
Sektorgröße, belegt sie entsprechend mehr aufeinanderfolgende
Sektoren. Schwieriger ist es, das Ende einer Datei zu erkennen.
Die naheliegende Idee, jeden weiteren Sektor darauf zu testen, ob
dort eine neue Datei beginnt, führt zu vielen Fehlerkennungen
(und damit unvollständigen Dateien): Bei über 1500 Dateitypen der
Magic-Bibliothek ist die Wahrscheinlichkeit, mitten in einer
Datei den vermeintlichen Anfang einer anderen Datei zu entdecken,
gar nicht so gering. Ein MS-DOS-Programm beispielsweise ist durch
ein "MZ" am Dateianfang gekennzeichnet; und diese Zeichenfolge
kann durchaus auch außerhalb eines DOS-Programms vorkommen, mit
ein bisschen Pech auch mal auf einem Sektoranfang.
Dares prüft daher jeden einer Datei zugeordneten Sektor darauf,
ob er das Ende der Datei enthalten könnte. Ausgangspunkt ist die
Überlegung, dass die Größe der wenigsten Dateien ein exaktes
Vielfaches von 2048 ist: Meist ist der letzte Sektor nicht
vollständig belegt. Bei ISO 9660 sind diese Sektoren mit Nullen
aufgefüllt. Endet ein Sektor also mit Nullen, spricht das für ein
Dateiende. Das Programm unterscheidet dabei zwischen Text- und
Binärdateien: In Textdateien kann kein Nullbyte vorkommen, in
Binärdaten schon. Entsprechend genügt bei Textdateien eine Null,
um auf das Dateiende zu erkennen, während bei einer Binärdatei
mehrere Nullen am Sektorende nötig sind, wobei zudem der nächste
Sektor nicht mit einem Nullbyte beginnen darf (das spricht eher
dafür, dass die Sektorgrenze zufällig in einem Block von
Nullbytes gelandet ist).
Wie man es benutzt
-------------------
Nach dem Auspacken des Archivs müssen sich die Dateien dares.exe,
hs_regex.dll, magic und magic.mime alle im selben Verzeichnis
befinden. Starten Sie nun dares.exe.
Starten Sie das Programm von der Kommandozeile aus, versteht es
die folgenden Kommandozeilenoptionen:
dares -i Image -s Verzeichnis [-h2i h2i-Datei] [-a] [-m]
[-l Log-Datei]
-i: CD-/DVD-Image oder CD-/DVD-Device
-s: Verzeichnis, in dem die geretteten Dateien gespeichert
werden
-h2i: h2i-Datei zum Image (erzeugt von H2cdimage)
-a: alle gefundenen Dateien ohne Rückfrage speichern
-m: Mime Types an Stelle einer ausführlichen Beschreibung
verwenden
-l: Log-Datei (Default: dares.log)
Beispiel: dares -i cdrom.image -s /tmp
Ansonsten erfragt Dares die nötigen Angaben in einer Dialogbox
nach dem Start.
Das Programm durchsucht zunächst das Image. Dieser Prozess kann
je nach Größe des Image mehrere Minuten dauern; Dares gibt in
dieser Zeit leider keine Fortschrittsmeldungen aus.
Nach Abschluss der Suche zeigt Dares einen Baum mit allen
gefundenen Dateien an, sortiert nach ihren Dateitypen. <text>
oder <bin> beim Dateityp gibt an, ob es sich um Textdateien
(HTML-Code, ASCII-Text, Skript und so weiter) oder um
Binärdateien (JPEG-Dateien, komprimierte Archive, Programme,
MS-Office-Dokumente etc.) handelt. In Klammern ist bei jedem
Dateityp angegeben, wie viele (vermutlich) heile Dateien und wie
viele Dateien insgesamt dieses Types gefunden wurden.
Unvollständig können Dateien beispielsweise sein, wenn Teile des
Datenträgers nicht gelesen werden konnten. Zudem steht bei jedem
Dateityp, wie viele Byte die Dateien dieses Typs insgesamt
belegen. Bei Auswahl einer Datei wird ihr Anfang im rechten Teil
des Fensters angezeigt, bei binären Dateitypen als Hexdump.
Die einzelnen Dateien sind sortiert nach der Nummer des
2-KByte-Blocks, auf dem sie beginnen. Über diese Blocknummer
lässt sie sich auch in der Log-Datei dares.log identifizieren,
die alle erkannten Dateien in der Reihenfolge nach Blocknummern
sortiert enthält.
Eine ausgewählte Datei lässt sich in Dares mit Strg-S oder über
das Kontextmenü sichern. Es ist es möglich, mehrere Dateien
geichzeitig auszuwählen und mit Strg-A zu sichern. Die
Originalnamen der Dateien sind ohne Verwaltungsinformationen
nicht rekonstruierbar; Dares benennt die Dateien nah dem Muster
Blocknummer-Dateityp.[bin|text].
Strg-V ruft einen Viewer auf, an den die ausgewählte Datei
übergeben wird. Dabei erscheint ein Dialog, in dem der Name des
Programms einzugeben ist, beispielsweise notepad zur Anzeige von
Textdateien. Strg-Q beendet das Programm.
Wenn das Ergebnis nicht überzeugt
----------------------------------
Die Heuristik zum Erkennen von Dateianfang und -ende kann
natürlich fehlschlagen: Auf Video-DVDs beispielsweise sind die
Videostreams typischerweise in Dateien von exakt einem GByte
Größe zerhackt, die somit genau auf einer Sektorgrenze enden.
Dares hängt dann die einzelnen Videodateien direkt aneinander.
Abspielen lassen sie sich problemlos, allerdings können sie
größer als 4 GByte werden und lassen sich dann nicht mehr auf
FAT-Laufwerken speichern.
Umgekehrt beginnen AVI-Dateien typischerweise mit einem Header
der mit Nullbytes auf eine Größe von exakt 6**KByte aufgefüllt
wird. Anschließend beginnen die Videodaten, die nicht mit Null
beginnnen. Resultat: Für Dares endet die AVI-Datei nach dem
Header, die eigentlichen Daten ordnet es einer neuen Datei zu. In
einem solchen Fall findet man in der Log-Datei, in der Dares
während der Suche alle gefundenen Dateien einträgt (dares.log),
welcher Datei die Videodaten zugeordnet wurden -- häufig ist es
eine Datei vom Typ data oder dem Mime Type "application/octet
stream". Sind beide Dateien gespeichert, lassen sie sich nach dem
Speichern aneinanderhängen. Alternativ kann man anhand der
Informationen in der Log-Datei die Datei in der richtigen Größe
aus dem Image extrahieren.
Natürlich kann es vorkommen, dass die gesuchte Datei,
möglicherweise auch schon ihr Dateityp, nicht in der Liste
auftaucht. In diesem Fall muss man mit der integrierten
Dateivorschau und den externen Viewern in Qtdares die Liste der
gefundenen Dateien durchsuchen, ob die Zieldatei vielleicht
falsch erkannt wurde. Es kann sich lohnen, sowohl einen Durchlauf
mit Mime Types (Option -m) als auch einen mit den ausführlichen
Dateitypen zu starten: Die beiden Magic-Libraries unterscheiden
sich etwas.
Da die ausführlichen Beschreibungen die Dateitypen sehr viel
detaillierter aufgliedern als die Mime Types (bei Bilddateien
kann der Dateityp Informationen über die Größe enthalten, bei
Archivdateien über den Inhalt etc.), liefern die als Default
verwendeten ausführlichen Dateitypen mehr Informationen über die
Dateien. Allerdings wird man gelegentlich viele ähnliche
Dateitypen mit nur wenigen Dateien finden, etwa bei zahlreichen
GIF-Dateien unterschiedlicher Größe, die jede einen eigenen Typ
bilden. Mit Mime Types wird man daher in vielen Fällen einen
übersichtlicheren Dateibaum enthalten.
Weiß man, welche Dateitypen auf dem beschädigten Datenträger
gespeichert waren, kann man die Dateien magic und magic.mime
entsprechend anpassen und sie auf die erwarteten Dateitypen
beschränken. Das vermeidet Fehlerkennungen. Dares versucht, die
Signaturdatei magic[.mime] im aktuellen Verzeichnis zu lesen und
gibt eine Warnung aus, wenn das nicht gelingt. In diesem Fall
kommen die eingebauten Standardsignaturen zum Einsatz.
________________________________________________________________________________________________ |
|
suchen finden :::> dadada recovery file filerecovery data[/color] |
|