PASS命令のしくみ
ポケコンには、他人にプログラムソースを見られないようにするため(?)に 『PASS』という命令がついています。
どうしても他人にソースコードを見られたくない場合に便利な機能ではありますが、パスワードを忘れてしまった場合などには困ってしまいます。
ここでは、ポケコンのパスワード解析と、パスワード解除方法について解説します。
PASS命令(省略形 PA.)
[機能]
パスワードの設定あるいは解除を行う。(マニュアル操作時のみ有効)
[書式]
PASS "文字列"
[説明]
・作成したプログラムを他人に知られたくないときや変更されたくないときに、パスワードを与えない限り計算機内のプログラムを呼び出せないようにできる。
・パスワードには8文字までの英数字・カナ文字・記号が設定できる。""(NULL)パスワードは指定できない。8文字以上を設定した場合は、先頭の8文字が評価される。
・秘密化されたプログラムに対するNEW命令・DELETE命令は無視され、保護されるなど(取扱説明書より抜粋)
ほかにも、MON命令が無視される、TEXTモードのBASICコンバータが使えなくなるなど、色々な制約が掛ります。
パスワードはどこに保存されるのか?
ポケコンのパスワードは、メモリ内に保存されています。
具体的には、&H79C0番地~&H79C7番地に保存されています。
また、&H79D9番地には、PASS命令のON/OFFを切り替える値が保存されています。
実際にみてみる
まず電源を入れてプログラムモードに適当なプログラムを入力またはロードしてください。
そして、PASS "任意の文字列" でパスワードを設定し、その後解除してください。
RUN MODE
PASS ”12345678”
PASS ”12345678”
>
次に、「MON」と入力し、機械語モニターを起動します。
機械語モニターを起動したら、「D79C0」と入力し、Enterキーを押します。
MACHINE LANGUAGE MONITOR
*D79C0
すると、次のように表示されます。(PC-G850Vでの例)
79C0 : 31 32 33 34 1234
(E9) 35 36 37 38 5678
00 20 25 00 . %.
00 00 00 00 ....
79D0 : 00 00 00 00 ....
00 00 50 00 ..P.
このように、&H79C0番地~&H79C7番地にパスワードが記録されていることが確認できます。
※ポケコンの使用状況によって、&H79C9番地以降のデータは変わる場合があります。
PASSを解析する(C言語対応機種のみ。PC-G830/PC-G850/PC-G850Vで動作確認)
PASS命令によりロックされたポケコンは、様々な制約を受けますが、C言語は通常どおり使用できます。
C言語を利用すると、メモリへの直接のアクセスも簡単にできます。
パスワードを表示するには、次のようなプログラムを入力します。
100 int main(void)
110 {
120 char *c = 0;
130 c += 0x79c0;
140 printf("%s\n",c);
150 return 0;
160 }
これは、メモリ内に記録されたパスワードの文字列を、直接番地を指定して読み出しているだけのプログラムです。
このプログラムをコンパイルして実行すると、画面にパスワードが表示されます。
PASSを解除する(PC-Gシリーズのポケコン全てで可能)
もしポケコンがC言語に対応していない機種の場合、残念ながらPASSを表示することはできませんが、解除することなら可能です。
先ほども述べましたが、&H79D9番地にはPASS命令のON/OFFを切り替える値が保存されていますので、これを利用します。
この作業には、PASS命令によりロックされたポケコンのほか、ロックされていないポケコンとポケコン間の通信ケーブルが必要です。
2台のポケコンを接続し、RUN MODEにてロックされたポケコンでは「CLOAD M」、ロックされていないポケコンでは「CSAVE M &H79D9,&H79D9」と入力します。
その後、ロックされたポケコン、ロックされていないポケコンの順にEnterキーを押します。
しばらくすると、両方のポケコンにプロンプトが表示され、ロックが解除されます。
※PC-G850Vで実験する場合は、「CSAVE M」を「BSAVE M」に、「CLOAD M」を「BLOAD M」に読み替えてください。また、PC-G850V同士で行ってください。
最後に…
この方法を利用することで、オールリセットをかけなくても、忘れたパスワードを解除することができます。
ただし、この方法は悪用も可能なため、十分注意してお使いください。
また、PASSの解除はメモリを直接操作します。メモリ番地の指定を誤った場合、ALL RESETを余儀なくされる場合があります。
重要なデータの入ったポケコンでは行わないか、あらかじめバックアップを取った後でお楽しみください。
|