ポメラDM200の内部OSは多分UbuntuベースのカスタムOSであるとみられる。

速報!ポメラDM200はUbuntu?アップデート用バイナリ解析第一報!

この記事をシェアする

本日(平成28年12月16日)午前9時~10時頃に、ポメラDM200のソフトウェアアップデートが公開されました。

Time is money. Especially morning so.
速報です。 以下のポメラDM200の製品サポートページの、ダウンロードページにて、ソフトウェアアップデートが公開されました。 http://www.ki

http://www.kingjim.co.jp/support/pomera/software/dm200/dl

ただし、こちらの規約にて「一切の転載を禁止します」とあります。

今回は、バイナリーの解析結果の第一報を報告しますが、

スクリーンショットも掲載せず、文字列による報告のみにとどめることをご了承ください。

さて、

仕事の空き時間をむりやり作りつつ、バイナリーを解析しはじめました。

ダウンロードして得られたzipファイルを解凍すると「bin」ファイルが得られます。

 

 

BINファイルとは

ポメラDM200の内部。このバイナリを調査すればソフトウェア内部も分かりそう!
ポメラDM200の内部。このバイナリを調査すればソフトウェア内部も分かりそう!

 

BINファイルとは「バイナリーファイル」というものです。

バイナリーとは本来の意味は「8ビット=1バイトの連続」という意味程度しかありません。

広義の意味では、「バイナリーデータ」言うと、基本的にはテキストデータ以外全てを指します(テキストデータもバイナリーデータと言うことも可能)。

とくにコンピュータ技術者の間で「バイナリーデータ」というと、「直接ビューアーやエディタで閲覧するデータではなく、何らかの加工をしたもの、ソフトが扱うデータを固めたもの」といった意味合いが強くなります。

例えば、過去のauのBREWアプリなどで大容量のゲームアプリなどの、大量の「画像データ・音声・音楽データなど」をBINファイルとして一つのファイルへ結合し、アプリ起動時やアプリ初回起動時などにデータをメモリー上へ展開して使うような手法が主流でした。

iアプリやSoftBankなどのJava環境が用いられたものでも、数は少ないものの一部のベンダーに採用されていました。

さて、

ポメラのBINファイルに話を戻しましょう。

単純に「BINファイル」となっていては、中に何が入っているかは解析しないとわかりません。

そこで、BINデータを簡単にですが、解析してみました。

 

 

 

アップデート用のBINデータを簡単に解析してみた

このようなBINファイルの解析はどのような手法があるのでしょうか。

色々な解析方法があるでしょう。

しかし、一番最初に行うことは「バイナリーエディタ」でデータを閲覧することです。

実際にバイナリーエディタで確認してみました。

 

 

 

先頭データ

中身を確認してみよう!
中身を確認してみよう!

 

さて、このBINファイルの先頭データが「OX2F」から始まることが分かりました。

以下のようなデータから始まっています。

DUMP TYPE:HEXADECIMAL
ADDRESS :00000000h (0)

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
4F 58 32 46 E0 65 D6 4F 03 00 00 00 00 00 00 00
01 00 00 00 01 00 00 00 32 00 00 00 06 00 00 00
DUMP TYPE:EUC-JP※
ADDRESS:00000000h (0)

OX2F ・eヨO
     2

※ この(EUC-JP)、内容は正確なものではありません。説明用に手作業で記述しています。

 

細かい値は正直言って、ぱっとバイナリーデータを見ただけでは分かりません。

とくに「46 E0 65 D6 4F」のデータは不明ですが、それに続く

03 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 32 00 00 00 06 00 00 00

は何らかの意味を汲み取れます。

 

 

 

リトルエンディアンの可能性が高い

まず、リトエルエンディアンである可能性が高そうです。

エンディアンというのは、簡単に言うとデータの並びの法則です。

リトエルエンディアンなら、そのエンディアン(データの並び)がリトル(小さい順に並べる)という意味です。

また、何らかの値が「03」であり、それに続く「01」と「01」という2値がバージョン番号を示しているものと思われます。

その後ろに何らかの「32」という値と「06」という値が続いています。

 

 

 

データは特別な加工がされていない可能性が高い

さらにデータを解析していきます。

