iPhone Tips

出典: Fukudat.com

iPhone 3Gに関する覚え書き.2008/1/28iPod touchを買ったばかりなのでしばらく我慢してきたが, 2008/9/6にとうとうiPhone 3Gを衝動買い. さらに2009/12/20にiPhone3GSに買い替え...AppleとSoftbankに貢いでるな.

目次

1 Jailbreak

2 インストールしたいパッケージ

MobileTerminal --> iOS4では動かない模様
ターミナルエミュレータ.コマンドを打ち込みたいときに使う.
vim
ファイルの編集に必要.
sudo
ルート権限でのコマンド実行に使う.
OpenSSH
Network越しにログインするために必要.
afc2add
USB経由でファイルシステムにアクセスするためのモジュール.
WinterBoard
iPhone のデスクトップ(SpringBoard)をカスタマイズする.
SBSettings
iPhoneの設定をいじるためのアプリ.ステータスバーをスワイプすると設定パネルが現れる.
パネルに登録するトグルスイッチいろいろ
  • Autolock SBSettings: オートロックのon/off
  • Lock Calendar SBSettings Toggle: Lock Calendarのon/off
SBankNotify (deprecated)
メールが届くと着信音とバイブレーションで知らせる.(FW3から不要)
5-Row QWERTY Keyboard --> 残念ながらiOS4では動かない.
5-Row iOS4 Keyboard --> iOS4用
5行キーボードが使えるようになる.
iPhone 2.0 Toolchain
iPhoneでgccなどコンパイラを動かすためのパッケージ.
Lock Calendar
ロックスクリーンに直近のカレンダーのエントリを表示してくれる.次の予定を調べるのにカレンダーを開かなくてもよくてとても便利.
Five-Coumn SpringBoard, Five Icon Dock
それぞれ SpringBoard と Dock に横5列のアイコンを配置する.
network-cmds
arp, ifconfig, netstat, route, traceroute などネットワーク操作のためのコマンド
Core Utilities
Shellで使う基本的なコマンド類

3 Security

  • root や mobile の初期パスワードは "alpine".このままだと,アドレスがわかったらだれにでも入られてしまうから,必ずパスワードを変えておく.特にOpenSSHを使う場合は,そのインストールの前に必ず実施しておくこと.そうでないとiPhoneOS.Ikeeのようなワームにやられる.
# passwd root
# passwd mobile

3.1 ssh & scpでパスワードの省略

  • (もしキーがなければ)iPhoneにパスワードなしで接続するPCで,キーを生成
$ ssh-keygen -t dsa
pass phraseを2回入力
秘密鍵 ~/.ssh/id_dsa と公開鍵 ~/.ssh/id_dsa.pub ができる.
  • iPhoneに公開鍵 id_dsa.pub を転送.
$ scp ~/.ssh/id_dsa.pub root@iPod_touch_の_IP_address:/tmp
  • iPhoneにsshでログインして,以下のコマンドを実行.
$ ssh -l root iPhone_のIP_address
root@xxxxxx's password: .....
# mkdir /var/root/.ssh
# mv /tmp/id_dsa.pub /var/root/.ssh/authorized_keys
# chmod og-w /var/root
# chmod og-rwx ~/.ssh ~/.ssh/authorized_keys
# exit
重要なのは permission の設定./var/root (home) に他人が書き込めるとダメ,/var/root/.ssh以下を他人が読めるとダメなので,注意.

設定は以上.sshクライアント側でssh-agentを動かし,ssh-addでidentityを登録しておけば,パスワードなしでssh/scpできる.

3.2 syslog

syslogdは初めから常駐しているが,どこにもlogを書いていない. 万一侵入されたとき痕跡を発見しやすくするためにも,syslogをとっておきたい.

/etc/syslog.conf を以下の内容で作成する.

*.*     /var/log/messages

/System/Library/LaunchDaemons/com.apple.syslogd.plist を編集して以下のようにする.

<array>
		<string>/usr/sbin/syslogd</string>
		<string>-bsd_out</string>
		<string>1</string>
</array>

syslogdを再起動.

# /bin/launchctl unload -w /System/Library/LaunchDaemons/com.apple.syslogd.plist
# /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.syslogd.plist

これで/var/log/messagesにログが出るようになったはず.

4 VNC Client

App Store で VNC Client が買える. これで出先のiPhoneから自宅のPCが自由に操作できる.

無料版は,右クリックできない,Ctrl-Alt-Del が送れないなどの制限がある.

4.1 暗号化

Mocha VNC は暗号化に対応していない.自宅サーバーで暗号なしでVNCの口を開けるわけにはいかない.VPNを張るほどのこともないから,ssh でトンネルを掘ることにする.

1. トンネル掘り.iPhoneのTerminalから,自宅のLinuxマシンに向けて,

$ ssh -f -L 5901:XXXX:YYYY ZZZZ sleep 100

を実行.ただし,

XXXX = VNCサーバーの自宅内ローカルIPアドレス
YYYY = VNCサーバーのポート番号
ZZZZ = 自宅マシンのグローバルIPアドレス

ここで,

  • "-f" は,ssh にバックグラウンドで実行することを指示.
  • "-L 5901:XXXX:YYYY" は,localhost の 5901 を,XXXX のポートYYYYとつなぐことを指示.

2. 上のsshがスリープしている(100秒間の)間に, Mocha VNC で localhost:5901 に接続.

5 Databases

次のデータベースファイルが存在する.

  • /private/var/mobile/Library/AddressBook/AddressBook.sqlitedb (/AddressBookの解析参照)
  • /private/var/mobile/Library/AddressBook/AddressBookImages.sqlitedb
  • /private/var/mobile/Library/Caches/MapTiles/MapTiles.sqlitedb
  • /private/var/mobile/Library/Calendar/Calendar.sqlitedb (/Calendarの解析参照)
  • /private/var/root/Library/AddressBook/AddressBook.sqlitedb

6 アプリケーションの活用

6.1 Lotus Notesのカレンダー

  • Lotus Notesのカレンダーと同期する方法 (Calendarの解析)
    この方法は,Lotes のカレンダーをXMLに出力し,それをPerlでSQLiteDBに書いて,iPhoneに転送している.
    本来なら,iCalendar か何かを経由するのが汎用っぽくてよいのだろうが,
    • 他にiCalendarのアプリを持っていない.
    • Lotus NotesのカレンダーからFile->書き出しでファイルの種類にCalendar Fileを選ぶとiCalendar形式で出力できるのだが,Lotus ScriptでiCalendarを出力する方法が分からない.
    ので,とりあえずこれで満足してしまう.

6.2 Lotus Notesのアドレス帳

7 リンク集