ソフトウェア

試行錯誤しても取り出せなかった破損データを見事に復活させた「まさか」のソフトウェアとは?


データを保存するためのHDDやSDカードは、常に故障によるデータ破損がつきもののデバイスです。そのSDカードに保存していた音声データを破損してしまった教師のScott Hanselmanさんが、試行錯誤の末驚きの方法でデータを復旧できたと自身のブログで語っています。

CSI: The case of the missing WAV audio files on the FAT32 SD Card - Scott Hanselman
https://www.hanselman.com/blog/CSITheCaseOfTheMissingWAVAudioFilesOnTheFAT32SDCard.aspx

Scottさんはボイスレコーダーとして、2つのマイクによるステレオ録音が可能なZOOM H6を愛用しているとのこと。あるインタビューを録音するため、新品の「フォーマット済み」SDカードを購入し、そのままSDカードをZOOM H6に挿入して音声をWAV形式で録音。インタビューが終了してからZOOM H6でWAVファイルを再生できることを確認し、帰宅してSDカードをPCに挿入すると、SDカードにデータが何も入っていませんでした。


Scottさんは14年間にわたり730ものエピソードを録音してきましたが、こんなことは初めてだったとのこと。慌てたScottさんは深呼吸し、問題の解決に取りかかります。

まずはドライブを右クリックしてプロパティを確認すると、329MBが「使用済み」と表示されました。これは、ちょうどインタビューのWAVファイルと同じくらいのデータ容量にあたるので、データそのものはSDカード内に存在していることが推定できます。


コマンドラインでルートディレクトリ以下のアーカイブやシステムファイルを確認してみると、データ自体の存在は確認できました。もう一度ZOOM H6にSDカードを挿入すると、ZOOMではやはりWAVファイルを再生できるという、なんとも奇妙な事態に。


Scottさんは原因の究明にあたり、物理的なSDカード内のデータに変更を加えることを避けるため、ddコマンドを使ってSDカードのデータをブロック単位でイメージファイルとして抽出しました。


音声データは329MBなので、抽出したイメージファイルの先頭から400MB分の範囲のデータを切り取ります。抽出したイメージファイルはバイト列の集まりであり、現段階では人間が中身を認識できる「ファイル」として成り立っているものではありません。


Adobe AuditionAudacityなどのオーディオソフトウェアでは、RAWデータを取り込む機能が存在します。2チャンネルの設定でイメージファイルを取り込むと、音声の波長が表示されました。音声を確認してみましたが、まったく聞き取れるものではありませんでした。


ここでScottさんは「ZOOM H6はステレオ録音をしていた」ことを思い出します。イメージファイルのデータは、同時に記録されていた右マイクのデータと左マイクのデータの2つが混在したバイト列であることに気づいたScottさんは、hexdumpでイメージファイルをダンプしてみると、「ZOOM0001」といったファイル名が表示されることを確認。


「イメージファイルをマウントすればデータを取り出せるのではないか?」と考えたScottさんは、Ubuntu上でイメージファイルをマウントしてみましたが、残念ながらデータは表示されませんでした。


8.3形式を無視したファイル名が使用されていると仮定すれば、幅広いファイル名に対応したVFATに準拠することでファイルを取り出せるのでは」という意見を参考にし、dosfsckでマウントしたイメージファイルを確認してみると、ファイル名は表示されましたが、1つであるはずのルートエントリが3つあることになっています。また、肝心のファイルを取り出すことはできませんでした。


イメージファイルの一部セクターをスキップして読み込んでみると、どうやら名前のないフォルダが存在し、その中にファイルがあるためにデータが取り出せないということが判明。


Scottさんはさらにデータを取り出せない原因を追及していきます。1セクターあたり512バイトのデータが含まれており、データは8192番目のセクターから始まっているので……


xxdコマンドでイメージファイルの512×8192の4194304バイト目から先を16進数で出力すると、「FAT32」の文字が。データが入っているパーティションのファイルシステムはFAT32であるため、Scottさんは正しい位置を参照していることを確信します。


「別のSDカードをフォーマットして同じように録音した上で、イメージファイルを抽出し、バイナリを比較してみては?」というアドバイスに従い、SDカードをフォーマットして録音し直した「正しい」イメージファイルと「壊れた」イメージファイルのバイナリを比較してみると、名前がスペースになっている2つのフォルダが存在しているように表示されました。しかし、ここからフォルダやその中身のファイルを再構築するのは至難の業です。


なかば諦めかけていたScottさんが、ふと思いつきでイメージファイルを右クリックし、ファイル圧縮・解凍ソフトの「7-Zip」で開いてみたところ、無名のフォルダが表示されることがわかりました。


そのままフォルダを開いてみると、なんと試行錯誤しても取り出せなかった録音データが簡単に取り出せてしまいました。ファイルパスを見ると無名フォルダの部分が「\\」となっており、通常は対応していないパスですが、7-Zipでは読み込めてしまったようです。


Scottさんは、「購入したSDカードはまずフォーマットすべき」と痛感したとともに「7-Zipはすごい」という知見を得たと語っています。

この記事のタイトルとURLをコピーする

・関連記事
現代の化石・8インチFDから「化石のデータ」を読み取る挑戦の結果は? - GIGAZINE

「Excel上で動くドラムマシン」を作成した猛者が登場する - GIGAZINE

見た目はUSBケーブル、中身はハッキングツールの悪用厳禁ケーブル「O.MG Cable」がLightningに続きUSB Type-Cバージョンなども販売開始 - GIGAZINE

HDD故障率のメーカー・モデル別統計データ2019年版、故障率が最も高かったのは? - GIGAZINE

30年前のPC-9801系互換機からGoogleへのアクセスを成し遂げた猛者が登場 - GIGAZINE

in ソフトウェア, Posted by darkhorse_log

You can read the machine translated English article here.