見出し画像

ドライブの音を聞く - コピーガード

フロッピーディスクの表面はトラックとセクターという単位に分けられて、データを読み書きすることは書きました。

フロッピーディスクの本当の中身

さて、すべてソフトウェアで制御していたAppleDOSですから、ディスクアクセスするコードを自分で書けば、どんなことでも出来てしまいます。そこで、どんなことをしていたのかを、いくつか取り上げてみたいと思います。

まず、いちばん簡単なのは、通常のトラックとセクタを使うものの、特定のトラック・セクターをDOSの管理領域で利用中であるようにマークして、そこに独自にアクセスするようにします。DOSからは見えない領域なので、通常のDOSツールによるコピーではコピーされなくなります。これは全てのトラック、セクターをコピーしてしまえば回避できます。

一歩だけ進めた方法が、書き込まれているトラックの情報を実際の情報ではなくニセモノにしてしまうことです。例えばトラック$10を読む場合、最外周から計算した位置にヘッドを移動してデータを読み取りますが、ここを読み出してトラック番号が$20と書いてあればDOSはヘッド位置が間違っていると思い込み、最外周まで移動し直して位置合わせを行ってから、読み直します。ここに敢えて$20と書いてあるのですから、いつまで経っても読み込むことはなく最終的にディスクエラーとなります。ここにあるデータを読みたいプログラムは、これがわかっているので、自分のルーチンで$20であっていると認識すれば良いのです。ただトラック番号のエラーを無視してコピーすれば、ニセモノのトラック番号も含めてコピーはできます。

次はハーフトラックという手法です。中心からの距離を決めるトラックは、書き込まれた磁気データが隣のトラックの干渉を受けないだけ離しておく必要があります。これはDISK][ではヘッドを動かすステッピングモーターを4単位分だけ動かす距離になります。これは最低限の距離なので、これより大きく空ける分には問題はありません。例えば2単位だけズラした位置から4単位ごとにトラックを書き込めば、DOSは4単位ごとにアクセスするので、常に2つのトラックの真ん中をアクセスして、それらのデータが干渉した値を読み取ってしまい正しいデータを得ることが出来ません。これはトラック位置を正確に知っていない限り、コピーをしても正しくないデータしかコピーできません。

The Amazing Disk II Controller Card(再び登場)

最後がシンク(同期)トラックです。DISK][はインデックスホールを使っていない(検出するためのセンサーもない)ので、各トラックのセクター位置(角度)がどこから始まっているかは自由です。DOSはデータを読んでみて、望みのセクター番号が得られるまで読み続けるだけです。シンクトラックでは、あるトラックを読み込んで、例えばセクター番号1を見つけた時点で、ヘッドを例えばひとつだけ移動させ、移動先のトラックを読み出します。そこで最初に読み出したセクター番号が特定の番号でない限り、正しく書き込まれていないと判断するのです。基本的に各セクタが、どの位置に書き込まれているかはDOSは知らないので、コピーの際にこの位置が同じになるかどうかは気にしていません。普通はDOSの初期化コマンドでトラックを書き込むので、タイミングが揃って大抵は同じような並びにはなるのですが、コピーツールを使った場合などは、トラックごとにバラバラの位置になるのが普通です。どのトラックとトラックの間の位置関係をチェックしているのかは、チェックしているコードしか知らないので、これを正しくコピーするのは至難の技です。

これらを組み合わせて、例えばトラック2単位毎に半周ずつのデータを書き込む(同期を取って半分ずつ書き込めば、それぞれのデータは4単位離れます)とか、セクターの並び順をチェックするとか、それはもうあの手この手でコピーをしたら、そのことが判るような方法が使われました。

Apple ][のコピープロテクト(3)

どのような手法でガードされているかは、コードを解析することはもちろんですが、ドライブの蓋を開けて、どのようにトラック位置が変化していくかを追うことも大事です。さすがに目で見分けるのは辛いので、トラック位置をLEDで表示する回路を付け加える人もいました。私は隣にAMラジオを置いて、ステッピングモーターの電流を耳で聴いていました。通常の移動は「ピッ・ピッ・ピッ」と進むのですが、シンクトラックらしい挙動を見つけたら、この数を数えます。ハーフトラック移動があると「ピッ」が「ピ」になったりするので聴き分けます。これがわかればツールを使って、トラックから生の情報を丸ごと抜いて、同じように書いていけば良いわけです。

Bit nibbler

ガードを突破する需要は高く、誰もがこんな面倒なことはしないので、コピーツールと呼ばれるソフトが流通するようになりました。有名なのが「ロックスミス」で、代表的な手法を解析することや、あらかじめ解析されたパターンに従って、ディスクを複製することができます。今でもエミュレータで動かすためにフロッピーの内容を(正しく)ファイルに落とす必要があり、生き残っているみたいです。

ちょっと危ない?はなし

この戦いには終わりが無いように見えましたが、遂に最終兵器が登場します。それは「アインシュタイン」と呼ばれる「装置」で本体であるApple][すら必要としません。2つのディスクを同じモーターで回し、片方のディスクから読み込んだデータをそのまま、もう一方に書き込むのです。まるでアナログコピーですね。

Apple][で使われた手法は、ほぼ全ての読み書きがソフトウェアで行われていたからで、他のPCでも少しは使われましたが(トラック診断読み出しで生の情報をチェックする)、下手をすると販売されている「正しい」ディスクがアウトになってしまうので、ここまで酷い使い方はされませんでした。それにどんなガードを用意したところで、結局は抜かれてしまうのですから、複製防止は諦めて他の方法でライセンスチェックを行うようになっていきました。

大事なことは、日本ではパックマン裁判が結審するまで、ソフトウェアが著作物であるとは認定されておらず、複製が少なくとも著作権違反であるという認識は無かったことです(商標や意匠は認められていました)。今でも私的複製に関しては微妙なところが残っているような気はしますが、データが壊れてしまった、または環境に合致しなくなった時に利用し続ける権利は無いので、複製自身を禁止するのはアンバランスだとは思っています。複製できないデータは、いずれ必ず利用できなくなります。


ヘッダ画像はロックスミスのメニュー画面。
https://www.video-games-museum.com/en/game/Locksmith/37/3/12725


この記事が気に入ったらサポートをしてみませんか?