CD-ROM-Unterkanal unterscheidet sich beim Ablegen derselben CD?

1272
Christophe

Ich mache Sicherungskopien von alten Videospielen mit CloneCD 5.3.3.0 auf meinem Windows 10 x64-Computer mit einem Samsung SH-S223L-Laufwerk.

Eines davon ist Hellfire for PC (Erweiterung Diablo 1):

  • Die CD hat ein COMPACT disc DATA STORAGELogo
  • Ordnungsnummer: S0011770
  • Werks-SID-Code: IFPI 1218
  • CD-Master SID-Code: IFPI L032
  • ISO 9660 PVD-Erstellungsdatum: 1997-11-18 16:30:00.00

Ich benutze die redone.org CloneCD- Profilempfehlung :

[CloneCD ReadPrefs] ReadSubData=1 RegenerateData=0 ReadSubAudio=1 AbortOnReadError=0 FastErrorSkip=0 ReadSpeedData=8 ReadSpeedAudio=8 IntelligentBadSectorScan=1 SectorSkip=1 NoErrorReport=0 FirstSessionOnly=0 AudioQuality=3 

Soweit ich weiß, hat das Spiel keinen Schutz, aber wenn ich die Disc zweimal ablade, ende ich mit verschiedenen Unterkanaldateien ( .sub). Die Dateien .ccdund .imgsind identisch, nur die .subUnterschiede, ich habe SHA1-Prüfsummen und einen Hex-Editor verwendet, um dies zu überprüfen.
Ich hochgeladen zwei .subDatei - Dumps hier .
Ich muss erwähnen, dass ich zwei Kopien dieser Disc habe und dass das Verhalten mit beiden Discs identisch ist.

Ich habe auch mehrere andere CD-ROM-Medien gesichert. Manchmal erhalte ich dieses Verhalten. Manchmal ist der Unterkanal über alle Speicherauszüge hinweg konsistent.

Was ist die Erklärung für dieses Verhalten?


Bearbeiten:

Ich habe die gleiche CD-ROM erneut mit einem Lite-On iH124-14-Laufwerk gesichert und sehe dasselbe Verhalten (unterschiedliche .subDateien).
Ich habe das Medium auch mit KProbe 2 auf Fehler überprüft und erhalte folgendes Ergebnis:

KProbe 2 BLER-Scan


Bearbeiten:

Es scheint, dass der Disc-Zustand und / oder die mangelnde Präzision des Laufwerks dazu beigetragen haben, dass der Unterkanal keinen Fehlerkontrollmechanismus hat (außer dem Q-Kanal), warum ich unterschiedliche .subDateien bekomme, wenn ich dasselbe Medium mehrmals ablade.

Ich muss erwähnen, dass ich auch ein Plextor PX-712A-Laufwerk habe und .submit Disc Image Creator konsistente Dateien über Dumps erhalten konnte . Diese Software nutzt 0xD8Anweisungen anstelle von 0xBEAnweisungen, um die Disc zu lesen, was zu präziseren Bildern führt. Nur wenige Laufwerke (meistens Plextor) unterstützen diese Anweisung.

Ich besitze auch zwei physische Kopien dieser CD-ROM, die ich ablehne (gleiche Seriennummer, dieselben IFPI-Codes und dieselben lasergravierten Informationen). Wenn ich dieselbe Disc mehrmals mit Disc Image Creator ausspeichere, erhalte ich konsistente .subDateien, nicht jedoch, wenn ich die erste und dann die zweite Disc ausspeichere.
Ich denke, es hängt mit den Medienbedingungen zusammen, da einer von ihnen einige Kratzer und mehr C1 / C2-Fehler aufweist.

13
Lesefehler (Schmutz, Kratzer, nicht unbedingt tatsächliche Fehler des Laufwerks) können dazu führen, dass sich CD-ROM-Images unterscheiden. Unterschiede können so wenig wie einige Bits sein; Eine Differenz von 1 Bit reicht aus, um die SHA \ * / MD5-Prüfsummen zu unterscheiden. quixotic vor 7 Jahren 1

2 Antworten auf die Frage

12
dirkt

