honeylab's blog

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

ソフトバンク キッズフォン2が契約できなかった!!ので!!!!!ハッキングした!

あれやこれやありまして、息子が3年生になるのと、下の娘の卒園式で
部屋が狭いので保護者が二人しか入れない、どうしようか、という話をしたところ、
何と一人で近くの公園で待っているよ、とのこと。
ここ数か月になってようやく家で一人でお留守番ができるようになったが、公園もいけるようになった(自分で自信が出た)ようだ。頼もしい。
とはいえ、心配なので時期も時期だし携帯を持たせよう、と調べたところ、
ソフトバンクのキッズフォン4がちょうど出て、お値段何と3万円らしい。

まじかよ。買えないって。と慌てて調べたところ、メルカリで2世代前のキッズフォン2なら3000円程度で入手可能だ、とのことで、持ち込み新規で契約するべく購入し、販売店に連絡したところ、親の身分証と、使う子供の確認書類、保険資格証明書を持ってきてくれ、ということなのでそろえて持って行った。

キッズフォン契約だと月々750円だけなので大変お得である。

www.softbank.jp


それとは別で、スマフォデビュー割という契約をすると、Androidのスマホを大値引きして1円にし(割賦でもない、値引き)、初年度は月々約1000円、翌年は2700円ぐらい、とのプランがあるとのことだったが、

www.softbank.jp

スマホ壊したらやだし、外でYoutubeばっかり見られても困るし、何なら俺が仕事で持っているiPadを一日中家で使い倒しているので、キッズフォン契約のつもりでいた。

が、店頭に行ったところ、子供の確認書類、資格証明書では効力不足で、マイナンバーカードが無いと契約できない、というのだ。
いやいや、こないだ聞いた時にいいって言ってたで、と確認してもらったが、本部確認でやはりだめだとのことだ。なんでやねん!!!!

いやー困ったな、じゃぁYmobileで音声SIMだけ追加で買って、それを子供のキッズフォンに入れるか、などと考えていたんだけど、ここでなんか言うんだよ。

「スマフォデビュープランだと、主契約者様の契約に加えて、使用者登録は資格証明書で大丈夫です」

もっとなんでだよ!!!罠か!!!罠なのか!!!

は???って感じなんだが、もうそれがそうならそうなんだからしょうがないだろう。

で、Android携帯が1円で買えて、いまの書類で契約して明日の卒園式に間に合わせるにはこれしかない、ということで、なんかの罠なのか、そういう手段なのかわからんけど、スマフォデビュープランで契約することになり、せっかくメルカリで買って息子の手になじみ始めたキッズフォン2、契約できなかった。

 

ぐぬぬうぬ。ちなみに1円になった形態はXiaomi REDMI 15というやつだった。
うちにある情報機器の中ではかなり高性能なほうである。

www.softbank.jp

棚から落ちてきたボタAndroidに息子は喜び、あっという間に使いこなしているようだが

キッズフォン2、契約できなかった。

(下の娘、4月から小学一年生のぶんとしてもう一台買ってあるので、マイナンバーカードを作ってこっちはキッズ契約にしたいところである)

 

ところで、ネットで調べたところ、この世代のauやドコモの子供携帯は割と簡単にadb接続できるAndroidとして使えるらしいんだが、どうもこのSoftbank機を汎用Android化している記事がぱっと見つからなかった。

detail.chiebukuro.yahoo.co.jp

しかし、オープンソースライセンスを見る限り、ほとんどAndroidのようだし、
それなりのことをやってきた私ならどうにかできるだろう。とハック開始。

まずは分解である。
この機種、電池交換がちゃんと想定されていて、ねじ止めのふたを外すことで電池パックやSIMカードにアクセスできるが、それ以上に改造のヒントは見つからない。



なーんて言いながらこの剥がしてはいけないシールを剥がすと。。。ほら!なんかいっぱい出てきた。

Image