そうして、データ自体には特別な加工(暗号化、難読化、独自形式での結合処理等)がなさなれいないことが判明しました。

例えば、カーネルらしき識別情報や、何らかのデータ群とみられる特徴的な領域などを確認することができています。

 

 

以下の領域に、「W5S1」から始まるデータ領域が存在するようです。

ADDRESS :02021400h (33690624)

 

 

以下の領域に、「lost+found」という文字列が確認されました。

ADDRESS :22449C29h (574921769)

 

 

決定的なのが、その直後に「ATOK」の文字列が確認されました。

ADDRESS :22449C34h (574921780)

 

これらの結果は、要するに、

「今回のバイナリーは、すべてのファイルを直に結合したファイルである」

とみて間違いありません。

 

 

 

 

バイナリー内に日本語を確認

バイナリ内部にポメラ特有の日本語の文言を発見!
バイナリ内部にポメラ特有の日本語の文言を発見!

 

このバイナリーを調べていると、以下のようなデータを確認することができました。

DUMP TYPE:HEXADECIMAL
ADDRESS :32D01800h (852498432)

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
83 7C 83 81 83 89 82 A9 82 E7 83 41 83 62 83 76
83 8D 81 5B 83 68 0D 0A 00 00 00 00 00 00 00 00
DUMP TYPE:Shift_JIS
ADDRESS :32D01800h (852498432)

ポメラからアップロード

 

DUMP TYPE:HEXADECIMAL
ADDRESS :32D01C00h (852499456)

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
EF BB BF E3 83 9D E3 83 A1 E3 83 A9 E3 81 8B E3
82 89 E3 82 A2 E3 83 83 E3 83 97 E3 83 AD E3 83
BC E3 83 89 0D 0A
DUMP TYPE:UTF-8
ADDRESS :32D01C00h (852499456)

ポメラからアップロード

 

多分、ポメラの「アップロード」を使った際に、メール本文に付与するフッターの内容かと思われます(異なる可能性も高い)。

 

 

 

Pythonスクリプトを発見

バイナリー内部に、Pythonのスクリプトを発見することができました。

DUMP TYPE:HEXADECIMAL
ADDRESS :32D02000h (852500480)

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
23 21 2F 75 73 72 2F 62 69 6E 2F 70 79 74 68 6F
6E 0A 0A 66 72 6F 6D 20 5F 5F 66 75 74 75 72 65
:
以降省略
DUMP TYPE:EUC-JP
ADDRESS :32D02000h (852500480)

#!/usr/bin/pytho
n  from __future
__ import absolu
te_import, print
_function, unico
de_literals  fro
m optparse impor
t OptionParser i
mport sys import
 commands import
 dbus import dbu
s.service import
 dbus.mainloop.g
lib try:   from 
gi.repository im
port GObject exc
ept ImportError:
   import gobjec
t as GObject imp
ort bluezutils  
BUS_NAME = 'org.
bluez' AGENT_INT
ERFACE = 'org.bl
uez.Agent1' AGEN
:
以降省略

 

このコードは、端的に言えばBlutoothに関連するものです。

したがって、以前ポメラDM200を分解した際に、バッテリーの型番であると思われた「ONYX」(型番はONYX2)が、バッテリーではなくBlutooth関連の型番である可能性が非常に高くなりました(実は、別件で確定しています)。

 

そういえば、分解した際にBlutoothのものは見つけていませんでしたので、その点でも可能性は高いでしょう。

 

シェルスクリプトも発見

ポメラの内部OSは、やっぱりDOSじゃなかった!残念!!
ポメラの内部OSは、やっぱりDOSじゃなかった!残念!!

 

また、内部にシェルスクリプトも含まれていました。

ADDRESS :32D04000h (852508672)

 

ただし、こちらの内容はダンプふくめ掲載を止めておきます(コードの長さが短いので、引用するとほぼ全体となるため)。

さすがにシェルスクリプトが含まれているのであれば、やはりOSはLinux/Unixだと見るべきでしょう。

このシェルスクリプトの内容は

  • 引数が接続済みだったら内部のwf_connectedの日時を更新
  • 引数がログインだったら内部のwf_loginの日時を更新
  • 引数が送信だったら内部のwf_mailsendの日時を更新
  • 引数がフィニッシュだったら内部のwf_finishedの日時を更新する