Die verschiedenen CD-Formate sind etwas kompliziert und die offiziellen Spezifikationen ("Red Book" für Audio-CDs, "Yellow Book" für Daten-CDs) sind nicht frei verfügbar. Einige Details finden Sie jedoch in verfügbaren Standards wie Ecma-130.

Die ursprüngliche Audio-CD (auch CD-DA genannt) wurde auf der Vinyl-Schallplatte modelliert, was bedeutet, dass sie auch eine spiralförmige Spur kontinuierlicher Audiodaten verwendet (die DVD verwendet später kreisförmige Spuren). In sehr komplexer Weise in diesen Audiodaten verschachtelt sind 8 Unterkanäle (P bis W), von denen der Q-Unterkanal Timing-Informationen (wörtlich in Minuten / Sekunden / Sekundenbruchteilen) und die aktuelle Spurnummer enthält. Für den ursprünglichen Zweck war das ausreichend: Für ein kontinuierliches Spiel wurde das Objektiv nur leicht an die Spur angepasst. Um zu suchen, würde sich die Linse bewegen, während der Q-Unterkanal decodiert wurde, bis die richtige Spur gefunden wurde. Diese Positionierung ist etwas grob, aber völlig ausreichend, um Musik zu hören.

Noch heute können viele Computer-CD-Laufwerke das Objektiv nicht vollständig positionieren und die Decodierschaltung synchronisieren, so dass das Lesen von Audio-Samples an einer exakten Position beginnt. Aus diesem Grund haben viele CD-Ripping-Programme einen "Paranoia" -Modus, in dem sie sich überschneiden und die Ergebnisse vergleichen, um diesen "Jitter" auszugleichen. Als Teil des Audiostreams ist auch der Unterkanal Jitter ausgesetzt. Aus diesem Grund erhalten Sie unterschiedliche Unterkanaldateien, wenn Sie auf einem CD-Laufwerk rippen, das nicht genau positioniert werden kann.

Als die Daten-CD (CD-ROM) -Spezifikation entwickelt wurde, um die CD-DA-Spezifikation zu erweitern, wurde die Bedeutung des genauen Adressierens und Lesens von Daten erkannt, so dass der Audiorahmen von 2352 Byte in 12 Sync-Bytes und 4 Header-Bytes (z die Sektoradresse), wobei die restlichen 2336 Bytes für Daten und eine zusätzliche Fehlerkorrekturstufe verbleiben. Mit diesem Schema können Sektoren genau adressiert werden, ohne sich nur auf die Q-Kanalinformationen zu verlassen. Daher ist der Jitter-Effekt nicht wirksam, Sie erhalten beim Ablegen einer CD-ROM immer dieselben Daten und es ist keine zusätzliche Klugheit beim Ablegen erforderlich.

Bearbeiten Sie mit mehr Details:

Laut Ecma-130 werden die Daten stufenweise verschlüsselt: 24 Bytes bilden einen F1-Frame, die Bytes von 106 dieser Frames werden in 106 F2-Frames aufgeteilt, die 8 zusätzliche Bytes Fehlerkorrektur erhalten. Diese Frames erhalten wiederum ein zusätzliches Byte ("Control-Byte"), um sie zu F3-Frames zu machen . Das zusätzliche Byte enthält die Unterkanalinformationen (einen Unterkanal für jede Bitposition). Eine Gruppe von 98 F3-Frames wird als Abschnitt bezeichnet, und die 98 zugehörigen Steuerbytes enthalten zwei Synchronisationsbytes und 96 Bytes realer Unterkanaldaten. Der Q-Unterkanal hat zusätzlich 16 Bit CRC-Fehlerkorrektur in diesen 96 Bit.

Die Idee dahinter ist, Daten auf der Oberfläche der Platte so zu verteilen, dass Kratzer, Schmutz usw. nicht viele kontinuierliche Bits beeinträchtigen, sodass die Fehlerkorrektur die verlorenen Daten wiederherstellen kann, solange die Kratzer nicht auftreten zu groß.

