netscape.cfg をデコードする

参考文献:

 netscape.cfg には、デフォルトの起動時に読みに行くページの URLや、ガイドボ タン(アイコン)を使う/使わないの設定や、ヘルプメニューに現れるメニューの内容、 ガイドアイコンの内容などが埋め込まれています。
 このファイルはバイナリ形式で供給され、Netscape ブラウザの挙動を左右するこ とができます。またこのファイルには簡単な暗号化がされており、復号するのは簡単で すが、中身を編集して再び暗号化するための鍵がないので、中身を改変することはで きません。改変するためには、Netscape Mission Control を買うか、Netscape Unlimited Browser Distribution Program に加入する必要があります。
 Netscape Mission Control というのは、たしか会社などで特定のカスタマイズを 行ないたい時(例えば proxy の設定をどうする、など)に使用するもので、Netscape Unlimited Browser Distribution Program というのが、たとえば AOL がやっている ような、Netscape のブラウザを特定のプロバイダ仕様にカスタマイズし、それを配 布するような形態だったと思います。

 とりあえず中を覗いてみましょう。

66'mi'i<'9j'mm'@h'hi'7<':<'@l'<j'j:'kk'7j'?:'j@'>h^Q66Ilnpu'JL'wylmz^Q~p{o'/Wylm
Jvumpn0'<82>^Qklmh|s{Wylm/)iyv~zly5z{hy{|w5ovtlwhnl)3')o{{wA66ovtl5qw5ul{zjhwl5j
vt6qh)0B^Qklmh|s{Wylm/)iyv~zly5joyvtl5|zlN|pklI|{{vu)3'{y|l0B^Qklmh|s{Wylm/)pu{s
5hjjlw{fshun|hnlz)3')qh)0B^Qklmh|s{Wylm/)pu{s5johyhj{lyfzl{)3'9:7@0B^Qklmh|s{Wyl
m/)pu{s5mvu{fjohyzl{)3')qpzf^?797?48@?:)0B^Qklmh|s{Wylm/)pu{s5mvu{fzwljfspz{)3')

 less で直接見るとコントロールコードが上のように反転されて表示されるのでよ くわかるのですが、この文字の羅列をしばらくじーっと眺めていると、^Q (0x17)と いう文字がなんだかやけに目につきます。なんだか ^Q という文字が特別な意味を持っ ていそうですね。ここで、もしかして、これって改行文字なんでは? とかいう気が してきませんか(してください :-)。
 UNIX では改行文字は LF (^J; 0x0A) が用いられますから、^J が ^Q にシフトし ていると推測してみましょう。以下のような簡単な C のプログラムを書いてみまし た(こういうのは Perl より C の方が向いてる気がします)。

#include <stdio.h>
int
main(){
    int c;
    while((c = getc(stdin)) != EOF) {
        printf("%c", c - ('q' - 'j'));
    }
    return 0;
}

結果は以下のようになりました。これを適当に抜き出して、preferences.js に書い てから、netscape.cfg を名前を変えるなり削除するなりしてから netscape を起動 してください。netscape.cfg がなくてもヘルプメニューが日本語化されていると思 います。リリースノートの URL を自分が今使っているバージョンの URL にしてみた り(もし本当にあれば、ですけど)、個人用にガイドアイコンのメニューをカスタマイ ズしてみたり、といろいろ使い道がありそうです。

mailto:mistral% gcc -o decode_cfg decode_cfg.c
mailto:mistral% ./decode_cfg < /usr/local/netscape-v461/ja_JP.EUC/netscape.cfg
// fb b5 2c ff 9a ab 05 35 9e 5c c3 dd 0c 83 c9 7a
//Begin CE prefs
with (PrefConfig) {
defaultPref("browser.startup.homepage", "http://home.jp.netscape.com/ja");
defaultPref("browser.chrome.useGuideButton", true);
defaultPref("intl.accept_languages", "ja");
defaultPref("intl.character_set", 2309);
defaultPref("intl.font_charset", "jis_x0208-1983");
defaultPref("intl.font_spec_list", "dt-interface system-120-noscale-fixed-jis_x0208-1983,dt-interface system-120-noscale-prop-jis_x0208-1983,adobe-courier-140-noscale-fixed-iso-8859-1,adobe-times-140-noscale-prop-iso-8859-1,");
config("autoadmin.append_emailaddr", false);
config("autoadmin.failover_to_cached", true);
config("autoadmin.timeout", 30);
config("startup.homepage_override_url", "http://home.jp.netscape.com/ja/home/first.html");
config("toolbar.logo.url", "http://home.jp.netscape.com/ja/bookmark/4_51/tnetscape.html");
config("toolbar.places.default_url", "http://guide.jp.netscape.com/ja/");
config("toolbar.places.item_0.label", "インターネット");
config("toolbar.places.item_0.url", "http://guide.jp.netscape.com/ja/");
config("toolbar.places.item_0.prompt", "");
config("toolbar.places.item_1.label", "人々");
config("toolbar.places.item_1.url", "http://guide.jp.netscape.com/ja/guide/people.html");
config("toolbar.places.item_1.prompt", "");
config("toolbar.places.item_2.label", "イエローページ");
config("toolbar.places.item_2.url", "http://guide.jp.netscape.com/ja/guide/yellow_pages.html");
config("toolbar.places.item_2.prompt", "");
config("toolbar.places.item_3.label", "最新情報");
config("toolbar.places.item_3.url", "http://guide.jp.netscape.com/ja/guide/whats_new.html");
config("toolbar.places.item_3.prompt", "");
config("toolbar.places.item_4.label", "お勧め");
config("toolbar.places.item_4.url", "http://guide.jp.netscape.com/ja/guide/whats_cool.html");
config("toolbar.places.item_4.prompt", "");
config("mail_toolbar.logo.url", "http://home.jp.netscape.com/ja/bookmark/4_51/tnetscapemessenger.html");
config("internal_url.net_search.url", "http://home.jp.netscape.com/ja/bookmark/4_51/tsearch.html");
config("internal_url.more_info_plugin.url", "http://cgi.jp.netscape.com/ja/eng/mozilla/2.0/extensions/info.cgi");
config("internal_url.default_template.url", "http://home.jp.netscape.com/ja/home/gold3.0_templates.html");
config("internal_url.page_from_wizard.url", "http://home.jp.netscape.com/ja/home/gold4.0_wizard.html");
config("menu.places.item_0.label", "インターネット(&I)");
config("menu.places.item_0.url", "http://guide.jp.netscape.com/ja/");
config("menu.places.item_0.prompt", "");
config("menu.places.item_1.label", "人々(&P)");
config("menu.places.item_1.url", "http://guide.jp.netscape.com/ja/guide/people.html");
config("menu.places.item_1.prompt", "");
config("menu.places.item_2.label", "イエローページ(&Y)");
config("menu.places.item_2.url", "http://guide.jp.netscape.com/ja/guide/yellow.pages.html");
config("menu.places.item_2.prompt", "");
config("menu.places.item_3.label", "最新情報(&N)");
config("menu.places.item_3.url", "http://guide.jp.netscape.com/ja/guide/whats_new.html");
config("menu.places.item_3.prompt", "");
config("menu.places.item_4.label", "おすすめ(&C)");
config("menu.places.item_4.url", "http://guide.jp.netscape.com/ja/guide/whats_cool.html");
config("menu.places.item_4.prompt", "");
config("menu.places.item_5.label", "");
config("menu.places.item_5.prompt", "");
config("menu.places.item_5.url", "");
config("menu.help.item_0.label", "ヘルプの目次(&H)");
config("menu.help.item_1.label", "リファレンス ライブラリ(&L)");
config("menu.help.item_1.url", "http://help.jp.netscape.com/ja/products/client/communicator/reflib.html");
config("menu.help.item_2.label", "リリース ノート(&R)");
config("menu.help.item_2.url", "http://home.jp.netscape.com/ja/eng/mozilla/4.5/relnotes/unix-4.51.html");
config("menu.help.item_2.prompt", "");
config("menu.help.item_3.label", "製品サポートと情報");
config("menu.help.item_3.url", "http://home.jp.netscape.com/ja/menu/prodsupp/client/");
config("menu.help.item_3.prompt", "");
config("menu.help.item_4.prompt", "");
config("menu.help.item_5.label", "ソフトウェア アップデート(&T)");
config("menu.help.item_5.url", "http://home.jp.netscape.com/ja/home/update.html");
config("menu.help.item_5.prompt", "");
config("menu.help.item_6.label", "登録(&I)");
config("menu.help.item_6.url", "http://home.jp.netscape.com/ja/home/register.html");
config("menu.help.item_6.prompt", "");
config("menu.help.item_7.label", "メンバーサービス(&G)");
config("menu.help.item_7.url", "http://home.jp.netscape.com/ja/home/services.html");
config("menu.help.item_7.prompt", "");
config("menu.help.item_8.prompt", "");
config("menu.help.item_9.label", "国際化機能");
config("menu.help.item_9.url", "http://home.jp.netscape.com/ja/menu/intl/");
config("menu.help.item_9.prompt", "");
config("menu.help.item_10.label", "セキュリティについて(&O)");
config("menu.help.item_10.url", "http://home.jp.netscape.com/ja/info/security-doc.html");
config("menu.help.item_10.prompt", "");
config("menu.help.item_11.label", "NetWatch");
config("menu.help.item_11.url", "http://home.jp.netscape.com/ja/communicator/netwatch/");
config("menu.help.item_11.prompt", "");
config("menu.help.item_12.prompt", "");
config("menu.help.item_13.label", "&Plug-In について");
config("menu.help.item_13.prompt", "");
config("menu.help.item_14.label", "フォント表示機能について(&D)");
config("menu.help.item_14.prompt", "");
config("menu.help.item_15.label", "");
config("menu.help.item_15.prompt", "");
config("menu.help.item_15.url", "");
config("menu.guide.item_0.label", "インターネット(&I)");
config("menu.guide.item_0.prompt", "");
config("menu.guide.item_0.url", "http://guide.jp.netscape.com/ja/");
config("menu.guide.item_1.label", "人々(&P)");
config("menu.guide.item_1.prompt", "");
config("menu.guide.item_1.url", "http://guide.jp.netscape.com/ja/guide/people.html");
config("menu.guide.item_2.label", "イエローページ(&Y)");
config("menu.guide.item_2.prompt", "");
config("menu.guide.item_2.url", "http://guide.jp.netscape.com/ja/guide/yellow.pages.html");
config("menu.guide.item_3.label", "最新情報(&N)");
config("menu.guide.item_3.prompt", "");
config("menu.guide.item_3.url", "http://guide.jp.netscape.com/ja/guide/whats_new.html");
config("menu.guide.item_4.label", "おすすめ(&C)");
config("menu.guide.item_4.prompt", "");
config("menu.guide.item_4.url", "http://guide.jp.netscape.com/ja/guide/whats_cool.html");
config("menu.guide.item_5.label", "");
config("menu.guide.item_5.prompt", "");
config("menu.guide.item_5.url", "");
config("personal_toolbar.item_0.label", "ネット");
config("personal_toolbar.item_0.url", "http://home.jp.netscape.com/ja/guide/index.html?t");
config("personal_toolbar.item_1.label", "新着");
config("personal_toolbar.item_1.url", "http://home.jp.netscape.com/ja/guide/whats_new.html?t");
config("personal_toolbar.item_2.label", "おすすめ");
config("personal_toolbar.item_2.url", "http://home.jp.netscape.com/ja/guide/whats_cool.html?t");
config("personal_toolbar.item_3.label", "メンバーズ");
config("personal_toolbar.item_3.url", "http://home.jp.netscape.com/ja/bookmark/redirect/memberdir.html?t");
config("personal_toolbar.item_4.label", "コネクション");
config("personal_toolbar.item_4.url", "http://home.jp.netscape.com/ja/bookmark/redirect/profconn.html?t");
config("personal_toolbar.item_5.label", "マーケットプレース");
config("personal_toolbar.item_5.url", "http://home.jp.netscape.com/ja/bookmark/redirect/marketplace.html?t");


}

with (SecurityConfig) {


} //SecurityConfig


mistral@imasy.or.jp SARUMARU Yoshihiko
最終更新: 1999年07月20日17時19分