iPhoneにパスワード付フォルダを作ってみた(Jailbreak前提)

iPhoneは、標準状態では「同期」という方法でしかPC内のデータを直接的に移せない。
同期で移せるのは、音楽・動画・ブックマーク・アドレス帳などのデータのみ。
WordやExcelなどのデータをiPhoneに移すには、メールかアップローダー(Yahoo!ブリーフケースなどのパーソナルなあぷろだ)を使うことになる。

もうちょっと進んだやり方としては、App Storeにある
DataCase
http://www.macotakara.jp/blog/index.php?ID=788

Mobile Finder
http://www.ipoday.com/item_2571.html
などのファイル転送ソフトを使い、無線LAN経由で各アプリのSandbox領域内に直接データを送りこむ方法がある。
どうやらこれらのアプリは実質的にはFTPサーバやHTTPサーバなどのサービスを走らせているようで、FilezillaなどのFTPアプリ経由で送ると一番安定して送受信ができる。


さて、本題。
これだけ高機能なiPhoneなのに、実は未だにApp Storeにも「データの保護」を考えたアプリケーションがない。


現状のブリーフケース系のソフトにパスワード認証をつけるだけで、企業ユーズを含めて結構なキラーアプリになりそうなものなのだけども。
まあ、そのうち自分で作って大金持ちになるのでそのままでいいけど(それをここでバラしてどーする)。


自分がMacを買ってObjective-Cを覚えて、App Storeでソフトを販売し始めるまで待つのでは、我ながらいつまでかかるのかわからない。


DatacaseやMobile Finderと同じことは、実は脱獄時に無料で可能になる。
なにしろ無線LAN経由でSFTP(SSHを使ったセキュアなFTPだそうだ)で直接iPhoneに入り、ルートディレクトリだろうが何だろうが見放題、ファイル置き放題だ。


で、今回は手っ取り早く、脱獄済みiPhone用アプリの「lighttpd」を使ってiPhone内にhttpサーバを立て、Basic認証を使ってディレクトリに認証をかけることによって擬似的にパスワードフォルダを作成してみることにする。


lighttpdのインストールと設定

lighttpd - iPhoneでWebサーバーを動かす for 2.0 - iPoday
http://www.ipoday.com/ipodtouch_applications/lighttpd.html
iPod touchlighttpd
http://d.hatena.ne.jp/NeoCat/20080723/1216761818
これにさらにBasic認証用の設定を加える。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/847lighttpdbasic.html

htpasswdを作成して、正しい位置に置く。
.htaccess ファイルを簡単作成「.htaccess Editor」:
http://www.htaccesseditor.com/

これで完成。
Safariから127.0.0.1/secretに対してアクセスすると、Basic認証画面がちゃんと出る。


注意点としては、一度認証に通った後はSafariが設定を覚えているため、パスワード保護を再開したい場合にはホームボタンの長押しで確実にSafariを終了させること。


あと、日本語のファイル名だと、ディレクトリ一覧を見るときに文字化けすること。
日本語のテキストファイルはおそらくUTF-8でないとまともに見られないこと。
この2つの問題点については、ファイル閲覧用のCGIを間にかますことによって解決できそうな気もする。
脱獄者用アプリにはRubyもあるので、慣れている人なら、もっと凝った認証CGIや閲覧CGIを作ることもできるだろう。


あと、基本だけど一応注意。
rootパスワードをちゃんと自分独自のものに変更しておくこと。
そうでないとSSH経由でiPhoneの中身を普通に読まれる。
BossPrefsを使い、不必要な時はSSHLighttpdをしっかりOFFにしておくこと。
この辺はバッテリー保持の問題でもあるけど。


で、そこまでして何を守ってるかって?
いや、iPhoneって他人に見せる機会が多いのだけども、プライベートフォルダ機能がないからうかつに好きな人の写真とかを置いておけないのですよ。
写真フォルダだけを頑固に人に見せることを拒否していたら、「盗撮でもしてるのか」と以前疑われたのだ(泣