<< 沐浴とミルクと油で大わらわ | main | 第一次疲労ピークか >>

スポンサーサイト

  • 2015.01.07 Wednesday
  • -
  • -
  • -
  • by スポンサードリンク

一定期間更新がないため広告を表示しています

USBメモリのデータ復旧・復元顛末記

USBメモリのデータが壊れました。2回目です。
TranscendJetFlash110(JF110)
付属ユーティリティを使うことにより、ブートデバイスとして使用できたり、パスワード保護されたプライベートエリア(セキュリティエリア)を作成できたり、といったところで重宝していたのですが。2回も同様障害に見舞われるとは。

現象は
・リムーバブルメディアとしては認識されるが、
・データは消失。(フォーマットされていません、今すぐフォーマットしますか?になる)

データが飛んだ手順は、多分ですが、以下。
・PC1(hp nx9040、WinXP SP2)でプライベートエリアでデータを読み書き
・正しい手順(「ドライブXXを安全に取り外します」)で外す
・PC2(自作、Win2k SP4)でUSBメモリを使おうとする

プライベートエリアでデータを読み書きした後、プライベートエリアからlogoffせずにデバイスを外すとこうなるのか、とか再現条件をハッキリさせたいところですが、まずはデータの復活を考えなければなりません。
というのも「プライベートエリア」機能は中々便利なので、ユーザー登録情報とか無線LANのWEPキーとかそういったものを保存していまして、こういうのがデータの性質上、家のPCにバックアップしておくのも危なっかしいものですから、このUSBメモリだけに存在しておったデータなわけです。
僕は結構ここの情報に頼りきりなところがあるので、このファイルが飛ぶだけで、「自分にとって重要などの情報がなくなったかもわからない」ほどの、冷や汗もんの大ダメージです。(ここまで行っちゃうともはや開き直って笑うしかない、とも言えますが)
まぁ1回きれいに飛んだメディアをまだバックアップ無しで使い続けているところで自分が限りなく阿呆だ、といわざるを得ません。

で、まぁ結論から言うと、データを力技で復旧させました。ただし、
・パブリックエリアに保存していたデータは全て消失
・プライベートエリアに保存していたデータは全て復旧
です。

パブリックエリアのデータなんてどうでもいいんです。僕にとって重要なのはプライベートエリアのデータ。
ちなみにデータ復旧まで1.5人日くらいかかってます。おもに調査で。

グダグダと辛かった体験やら無駄になった調査を述べる前にまずは復旧手順を。

■復旧させるのに使ったツール

 ddコマンド
 バイナリエディタ

■復旧手順(概要)

1. USBメモリをディスク上に吸い出してIPL領域の確認
2. 壊れたIPL領域に正しい(?)IPL領域を復元
3. メディアを認識したら、JetFlash付属ユーティリティでプライベートエリアにログイン、データを救出



■復旧手順(詳細)

1. ddコマンドでUSBメモリのイメージをファイルに吸い出す
 USBメモリがEドライブの場合
dd if=¥¥.¥e: of=usbmem.img
 (usbmem.imgは適当なファイル名)

2. usbmem.imgをバイナリエディタで開いて、IPL領域を探す。
 (本来先頭にあるべき(?)IPL領域がどっかいっちゃってました)
 僕のバイナリエディタはcygwin上のbviです。
 IPL領域を探す手順は
bvi usbmem.img
 でイメージファイルを開き、
 ・「¥eb 3e 90」(→IPL領域の先頭3バイトを探す場合)
 ・「/FAT」(→IPL領域中にある「FAT16」の文字列から探す場合)
 などです。すると…
