さて、カメラの画質とか、そういうのは普通の人にやってもらうことにして、
私はシステムに入ってあれこれできないかを確かめてみます。
Switch bot indoor camera 分解
— ひろみつ(honeylab) (@bakueikozo) July 8, 2021
SoCはRTS3903N mipsなのかな?
左下にあるのUARTっぽいな
コネクタ持ってないなぁ pic.twitter.com/aVIGIZYFGs
まず、UART端子が見つかったので、これを使ってu-bootコンソールかLinuxのシェルに残ることを試みます。
u-bootの起動時にいろいろなキーを押していると、ESCを押したときに、パスワードの入力を促されることに気づきました。
uboot起動中にESCで反応したが、uboot password保護
— ひろみつ(honeylab) (@bakueikozo) July 8, 2021
まぁFlashひっぺがしたらいけるんちゃう pic.twitter.com/XCZvIlCzul
どうやら、ここで正しいパスワードを入力すれば操作が可能になるようです。
とりあえず、適当に入れてみましたが駄目です。
これは、ここで使われているu-bootのソースコードにパスワードの保存箇所が記録されているはずです。
では、ソースコードを… まだ公開されてないようですね。
とりあえず、メーカに問い合わせて、ソースコードを送ってもらうことに…
switchbotしっかりして
— ひろみつ(honeylab) (@bakueikozo) July 9, 2021
だいたいみんな初手コレだなw pic.twitter.com/GVhL8FiJVE
まぁ、一般のメーカのサポート窓口なんてこんなものです。とはいえ、もうちょっと丁寧に書いてもいい気がしたので改めて返信しておきました。
私は優しいのでちゃんとその後に説明してます(若干日本語が変だな) pic.twitter.com/7i5XpOltfD
— ひろみつ(honeylab) (@bakueikozo) July 10, 2021
で、u-bootのソースコードが無いのでパスワードのヒントがありません。
取り合えず、同じSoCであるRTS3903を使用している TP-Link C100のu-bootソースを見ていくことにしました。
いろいろ調べてみると、ここでは、CONFIG_ENV領域にある特定の環境変数を取得・比較しているようでした。
このENV領域がFlash上にあれば、参照できるはずです。
というわけで、Flashを引っぺがしてダンプします。
きゅっきゅっきゅいーん pic.twitter.com/WHjzwYyKhp
— ひろみつ(honeylab) (@bakueikozo) July 8, 2021
しかし、目grep程度では見つけられませんでした。
では、改めてu-bootのソースを見ていくと…
getenvでは
CONFIG_ENV_ADDRというアドレスが環境変数の格納されている場所です。
定義を探していくと…
#define CONFIG_ENV_ADDR 0xB0030000
…はて?どこのアドレスだこれ…?
…CPUのレジスタ空間に近いな
…ああああああ… これたぶんCPU内蔵Flashのアドレスじゃないかな…
(データシートが無いのでほんとかどうかはわからないが、おそらくそう)
ってことはFlashダンプには入ってないわ…
残念!!!!!
ということで、まずはu-boot shellへの進入に失敗!!
あとは、本物のu-bootのソースが手に入ったら最終確認してみよう。
もしかしたら、起動したLinuxから無理やりregister読めるかもしれんし…