[081111]
HDD用プログラムを、作ってみました(初歩編) HDM02
パスワード・ロックが掛かったジャンクHDDを、使用可能にしたいと色々調べてみたのですが、ネットからで入手出来るソフトでは埒が明かないので、自作出来ないかとトライしてみました。
目下の処、“素人には、開錠は困難!?”との見込みなのですが、折角作った道具だし、普通の用途(ん?どんな?)になら使えるかもしれないので、一応整備しておこうと思いました。
名称は、HDM02(HardDisk Manipulator Ver0.2)で、目下のバージョンは小数点以下!(もしも、ロックの掛かったHDDが読めるようになったら、Ver1.0以上にしようかと思ってますが...)
−−−−−−−−−−−−−−−−−−−−−−−−−
主な機能
Fnキーで指定する「機能」は、思い付くままに追加して来たので、雑然としているし、汎用性も少ないのですが、一応、次のようなのを用意しました。(暫定で、常に変更中)
Fnキー | 機能 | shift Fnキー | 機能 |
F1 | ドライブの切り替え(C,D,E,F) | sF1 | − |
F2 | 画面データのファイルへの書き出し | sF2 | 画面データをファイルから読み込み |
F3 | Trk00の読み出し | sF3 | Trk00の書き込み |
F4 | LBAゼロで読み出し | sF4 | LBA最大値-1で読み出し |
F5 | 画面をリフレッシュ(暫定) | sF5 | − |
F6 | 画面データを全部ゼロで充填 | sF6 | 画面データを昇順数で充填 |
F8 | LBAの書き換え | sF8 | |
F12 | 現LBAから読み出し | sF12 | 現LBAへ書き込み |
LBAは、Logical Block Addressの略で、1ブロックは512バイト。画面の表示は256バイトずつですが、スクロールで全512バイトの表示が可能。また、Trk00は、MBR部。
データの置き場所は3箇所で、「画面上」、「ディスク(LBA)上」、「ファイル上」(実態は、ディスク上ですが)。
「画面」で書き換えたデータは、「ディスク」に書き込むか「ファイル」に書き込まないと残りません。(折角書いたデータを、うっかりして、ディスクから読み出した別データで上書きしてしまう事が多かったもので)
ドライブの変更など.
始め“ドライブは1台だけ”と考えていたのですが、延長ケーブルで(ノートPCでも)2台まで接げるので(実用的には2台が限度ですが)、少しだけプログラムの汎用性を考えて、4台まで切り替え可能にしました。
左写真、<クリック>で、Dドライブに変更した状態。<プッシュ>で、未接続のEドライブに切り替えた時のエラー状態。
ノートPCでHDDを2台接続出来ると、大変便利!
当初は、2台のPCを使って、FD経由でやろうとしていたのですが、この方式ならマスタ側HDDでプログラムを作成して、そのまま直ぐに、スレーブ側に接いだターゲットHDDも調べられるから、プログラム作成・デバッグが1台だけで済むし、楽チンですねぇ。(自画自賛。f(^^;)
上限/下限.
左図の上がプログラム作成用の4GB(maxLBA:80F7F0)、下がロックの掛かった20GB(maxLBA:2542980)の“LBA上限値”と“現LBA値”の表示。
LBA下限値は、当然、全0です。(マイナス側にも出来ますが、読み出しはエラー!)
図中の右端の赤数字は「ステータス」表示用で、「00」は読み書き正常で、「00以外」は何らかの異常終了を表しています。
残念ながら、このターゲット20GBはちゃんと読み出せなかったため、「01」で異常終了しています。(表示データ群は、前のものがそのまま表示されている)
キー操作など.
(恐らく、目的の作業では、個々のデータを書き換える必要は無いだろうと思っていますが、)一応、画面上のデータは、どのアドレス/カーソル位置ででも上書き可能です。(ただし、右側のコード表示領域では、出来ない)
カーソルは、矢印キーで自由に移動させられますし、同じ数字を書いて行く場合は、自動的にカーソルが右移動して行きます。
カーソル移動は矢印キーだけです。で、PgUpキーやPgDnキーなどは、LBAの「アップ/ダウン」と「データ読み込み」として働きます。(データの上書き途中で、うっかり、これらを使うと次のブロックが読み出されてしまい、折角書いたデータが無駄になります)
「LBA値」を書き換えた後は、「Enter」キーで確定。直後に、そのLBAからブロック・データを読み込んで来ます。(Enterキーの今回の出番はこれくらいなもんで、他には使っていません)
その他.
後、汎用性を増すには、文字列や数値での検索(サーチ)機能なども必要でしょうが、主目的から外れるので、今は考えてません。
上限下限付近のブロックへ飛ばしたのは、何か参考になるデータでも読み出せないかな?と思って組み込んだのですが、やはりそんなに上手い話は無さそう。
まぁ、ディスクのアクセスは、すべてBIOSの割り込み処理ルーチンを利用しているので、普通を超える事は出来ないでしょうね。
ただ、その部分に少し毒薬(?)を注げば、或いは変身させられるかもしれないので、もう少し試行錯誤してみようと思っています。