honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

SwitchBot Indoor Cameraを解析する(u-boot編)

honeylab.hatenablog.jp

 

さて、カメラの画質とか、そういうのは普通の人にやってもらうことにして、
私はシステムに入ってあれこれできないかを確かめてみます。

 

まず、UART端子が見つかったので、これを使ってu-bootコンソールかLinuxのシェルに残ることを試みます。

u-bootの起動時にいろいろなキーを押していると、ESCを押したときに、パスワードの入力を促されることに気づきました。

 

どうやら、ここで正しいパスワードを入力すれば操作が可能になるようです。

とりあえず、適当に入れてみましたが駄目です。
これは、ここで使われているu-bootのソースコードにパスワードの保存箇所が記録されているはずです。
では、ソースコードを… まだ公開されてないようですね。
とりあえず、メーカに問い合わせて、ソースコードを送ってもらうことに…

 

まぁ、一般のメーカのサポート窓口なんてこんなものです。とはいえ、もうちょっと丁寧に書いてもいい気がしたので改めて返信しておきました。

 

で、u-bootのソースコードが無いのでパスワードのヒントがありません。

取り合えず、同じSoCであるRTS3903を使用している TP-Link C100のu-bootソースを見ていくことにしました。

www.tp-link.com

いろいろ調べてみると、ここでは、CONFIG_ENV領域にある特定の環境変数を取得・比較しているようでした。

f:id:honeylab:20210711010014p:plain

このENV領域がFlash上にあれば、参照できるはずです。

というわけで、Flashを引っぺがしてダンプします。

 


しかし、目grep程度では見つけられませんでした。
では、改めてu-bootのソースを見ていくと…

getenvでは

f:id:honeylab:20210711010152p:plain

CONFIG_ENV_ADDRというアドレスが環境変数の格納されている場所です。

定義を探していくと…

f:id:honeylab:20210711010424p:plain

#define CONFIG_ENV_ADDR 0xB0030000

…はて?どこのアドレスだこれ…?

…CPUのレジスタ空間に近いな

…ああああああ… これたぶんCPU内蔵Flashのアドレスじゃないかな…
(データシートが無いのでほんとかどうかはわからないが、おそらくそう)

ってことはFlashダンプには入ってないわ…

 

残念!!!!!

 

ということで、まずはu-boot shellへの進入に失敗!

 

あとは、本物のu-bootのソースが手に入ったら最終確認してみよう。
もしかしたら、起動したLinuxから無理やりregister読めるかもしれんし…