00003FE0 6C 0C 23 FC 6C FD 6E D0 6C EF 18 9F 6C E1 64 76 l.#.l.n.l...l.dv
00003FF0 6C D2 2F 4A 6C C4 7B 1E 6C B5 46 F6 6C A7 70 C5 l./Jl.{.l.F.l.p.
00004000 EB 3E 90 29 6F 2D 48 5D 49 48 43 00 02 04 20 00 .>.)o-H]IHC... .
00004010 02 00 02 00 00 F8 C0 00 20 00 FF 00 20 00 00 00 ........ ... ...
00004020 E0 E5 02 00 80 00 29 FD 51 19 0A 4D 59 20 55 53 ......).Q..MY US
00004030 42 20 44 49 53 4B 46 41 54 31 36 20 20 20 F1 7D B DISKFAT16 .}
00004040 FA 33 C9 8E D1 BC FC 7B 16 07 BD 78 00 C5 76 00 .3.....{...x..v.
00004050 1E 56 16 55 BF 22 05 89 7E 00 89 4E 02 B1 0B FC .V.U."..~..N....
00004060 F3 A4 06 1F BD 00 7C C6 45 FE 0F 8B 46 18 88 45 ......|.E...F..E
00004070 F9 FB 38 66 24 7C 04 CD 13 72 3C 8A 46 10 98 F7 ..8f$|...r<.F...
00004080 66 16 03 46 1C 13 56 1E 03 46 0E 13 D1 50 52 89 f..F..V..F...PR.
00004090 46 FC 89 56 FE B8 20 00 8B 76 11 F7 E6 8B 5E 0B F..V.. ..v....^.
000040A0 03 C3 48 F7 F3 01 46 FC 11 4E FE 5A 58 BB 00 07 ..H...F..N.ZX...
000040B0 8B FB B1 01 E8 94 00 72 47 38 2D 74 19 B1 0B 56 .......rG8-t...V
 で、記憶領域の先頭にあったらうれしいIPLが
 なぜか0x00004000から始まっていることがわかりました。
 (たぶん、プライベートエリア、パブリックエリアの切替にIPLを操作してそうです)

3. イメージファイルからIPL領域を吸い出す
dd if=usbmem.img of=ipl.img bs=512 count=1 skip=32
 オプションの詳細はddコマンドを調べて下せえ。
 簡単に言うと、usbmem.imgのIPL(0x4000から512バイト)をipl.imgへ吸い出してます。

4. ipl.imgをUSBメモリの先頭から書き込む
 この操作でUSBメモリの中身(先頭から512バイト)を書換えます
 僕はうまく行くという確信や保証があって実行した操作じゃないのでそこらへんのところは汲んでいただいて、マネする場合はお約束の「自己責任」というお題目の下にお願いします。
dd if=ipl.img of=¥¥.¥e:

5. USBメモリを「安全に取り外」して、再度接続。
 空っぽのパブリックパーティションが表示されますのでぜひ冷や汗を流してください。
 (冷や汗を流そうが流すまいが、パブリックパーティションは復旧できんのですが)

6. 専用ユーティリティ(JF-Utility.exe)でプライベートエリアにログオン
 ⇒これでプライベートエリアの内容が復活
  (あくまで僕の場合ですから)

7. 復活させたファイルはぜひ安全な場所に移して、件のUSBメモリはリカバリツールで初期化するか不燃ごみとして捨てましょう。

■以下、感想や恨み言や、復旧手順と関係の無い話

・まずはこういう泥臭いことをせずに、復旧ツールを試そうとした訳です。
 「復元」(フリーソフト)
  http://www.vector.co.jp/soft/win95/util/se192983.html
 「Antidote for PC Media Rescuer」(有償・試用可(機能制限アリ))
  http://www.vintage-solutions.com/Japanese/DriveUtility/Mr/

 でも、どうやら「プライベートエリア」機能に護られたファイルは上記のツールでは復旧できないくさいことが判明して、別の方法を考える必要が出たわけです。

・まぁ、状況的にデータそのものがぶっ壊れたわけではなくデータの管理領域がぶっ壊れたのだろうなぁという推測はしていたので、イメージファイルを吸い出して、壊れた管理領域を修復できれば嬉しいなと思ったわけです。で、FATファイルシステムの仕組みを調べました。

 参考にした資料:
 ■FATやIPLの仕様確認
  「MO救出作戦
   http://www.obs.mydns.jp/mo_save/index.html
  「Gaku's Space Wiki
   http://gaku.s12.xrea.com/wiki/main.cgi?c=g&p=OS%2FFile+System%2FFAT

 ■WindowsでDDを使う場合の確認に
  「可能な限りフリーのツールを使ったデータ復元手順
   http://www.cybernetic-survival.net/salv.htm

・そうしたら、僕のUSBメモリの先頭領域はIPLとは思えないちょっとわからないデータになっていることがわかりました。
00000000 F8 33 C0 8E 00 00 00 00 01 00 00 00 00 00 08 00 .3..............
00000010 09 00 02 00 00 00 00 00 08 00 06 00 00 00 10 00 ................
00000020 11 00 00 00 00 00 04 00 14 00 14 00 03 00 10 00 ................
(以下略)
 多分、プライベートエリアにアクセスするときはIPLを書換えるんだなぁと推測した根拠です。
 だったら、IPLを復旧させたらデータも復活しそうだなぁ、と推測して今回の手順にたどり着いたわけです。

・なおTranscendにある、「USBメモリ復旧ツール」は前回の障害のときに「おお」と思い使ってみましたが、復旧ツールの意味するところは、「復元」ではなく「初期化」です(涙)。
今回、新バージョンになっていたので使ってみようと思ったのですが、また「初期化」されてしまうと自分的に再起不能になるので試せませんでした。
もはやプライベートエリアを救出して怖いもの無しなので、壊れたほうのイメージをUSBメモリに書き戻して、復旧ツールを試してみようと思います。
(2月11日追記: やはり「復旧ツール」は「初期化ツール」でした。)

・あ、プライベートエリアのデータを復元させた後は、パブリックパーティションのデータを市販のツールやフリーウェアで復元できるかもしれないですね。気が向いたら試してみます。
(2月11日追記: 条件によっては復元できそうな雰囲気でした。)

-----
2月11日追記

プライベートエリアとパブリックエリアを設定すると、LUNが違う別領域として設定されると取説に書いてありました。
上で僕が書いている「IPL領域の書き換えでプライベート/パブリック切り替え」という推測はたぶん外してます。

「USB 復元」といったキーワードで検索してここにたどり着く方がいるようなので念のため。ここで僕が復元させたUSBメモリはTranscendのJetFlashで、プライベートエリア/パブリックエリアを持てるタイプのものです。ある条件で管理領域が壊れるようなのですが、せめてプライベートエリアの情報だけでも復旧させようと、上記の方法を試しました。こういう方法で復旧できるのは特殊ケースだとご承知おきください。

JetFlash(楽天市場)
JetFlash(Amazon)

スポンサーサイト

  • 2015.01.07 Wednesday
  • -
  • 22:19
  • -
  • -
  • by スポンサードリンク
コメント
おかんつえーっすなぁ〜!!
脱帽しますっ
  • 2008/07/04 5:44 PM
おかんのファンになりますさん、

おかんつえーっすよね。確かに脱帽です。
http://alfalfa.livedoor.biz/archives/51303256.html
  • 2008/07/07 2:08 AM
やってみます。ありがとうございます。
  • 2015/01/14 4:25 PM
すごいですよ。
こんな難しい方法も知っているとは!
パソコンに苦手なので、まずこちらの方法で試してみます。
http://www.android-recovery.jp/usb-recovery.html
  • 2015/12/18 3:45 PM
詳しくありがとうございます。
  • 2016/02/06 9:33 PM
コメントする









この記事のトラックバックURL
トラックバック
calendar
    123
45678910
11121314151617
18192021222324
252627282930 
<< June 2017 >>
since 01/20/2006
  
d400xのTwitter
selected entries
categories
archives
recent comment
recent trackback
profile
search this site.
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM
sponsored links