という処理になっているようです。

この処理の流れから、ポメラのアップロード周りの処理が含まれていそうです。

 

Linux/Unixの「Rational License Key Server」が含まれている

 

Rational License Key Serverのサービス(/機能?)のモジュールが使用されているようです。

DUMP TYPE:HEXADECIMAL
ADDRESS :32D04550h (852510032)

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
            2F 6C 69 62 2F 6C 64 2D 6C 69 6E 75
78 2D 61 72 6D 68 66 2E 73 6F 2E 33
DUMP TYPE:EUC-JP
ADDRESS :32D04550h (852510032)

    /lib/ld-linu
x-armhf.so.3

 

「/lib/ld-linux-armhf.so.3」で検索してみると、以下の2つのの文献がみつかりました。

このサービスに関しては、専門外ですのでこれ以上調べるのはやめておきます。

 

 

gccのリンケージ情報とみられるものを発見

gccのリンケージ情報とみられるものを以下のアドレスに発見しました。

ADDRESS :32D04759h (852510553)

 

しかしこれ自体に意味があるかは不明です。

それより、以下の情報が有益です。

 

 

OSはUbuntuベース(Linaro)っぽい???

ポメラDM200の内部OSは多分UbuntuベースのカスタムOSであるとみられる。
ポメラDM200の内部OSは多分UbuntuベースのカスタムOSであるとみられる。

別の領域のgccのリンケージ情報とみられる中に、OS名とみられる情報が含まれていました。

DUMP TYPE:HEXADECIMAL
ADDRESS :32D05860h (852514912)

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
            47 43 43 3A 20 28 55 62 75 6E 74 75 
2F 4C 69 6E 61 72 6F 20 34 2E 39 2E 32 2D 31 30 
75 62 75 6E 74 75 31 33 29 20 34 2E 39 2E 32 00 
47 43 43 3A 20 28 55 62 75 6E 74 75 2F 4C 69 6E 
61 72 6F 20 34 2E 39 2E 32 2D 31 30 75 62 75 6E 
74 75 31 31 29 20 34 2E 39 2E 32 
 
DUMP TYPE:EUC-JP
ADDRESS :32D05860h (852514912)

    GCC: (Ubuntu
/Linaro 4.9.2-10
ubuntu13) 4.9.2 
GCC: (Ubuntu/Lin
aro 4.9.2-10ubun
tu11) 4.9.2

ダンプだと読みにくいので抽出すると、

「GCC: (Ubuntu/Linaro 4.9.2-10ubuntu13) 4.9.2 GCC: (Ubuntu/Linaro 4.9.2-10ubuntu11) 4.9.2」

となっています。

Linaroというのは、これまた専門外で、私にはよく分かりません。

以下にリンクを掲示しておきます。

ARM系のLinux/Unixの組み込み開発を支援する団体のようです。

 

 

最後に

色々な情報が分かりました。今回は第一報として、ここまでで切り上げておきます・・・仕事の都合上(汗)。

他にも、ポメラの内部のエディター部が、どのような構造になっているかもつかめる可能性もあります。

今回の収穫として、内部OSがUbuntuベースである可能性がとても高いことが得られました。

まとまった時間がとれたらPCにハードウェアエミュレーターを使ってUbuntuをインストールして、ゴニョゴ・・・(おっと誰か来たようだ)。

今後の情報を楽しみにしていただければと思います。

この記事をシェアする
Ranking Site
にほんブログ村 PC家電ブログへ 

DM200の最新記事(最大10件)

投稿者:

Ganohr

https://twitter.com/garnot1 https://twitter.com/ganohr 私は小学4年からプログラミングを初め、ITエンジニアとしても10年の実績のある個人SEです。ハンドルは「ガノー」で、通常の綴は「Garnot」です。「Ganohr」はガノーという音と、「Gan=ガン(目)、Ohr=オール(耳、ドイツ語)=目と耳」という意味を込めたものです。 目と耳に届く情報を大切にしたい! 目と耳で楽しめるゲームやコンテンツを作りたい、発信したい! そういう思いで当サイトを運営しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

SPAM対策が施されています。投稿に失敗すると1時間ロックされます。