2012年2月21日火曜日

iPhone 3GS ios4.3.3 で mobileterminal

手元の iPhone 3GS ios4.3.3 は JB 済みではあるが、OpenSSH は入れていない。
なので大丈夫だろうと最近まで root と mobile のパスワードを alpine のまま
放置していた。

しかし、やっぱり不安なので変えることにした。passwd コマンドを実行すべく
cydia から mobileterminal を入れたのだが起動してもすぐ終わってしまう。
どうやら cydia にある mobileterminal は ios4 では動かないらしい。

じゃぁどうするか。sshd を動かしてリモートからログインすれば良いのだろうが
どうしても OpenSSH は入れたくない。

もともと FreeBSD な Mac なので /etc/passwd もとい /etc/master.passwd
を直接いじれば良いんじゃないかと思い、ifuse --root で rootfs ごと mount して
/etc/master.passwd を見ると、ありました。mobile と root のパスワードの
ハッシュが同じで以下のようになってた。

                        : (snip)
  root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/sh
  mobile:/smx7MYTQIi2M:501:501::0:0:Mobile User:/var/mobile:/bin/sh
                        : (snip)

/s の salt の crypt ということで、openssl passwd -crypt -salt /s hoge で求
めた値を直接設定しちゃえと思たのだが、、、

ここでふと昔のことを思い出した。お客さんのところの Mac OS X の /etc/resolv.conf
を直接いじったのは良いが、なんだか名前解決できない場合があった。
で、結局 GUI から DNS サーバを変更して解決したことがあった。
→Mac OS でファイルの直接編集はヤバい?

なのでここはぐっと我慢して、いろいろ調べたところ、mobileterminalのβ版
が ios4 でも動くらしいという情報が Web にあった。

Installation - mobileterminal
http://code.google.com/p/mobileterminal/wiki/Installation

上記 URL には手動でインストールする方法も書いてある。Mac と Win だけだが。
しかし Mac の項を読むと、どうやら iphone の特定の場所に deb パッケージを
コピーして再起動しているだけっぽい。
# Cyberduck だの iFunbox だの Win や Mac の人は大変なんやね…(他人事)


まずは mobileterminal の 520_1 というバージョンを落とした。

 $ cd /var/tmp
 $ wget http://mobileterminal.googlecode.com/files/MobileTerminal_520-1_iphoneos-arm.deb
 $ sha1sum  MobileTerminal_520-1_iphoneos-arm.deb
 84410af6febf2065a2a7fabea49cd5b9f34575f9  MobileTerminal_520-1_iphoneos-arm.deb

んで、ifuse で --root マウント。

 $ ifuse --root /media/iphone

上記ドキュメントを読むと、/var/root/Media/Cydia/AutoInstall/ に deb を
コピーすればいいらしいが、このディレクトリが無い場合は作れと。

 $ mkdir /media/iphone/private/var/root/Media/Cydia/AutoInstall

で、コピー。

 $ cp /var/tmp/MobileTerminal_520-1_iphoneos-arm.deb /media/iphone/private/var/root/Media/Cydia/AutoInstall/

そしたら iphone を再起動。正常起動するかどうかちょっとドキドキした。
再起動後 mobileterminal のアイコンが画面にあった。
ちなみに /var/root/Media/Cydia/AutoInstall/ の下においた deb は無くなっ
てた。

あとは普通に passwd コマンドで mobile と root のパスワードを変えた。
あれ? mobileterminal ってどうやって終わらせるの? exit しても残ってる。
Web 調べるとタップホールドでメニューが出るらしいが、このバージョンは
駄目みたい。仕方ないのでホームボタンダブルクリックからプロセスブチ切り。

再起動後手元の Linux から find -mtime -10 とかして /etc やら /var の
下で変更されているファイルを調べてみたが、関連してそうなファイルは
/etc/master.passwd, /etc/passwd くらいしかなかったので、おそらく直接
編集しても良かったのかもしれないが…

まぁこれで一安心ということで。



0 件のコメント:

コメントを投稿