Folglich muss die Hardware des CD-Laufwerks einen vollständigen Abschnitt lesen, nachdem das Objektiv neu positioniert wurde, um herauszufinden, wo es sich im Datenstrom befindet. Die Entschlüsselung der verschiedenen Stufen erfolgt durch Hardware, die sich selbst mit den 2 Sync-Bytes im Control-Byte-Stream synchronisieren muss. Alle CD-Laufwerksmodelle benötigen für die Synchronisierung eine andere Zeit als andere Modelle (Sie können dies testen, indem Sie von zwei verschiedenen Laufwerken lesen, falls vorhanden), je nachdem, wie die Hardware implementiert ist. Außerdem benötigen viele Modelle nicht immer die gleiche Zeit für die Synchronisierung, sodass sie etwas zu früh oder zu spät starten können und die entschlüsselten Daten nicht immer im selben Byte ausgeben.

Wenn das Ripping-Programm einen READ CD(0xBE) -Befehl ausgibt, liefert es also eine Übertragungslänge und eine Startadresse (oder besser: Q-Kanal-Zeit). Das Laufwerk positioniert das Objektiv, entschlüsselt die Einzelbilder, extrahiert den Q-Kanal, vergleicht die Zeit und wenn die richtige Zeit gefunden wird, beginnt die Übertragung. Diese Übertragung beginnt nicht immer mit demselben Byte, wie oben erläutert, sodass das Ergebnis mehrerer READ CDBefehle gegeneinander verschoben werden kann. Aus diesem Grund sehen Sie verschiedene Unterkanaldateien von Ihrem Ripper.

Abhängig von der Hardware und den Umständen, wenn das Objektiv eingestellt wird, ist es mehr oder weniger zufällig, ob die Übertragung einige Samples zu früh oder einige Samples zu spät beginnt. Das einzige Muster, das Sie in den Ergebnissen sehen, ist also, dass die Verschiebungen ein Vielfaches der Übertragungslänge sind.

Einige Antriebsmodelle verfügen über genaue Hardware, die immer gleichzeitig übertragen wird. Der Standard definiert ein Bit in der Modeseite 0x2a ("CD- / DVD-Fähigkeiten und mechanische Statusseite"), das angibt, ob dies der Fall ist. In der Praxis ist es jedoch so, dass einige Laufwerke, die behaupten, genau zu sein, tatsächlich nicht der Fall sind. (Unter Linux können Sie die Modusseiten sg_modesaus dem sg3-utilesPaket lesen. Ich weiß nicht, welches Tool unter Windows verwendet werden soll.)

