Hatena::ブログ(Diary)

MIZの日記 RSSフィード

2008-09-05

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

iPhoneは、標準状態では「同期」という方法でしかPC内のデータを直接的に移せない。

同期で移せるのは、音楽動画ブックマークアドレス帳などのデータのみ。

WordExcelなどのデータ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 - iPhoneWebサーバーを動かす 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って他人に見せる機会が多いのだけども、プライベートフォルダ機能がないからうかつに好きな人の写真とかを置いておけないのですよ。

写真フォルダだけを頑固に人に見せることを拒否していたら、「盗撮でもしてるのか」と以前疑われたのだ(泣