星をみるひと 攻略 - パスワード解析


はじめに 基礎データ 乱数解析 戦闘システム MAPイベント パスワード解析 解析ツール
 
パスワード生成ツール
 
お使いの端末のJavaScriptで動作します。サーバに所持金額が送信されることはありません。

個々の薬の最大数は4個。

イベントSW

アイテム

みなみ

しば

みさ

あいね

経験値は4の倍数、所持金は256の倍数に切り下げられます。

パスワード ◎は© 終はFIN


生データ($03EB~)

 
パスワードの仕組み
 

SAVEデータ作成 → 可読文字化 → チェックサム計算 の順に処理される。

(1)SAVEデータ作成

可読文字は7bit値であるため、下記の順序で詰め込んでいる。

チェックサム

後で計算する。

薬は最大で4個持てるため、3ビット×10種=30ビット必要。

1文字に使用できるビット数は7のため、4バイト+2ビットの領域を使用する。それならば最大各7個持てるようにしてもよかったのではなかろうか…

特に、高位のビットが変動する場合、パスワードの入力時に↑or↓を何回も押す必要が出てくる。不用意に薬を持つと入力に手間取ってしまう。あいむ・かりうは持たないようにしたい。

イベントSW

同じ理由で、メモは木下に渡すべきではない。最高位のbitが立ってしまう。

bit位置対象イベント
A発電所:古びた発電機電源ON
Bでうす:治療
C行政区:マックスのことを聞いてどうなる。あいつは死んでしまった!
D病院:ナターシャが知っている
E居住区:ナターシャ「あーさに会ってみて
F警備室:このメモを木下に渡してくれ
G病院:マックスに会ってきなさい
Hラボ:右下シャチ「地球を発見した。
Iコックピット:左側イルカ「お前たちの代表と話がしたい
Jラボ:左上イルカ「お前たちには2つの道が残されている~代表権を授けよう

アイテム

所持している個数でパスワード長が変動する。もちろん何も所持していなければ短くなる。

アイテムIDを3ビットにする都合により、アイテムIDが2以上の場合のみ、アイテムIDを1引いて(3ビットにして)格納する、という変則的な処理を行っている。そのためアイテムIDが1のBOMBはSAVEされない。

アイテムは2個ペアで1文字となる。SAVE対象のアイテムを奇数個しか持っていない場合、ペアの欄には000が入る。が、CONTINUE時にはIDを+1されることで、BOMBに化ける。

不要なアイテム所持もパスワードが長くなる要因となる。

セパレータ/フィニッシャ

アイテムが可変長のため、©の手前までをアイテム定義としている。パスワードには必ず©の文字が入る。同じく、FINも必要。

キャラクタ

仲間が増えるごとにパスワードが5文字長くなる。

所持金は下8ビットが削られる。経験値は下2ビットが削られる。(★ごーるどは、おおくて255ごーるど引かれます。けいけんちは、おおくて3引かれることがあります。)

現在HP,MPは保存されないため、再開時に全回復する。(★ひっと力・さいこ力・けいけんちは、そのときのレベルの最大値になります。)経験値がそのときのレベルの最大値になるのではなく、レベルがそのときの経験値の最大になる。

(2)可読文字化

得られたデータの各バイトに対し、+65(2進数表記で+01000001)を行う。

値に対応する文字は以下の通り。

10進数2進数
6501000001
6601000010
6701000011
6801000100
6901000101
7001000110
7101000111
7201001000
7301001001
7401001010
7501001011
7601001100
7701001101
7801001110
7901001111
8001010000
8101010001
8201010010
8301010011
8401010100
8501010101
8601010110
8701010111
8801011000
8901011001
9001011010
9101011011
9201011100
9301011101
9401011110
9501011111
9601100000
10進数2進数
9701100001
9801100010
9901100011
10001100100
10101100101
10201100110
10301100111
10401101000
10501101001
10601101010
10701101011
10801101100
10901101101
11001101110
11101101111
11201110000
11301110001
11401110010
11501110011
11601110100
11701110101
11801110110
11901110111
12001111000
12101111001
12201111010
12301111011
12401111100
12501111101
12601111110
12701111111
12810000000
10進数2進数
12910000001
13010000010
13110000011
13210000100
13310000101
13410000110
13510000111
13610001000
13710001001
13810001010
13910001011
14010001100
14110001101
14210001110
14310001111
14410010000
14510010001
14610010010
14710010011
14810010100
14910010101
15010010110
15110010111
15210011000
15310011001
15410011010
15510011011
15610011100
15710011101
15810011110
15910011111
16010100000
10進数2進数
16110100001
16210100010
16310100011
16410100100
16510100101
16610100110
16710100111
16810101000
16910101001
17010101010
17110101011
17210101100
17310101101
17410101110
17510101111
17610110000
17710110001
17810110010
17910110011
18010110100
18110110101
18210110110
18310110111
18410111000
18510111001
18610111010
18710111011
18810111100
18910111101
19010111110
19110111111
19211000000
10進数2進数
19311000001©
19411000010FIN

(3)チェックサム計算

1文字目は奇数番目(3,5,7,9,...)、2文字目は偶数番目(4,6,8,10,...)の、(+65された後の)各バイト値の総和を取り、 &0x7fで下位7bitを取得し、そこに+65し自身を可読文字化する。

FINの文字はチェックサムの計算に含まない。


[▲]