Danke für Ihre Antwort, es gibt mir einen interessanten Kontext. Ich verstehe, dass ich den Unterkanal nicht brauche, um korrekte Daten von der Disc zu haben. Ich frage mich nur, warum der Unterkanal selbst nicht über Dumps hinweg konsistent ist. Christophe vor 7 Jahren 0
Ja, ich habe versucht zu erklären, warum der Unterkanal nicht konsistent ist: Sie senden Befehle an die Festplatte, um "rohe" Daten einschließlich Unterkanäle zu lesen, und die Positionierung ist nicht genau, sodass das Lesen an verschiedenen Stellen beginnen kann. Wenn Sie die gelesenen Daten vergleichen, werden Sie sehen, dass Teile nur verschoben werden. OTOH, die CD-ROM-Daten selbst haben dieses Problem nicht. Und Sie benötigen den Kontext, um zu verstehen, * warum * die Positionierung nicht genau ist (obwohl Sie noch mehr Kontext für den * genauen * Grund benötigen würden, auf den ich nicht eingegangen bin). dirkt vor 7 Jahren 1
Ich bin daran interessiert, den genauen Grund zu kennen, wenn es möglich ist. Ich habe in meine Frage einen Download-Link zu `.sub'-Dateien hinzugefügt. Ich habe es mit einem Hex-Editor verglichen und Sie haben Recht, die Daten sind verschoben, ich kann jedoch kein offensichtliches Muster finden. Christophe vor 7 Jahren 0
Sehr interessant, danke. Ich habe cygwin, sg3-utils installiert und `sg_modes` ausgeführt. Ich habe "0x2a" im Abschnitt "MM-Fähigkeiten und mechanischer Status (veraltet)". Ich werde morgen ein neues Liteon-Laufwerk erhalten und erneut testen, ob ich über Dumps einen konsistenten Unterkanal bekomme. Christophe vor 7 Jahren 0
Das * Vorhandensein * der Codepage bedeutet nichts, Sie müssen das rechte Bit betrachten (Bit 1 des 6. Bytes, "CD-DA-Stream ist genau"). Wenn Sie über zwei Laufwerke verfügen, nehmen Sie eine Audio-CD, rippen Sie sie auf beide Laufwerke und vergleichen Sie die Daten. Sie sollten unterschiedliche Offsets sehen, bei denen die tatsächlichen Daten ungleich Null beginnen. Sie werden wahrscheinlich auch unterschiedliche Offsets für die Unterkanaldateien zwischen den beiden Laufwerken sehen. dirkt vor 7 Jahren 1
Ich habe `sdparm --all --long E:` in cygwin (http://pastebin.com/fbkffYr2) ausgeführt und mein neues Lite-On-Laufwerk unterstützt "CD-DA-Stream genau". Ich habe immer noch verschiedene `.sub'-Dateien auf Dumps. Christophe vor 7 Jahren 0
Ich habe ein Plextor PX-712A-Laufwerk in die Hände bekommen, das die `0xD8`-Anweisung unterstützt. Durch die Verwendung dieses Laufwerks und des [DiscImageCreator] (https://github.com/saramibreak/DiscImageCreator), der diese Anweisung nutzt, konnte ich konsistente `.sub'-Dateien über Dumps für dasselbe Medium haben. Was denkst du über dies? Christophe vor 7 Jahren 0
8
Kamil Maciorowski

Laut diesem Wikipedia-Artikel

Ein Frame besteht aus 33 Bytes, von denen 24 Bytes Audio- oder Benutzerdaten sind, acht Bytes sind Fehlerkorrekturen (CIRC-Generiert) und ein Byte ist für Subcode.

Dies deutet darauf hin, dass keine Fehlerkorrektur für den Unterkanal erfolgt.

Ich habe auch eine andere Frage an anderer Stelle gefunden . Es geht um Audio-CDs, aber ich denke, dass es das richtige Problem anspricht:

Ich kann nur sagen, dass ich beim Lesen von demselben CD-DA / CD-TEXT nie zwei identische Unterkanalwerte (* .SUB-Datei) erhalten konnte. Ist dies beim Lesen im RAW-Modus normal, weil die Daten nicht korrigiert werden, weil das CD-DA / CD-TEXT-Format nicht EDC / ECC in allen Unterkanälen enthält?

Die Antwort dort:

Nur Audiodaten unterliegen der Reed-Solomon-Codierung (C1 und C2). Subcode-Kanaldaten (Kanäle P ... W) unterliegen keinem Interleaving oder Fehlerschutz.

Während dirkt in einer anderen Antwort auf Ihre Frage möglicherweise richtig ist , dass Sie möglicherweise keine .subDateien benötigen, befasst sich die Antwort nicht explizit mit Ihrer Frage:

Was ist die Erklärung für dieses Verhalten?

Meine Antwort: Sie erhalten unterschiedliche .subDateien, da die Unterkanäle keine Fehlerkorrektur haben. Lesefehler werden beim Lesen von Audio- oder Benutzerdaten korrigiert (oder zumindest erkannt), aber ein Lesefehler kann unverändert übernommen werden, wenn er beim Unterkanalbit auftritt. Bestimmte Fehler aufgrund von Kratzern oder Staub können während einer Lesesitzung auftreten, nicht während einer anderen Lesung usw. - daher unterscheiden sich die .subDateien.


Antwort erweitert, um den Kommentar anzusprechen:

Ich habe zwei Kopien dieser Platte, von denen sich eine in ausgezeichnetem Zustand befindet (kein sichtbarer Kratzer) und das Verhalten ist immer noch dasselbe. Ich habe auch andere ältere Spiele-CD-ROMs im schlechtesten Zustand, die eine konsistente .subDatei über mehrere Dumps haben.

Ich vermute (leider ohne harten Beweis), dass verschiedene CDs mit unterschiedlicher Qualität hergestellt wurden. In einem Fall, in dem Unterkanäle keine Rolle spielen, besteht der Datenträger mit niedrigerer Qualität möglicherweise weiterhin Qualitätstests, die nur Dateninkonsistenzen erkennen. Oder es kann einfach eine probabilistische Angelegenheit sein: Eine Platte hat ihre Schwachstellen (ein Bit, das inkonsistente Messwerte liefert), wo die Fehlerkorrektur das Problem beheben kann. ein anderer hat es zufällig im Unterkanalbereich.

Ein solches Unterkanal-Bit reicht aus, um verschiedene Prüfsummen zu erhalten, während sogar Tausende "unentschlossene" Bits im Benutzerdatenbereich bei Bedarf korrigiert werden können, wenn sie nur ausreichend verteilt sind. Der Fehlerkorrekturalgorithmus behandelt also nicht zu viele Fehler. viel von ihnen auf einmal.


Antwort erweitert auf KProbe 2-Ergebnisse.

Soweit ich weiß, sind C1-Fehler (zu einer gewissen Menge) erlaubt, da sie still korrigiert werden ( mehr hier ). Diese Korrektur funktioniert aufgrund von Fehlerkorrekturbits. Wie ich bereits gesagt habe, haben Unterkanäle im Allgemeinen keine solche Redundanz ( Dirkt erwähnt die Q-Unterkanal-CRC-Fehlerkorrektur, aber das ändert nichts an meiner Schlussfolgerung). Wenn der Fehler dort auftritt, gibt es keine Möglichkeit, ihn zu erkennen, es sei denn, Sie wissen vorher, was die korrekten Unterkanaldaten sind.

Sie hatten also insgesamt 1855 Fehler, die Sie kennen. Wiederholen Sie den Test (ernsthaft, machen Sie das!) Und Sie haben zB 1790 Fehler. oder 1892. Die korrigierte Ausgabe ist jedoch jedes Mal gleich, wenn Sie lesen.

Wenn für jeweils 32 Datenbits ein Unterkanalbit vorhanden ist, haben Sie wahrscheinlich etwa 1855/32 Unterkanalbits, die mit einem nicht erkannten Fehler gelesen wurden. Das sind ungefähr 58 Bits. Nun, fast, weil dank Q-Subchannel CRC einige dieser Fehler zumindest entdeckt werden können. Da Q einer von acht Unterkanälen ist, schätze ich, dass in anderen Unterkanälen noch etwa 50 fehlerhafte Bits vorhanden sind. Wenn Sie das nächste Mal lesen, erhalten Sie möglicherweise einige dieser Bits fehlerfrei und an anderer Stelle einige neue Unterkanalfehler. Sie erhalten also eine andere .subDatei. Trotzdem wissen Sie nicht genau, welches dieser Bits beim ersten oder zweiten Mal richtig gelesen wurde.

Zunächst einmal vielen Dank für Ihre Antwort. Ich verstehe, dass der Medienzustand berücksichtigt werden muss, aber ich habe zwei Kopien dieser Platte, die sich in ausgezeichnetem Zustand befindet (kein sichtbarer Kratzer) und das Verhalten ist immer noch dasselbe. Ich habe auch andere ältere Spiele-CD-ROMs im schlechtesten Zustand, die über mehrere Dumps eine konsistente .sub-Datei haben. Ich bin mir bewusst, dass ich den Unterkanal nicht brauche, da das Spiel nicht geschützt ist. Ich stelle diese Frage aus technischen Gründen:). Christophe vor 7 Jahren 0
@Christophe Ich habe meine Antwort erweitert. Kamil Maciorowski vor 7 Jahren 1
Ich verstehe. Ich denke, es könnte interessant sein, Fehlerinformationen für das Medium zu haben. Ich habe ein Liteon iHAS124-Laufwerk bestellt und werde dies mit kprobe2 überprüfen. Ich sollte morgen ein Update haben. Christophe vor 7 Jahren 0
Ich habe das Ergebnis des C1-Fehler-Scans zu meiner Frage hinzugefügt. Es scheint gut zu sein, max ist 25. Christophe vor 7 Jahren 0
@Christophe Ich habe meine Antwort noch einmal erweitert. Kamil Maciorowski vor 7 Jahren 1
Danke, Sie haben Recht, ich habe es noch einmal überprüft und hatte bei KProbe einen anderen Fehler. Christophe vor 7 Jahren 0