Pocket wifi Unlock化への道2010/06/09 12:01

Pocket WifiにはSIM Lockはかかっていなく、海外ではEM以外の電波をつかめるらしい。ただし、ネットワークロックがかかっており、EM以外のネットワークを使うのは無理らしい。

・・・・どこでネットワークをはねているのだろう?

と言うことで、せっかくtelnet出来たことだし、中身をのぞいてみますか。

これから話すことは、linuxの知識があるかた向けに話します。
最低限、mountやcp, mvが使えることを期待しています。

1.Pocket Wifiとのファイルのやりとり
telnetで中に入れれば、catを使って中を覗くことが出来ます。ただし、エディタがないので、編集はPCを使ってやることになるでしょう。エディタを移植しても良いですが、Pocket Wifiのrootはcramfsになっており、ファイルを直接置くことができません。なので、せっかくある microSDスロットを使いましょう。

telnetでログインしたら、
mkdir /mnt/sdcard
mount -t vfat /dev/mmcblk0p1 /mnt/sdcard
と打ちます。

これで、/mnt/sdcardで、microSDの中身が見れます。
(PCとの同時アクセスは出来ませんのでPCで書き込んだ後に、上記コマンドを打ってください。)
Pocket Wifiのファイルを、/mnt/sdcardにコピーして、その後は
sync
umount /mnt/sdcard
と打って、Pocket Wifiから電池を抜いて再起動しましょう。
(電池を抜かないと、microSDの中身をPCに見せてくれません。)

これで、ファイルのやり取りが出来る環境ができました。

2.Webの設定画面をハックする。
上記の手順で、/www/js以下を丸々/mnt/sdcardにコピーしましょう。

次に、
mount -t vfat /dev/mmcblk0p1 /www/js
てなことをすると、
Webの設定画面のjsがmicroSDの中身を参照します。

(夜へ続く)


Pocket Wifi Unlock化への道(その2)2010/06/09 22:00

さて、なぜ直接、Pocket Wifiの中身を書き換えないのか?
それは、Pocket Wifiに使われているファイルシステムがcramfsと言うRead Onlyの圧縮ファイルのため、ひとつのファイルを書き換えることはできないからだ。

3.どう書き換えるか?
これはtelnetでなくてもわかるが、ネットワークの選択画面で手動にすると、ネットワークとして選べるのがEMだけあるが、実際に、このネットワークの画面を作っている、javascriptを見ると、
at_network_list_get
を使って、ネットワークのリストを作っていることがわかる。
じゃ、この関数を持っているモジュールをだましてやればOKなのでは?
と考えては見たが、どうだますかがわからない。
一番簡単なのは、ネットワークロックがかかっていないファームを見ることができればよいのだが・・・・

E5830のファイルが覗ければ良いな・・・・

でも、E5830持っていないし・・・・!?

4.E5830のファイルを見る
ここに書くことは、公開すると法に触れる可能性があるので、ぼかして書きます。

1.「E5830 ファーム」で検索をかける。
2.どんなファイルでも解凍できるツールで、入手した
  ファイルを解凍
3.「505というファイル」=ファーム+あるファイルシステム
 (ヒントは、この記事)
4.ファイルシステムの先頭から、ファイルの最後までを
  別ファイルに保存
5.保存したファイルをlinuxに持っていってマウント


これから書く記事は、これらが理解できる人向けに書きますので、質問は受け付けません。
(続く・・)

ちょっと寄り道2010/06/12 02:25

Pocket Wifiのユーザーランドで、書き換えられる領域として、揮発性のRAM FS以外に、不揮発領域として
/mnt/flash
というものがある。

書き込める容量が少ないため、スクリプト程度しか置けないけど・・・・

スクリプト?

/etc/init.d/rcS

ってのが、電源ON時に呼ばれているのは、中身を見ていればわかるが、実は、この/etc/init.d/rcSから、

/mnt/flash/customer.rcS

ってスクリプトを実行することができるのだ。

なので、このスクリプトからmicroSD上のファイルが実行できれば、本体を書き換えなくても、いろいろな実行ファイルを自動で動かすようになる。・・・・・はず。

だが実際は、このスクリプトが実行されるタイミングでは、マイクロSDスロットはマウントすることはできない。

なので、遅延実行のスクリプトをする必要があるのだが、どんな方法があるだろうか・・・・。

まあ、自動でマイクロSD上のファイル実行ができるようになれば、危険を少なく、失敗したとしてもマイクロSDを抜けば元に戻せる安全な改造ができるな。

ちなみに、/bin 以下に自動実行されるいろいろなシェルスクリプトがあるのだが、
pa = Power Adapter, nopa = No Power Adapter
らしく、USBにつないでいるときとつないでいないときで、処理を変えているらしい。

あと、dc unlockで使う、USBポートがD25HWでは殺されているので、dc unlockが見つけてくれないポートも、このスクリプトを実行してやると出てくる。

でもdc unlockではネットワークロックははずせないようだけど。