まずは、TXピンとGNDに配線を取り付け、ブートログを取得する。

Image

さすがにその辺の中華体温計とは違って、起動後はコンソールはだんまりになってしまうようだ。ログ全体はこちら 

https://gist.github.com/bakueikozo/0205f78e0e4501dde559bf0b4301cecb

ログをざっと眺めたところ、どうやらQualcommのSoCが詰まれているようだ。
QualcommといえばAmazon Echoの分解をしたときに、EDLモードに入ってあれこれしたことがあるはずだ。あの時にはセキュリティが結構ガチガチで何もできなかったが、今回はどうだろうか。

よし、チャッピーに聞いてみよう

聞いてみたところ、かなり緩いのでやっちゃえよ、とのことだった。

基板上にある「BOOT」というパッド、起動時にLかHか、どっちにすればいいか迷うが、そばにある1.8Vのパッドとショートさせるのが自然だろう。ピンセットでショートしながらUSBケーブルでPCと接続すると、Qualcomm EDLモード特有のVIDモードで接続された。バンザイ。

 

続けて、edl.py を使ってファームウェアの吸い出しにかかる。

github.com


吸い出すには、吸出し用の小さなRAMで動作するファームウェアが必要で、この機種専用のものは出回っていないが、同じSoCで作られた携帯電話がたくさんあるので、そのファームに含まれていたものを流用したところ、なんとしっかりフルダンプの取得に成功した!!

github.com

さてここからだ。まずは吸い出したsystem,vendorあたりを解析し、adbdを有効にしたい。
apkをあちこち見ていたところ、なんと、電話アプリで特定のコマンドを入力すると、テストモードやデバッグモードに入れそうなルートを発見した!!!

が、、、この端末、電話アプリのダイヤルパッドが無いんだ。
キッズフォンはあらかじめ登録した連絡先にしかダイヤルすることができない。
せっかくしっかり入っているのに・・・・
呼び出す方法をいろいろ考えてみたり、連絡先にこの特殊コードを投入しようとしてみたが、残念ながらこのルートはダメだった。。

 

過去のハッキングの経験や

honeylab.hatenablog.jp


チャッピーに相談しながらあれこれ考えた結果、systemやvendorのpropを直接改変し、さらにadbdにパッチを当て、強制的にadbdが立ち上がるようにした方がいい、との結論に至った。



propが読み込まれていそうなあたりに、enableできそうなpropを適当に突っ込んでいく。

すると、ついにadbdが立ち上がった!。。。が、authorize必須になっていて、接続できない・・・・ぐぬぬ。。。

ここで、adbdを抜き出して、逆コンパイルしてみる

すると、どうやらbootloader unlockの状態では、adbdは必ず認証モードになってしまう、ということが判った。

加えて、このadbdはsoftbank専用に結構カスタマイズされてて追加コマンドもそこそこあるようだ。これをそのまま使いたいので、auth_requied変数を0のまま、初期化を通したい。
幸運なことに、どうも変数の初期値が1になっていて、unlockなら0にする、lockedなら何もしないという間抜けなコード構造になっていたため、初期値を0にしたところ、lockedでも何もせず、auth無効化でadbdを起動することができた。

とはいえ、adbdの起動までなかなかうまくいかずに結構てこずった。
せっかくなのでハッキング開始からadb接続までのチャッピーとの秘密の会話をここに公開しておくので、眺めてみると結構面白いと思うよ。

chatgpt.com

さて、adbがつながっちゃえばあとはこっちのもの。
メンテナンスモードを起動したり、

 

 

マリオを遊んだり。

 

何でもできるようになると思う。その辺はこれから。
とりあえずこいつ、WiFiモジュールは詰んでるのに、SSIDベースでエリア到着通知を親に知らせる、みたいな機能にしか使ってなくて、インターネットが使えないので、それを使えるようにするところはめんどくさいけどやらないといけないな。
そうすればYoutubeも見れるし。