NokiaのE90に関連した備忘録です。いつまで続くかな?
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
SMSの脆弱性を修正したiPhone OS 3.01を脱獄したので再構築のための備忘録としてまとめておきます。

1)普通にiPhoneを接続してiTunesで3.01にアップデートします。
この時使用されるファイルはiPhone1,2_3.0.1_7A400_Restore.ipsw

2)3.01へのアップデート後redsn0w 8.0を実行します。
redsn0wで指定するファイルはiPhone OS 3.0のiPhone1,2_3.0_7A341_Restore.ipsw

3)redsn0wの指示に従いiPhoneのボタンを操作します。
  ・まずは電源OFFにします
  ・電源ボタンを押します(この時は押しっぱなしで指を離しません)
  ・3秒後ホームボタンも押します(電源ボタンはまだ離しません)
  ・10秒後電源ボタンを離します(でもホームボタンは押したままです)
  ・30秒以内にリブートがかかり脱獄作業が開始されるはずですが、iPhoneが立ち上がらないため先へ進みません

4)最後のところでredsn0wがiPhoneのリブートを待ったまま先へ進まないので
Dev-Team Blogのコメントに書き込まれていたように、USBケーブルを一度外し
3秒後もう一度接続します。するとiPhoneがリブートし脱獄作業が始まります。

5)しばらく待てばiPhoneがリブートし、Cydiaのアイコンが表示されて脱獄は完了します。


この後はいつも通り必要なパッケージを導入すれば元通りになります。


今週になってから夜中に毎日スパムメールがiPhoneのMMSに届いています。

まず

【ご当選】 wakuwaku ! ハッピーファミリーコース

という短いメールの後にリンク付きのメールで、

当選手続きを下記のURLからお願いいたします。

という内容でリンク付きのMMSが届きます。

送信元は、

wkwkfan@untedete.net
wakufam@untedete.net
waqwaq@bararon.net

と似ているようで違うようなメアドですが、

配信停止は下記へ空メール登録してください

と同じアドレスが記載されていました。

それが、

kyohi@frengie.net

です。

ほんと今頃こんなメール送ってきて、こいつら頭悪いんじゃないかと思いますけど、
それ以前に一応念のためMMSも使えるように設定しておこうかと思い作った
MMSのアドレスで、どこにも登録していないのになぜいきなりスパムメールが
届くのか、SoftBankに聞いてみたいですね。
先日早めの夏休みを取ってニューヨークに遊びに行ってきました。
去年ハワイに行った時は、まだiPhoneではSIMロック解除が出来ていなかったのでローミング・オフのWiFiのみでショッピングモールのフリーのホットスポットでがんばったのですが、今回はSIMロックも解除されたのでAT&TのプリペイドであるGoPhoneに挑戦してみることにしました。

ニューヨークに行く前にはいろいろと調べて、をぢの日記さんのところや山根さんのパーム飲茶blogiPhone・iPod touch ラボを参考にAT&Tに行ってトライしてみました。

ニューヨークに着いたその日にタイムズスクェアのAT&Tに行って、iPhoneでGoPhoneを使いたいと対応してくれたお姉ちゃんに片言の英語で話しかけたところ、Unlockしてあるのかとか、1KBで1セントかかるけどいいのかみたいな事を言われ、とりあえずYesと答えながらSIMカードを発行してもらいました。
この時はパスポートを見せることもなく、単にクレジットカードでの支払いですんなり発行してもらえました。
うきうきしながらホテルに帰ってSIMカードをiPhoneに差し込んだところ、キャリアの表示にAT&T 3Gと出たのでメールのチェックをしたのですがMobileMeのサーバーに全くつながりません。
そこで、iPhoneの左上をすりすりしてSBSettingsを呼び出したところData IP AddressがN/Aになっていました。
また、その後SMSでデーターアクセスプランに入っていないのでダメよというメールが届いて、AT&Tのお姉ちゃんのミスかと思い、買い物のついでにMacy'sの近くのAT&Tに行ってデータアクセスのプランを追加して欲しいと言ったのですが、GoPhoneではiPhoneにデータアクセスのプランは契約出来ないとけんもほろろに店を追い出されてしまいました。

そこで、もう一度タイムズスクェアのAT&Tに行って別の店員と話をすると、Appleとの取り決めでiPhoneにはGoPhoneのデーターアクセスプランを付けることは出来ないと言うようなことを言われたので、予備に持って行っていたE90を見せて、じゃあこれで使うならいいだろうとごり押しして、データーアクセスプランを付けてもらいました。
ついでに、GoPhoneの料金の中からMediaNetに100MB分移行してもらい、安心してデータアクセスが出来るようになりました。

で、E90でちゃんとメールが読めることを確認した上でiPhoneにSIMカードを入れたのですが、なぜかData IP AddressがN/Aのままです。
E90では何も設定しなくてもSIMカードを入れるだけでAT&Tのアクセスポイントが3つ作成されていましたが、iPhoneの場合はAPNの設定がいるのかもしれないと思い設定画面を探すもどこにも設定するところが見あたりません。
そこで、翌日5番街のAppleStoreに行ってMacBookで検索すると、どんぴしゃのサイトにたどり着くことが出来ました。
それがこちらです。

このサイトの記事を読むと、iPhone OSが3.0になってAT&Tのcarrier bundleが従来の3.5から4.0に上がってしまいAPNまわりがおかしくなってGoPhoneでのデータアクセスが動かなく(動かせなく?)なってしまったようです。
回避策としてはiPhone Configuration Utilityを使って自分でプロファイルを作りダウンロードする方法とAPN部分のプロファイルを作ってくれるサイトの紹介がありました。
さすがにAppleStoreで前者は出来ないので、後者の方法を使うことにしました。
そのサイトはこちらです。
iPhoneでこのサイトにアクセスし、
 APN: wap.cingular
 Username: WAP@CINGULARGPRS.COM
 Password: CINGULAR1
と入力するとこで、APNの設定プロファイルのダウンロードが行われ、その後は何の問題もなくAT&TのGoPhoneでデータアクセスが出来るようになりました。
気がつけばニューヨークに来て2日目の夜になっていましたが、、、

今回のニューヨーク旅行では、NokiaのE90に助けられ、またAppleStoreにも助けられました。
今回ばかりは行く前にもう少し事前の調査をしておけばと反省しきりです。

ちなみに、データアクセスが出来るようになってからは2chを見たり、会社のメールを読んだり、Brightkiteで写真をアップしたりしても帰る日にはまだ40MB以上残っていました。
Mapに関しては、事前にxGPS用のMapデータを作成してダウンロードしていたのでパケット代の節約になったと思われます。

次回の旅行のために帰る前に追加のMediaNetをチャージをしようと611に電話したのですが、MediaNetは有効期限が30日とアナウンスが流れましたので、次回遊びに来るときに改めてチャージすることにしました。
またこの操作を行う時、電話番号とPIN番号の入力を求められたのですが、契約時にPIN番号の事は何も言われておらず困りましたが、AT&TのGoPhoneのサイトでPIN番号の再発行をするとSMSで新しいPIN番号が送られてくるので忘れても問題ないようです。

これで、アメリカに行ったならGoPhoneでiPhoneやNokiaを楽しく使うことが出来るようになりました。
最近iPhoneのSDKでサンプルプログラムを参考にしてちょこっとプログラミングしてみました。
その時のポイントをObjective-Cの初心者として記録しておきます。

普段はWindowsのエディターを使い慣れているので、まずCygwinでCのメインの動作検証をしてから
最終的に文字列を表示出来るようになったものを関数としてSDKに登録しました。
SDKでもCygwinのgccで作成したソースをそのままエラー無しにコンパイル出来るので良かった
のですが、いざ文字列をtextviewに表示しようとしたところ、textviewはObjective-Cのオブジェクト
のNSStringを要求しています。
Objective-Cをいきなり理解できるほど頭が柔らかくないのでCでごりごりプログラミングしたことが
ここに来て裏目に出てしまいました。

そこで、Webで検索したりObjective-Cの本を読んだりしたのですが、NSStringのことについての
記述はすぐに見つかるのですが、Cの文字列をNSStringに変換する方法というのがなかなか
見つかりませんでした。単にObjective-Cを知らないが故の問題なのですが、、、
最終的にわかったのがstringWithCStringを使うと言うことでした。
このCStringというのが、一般的なC言語のcharで表される文字列だったんですね。
Objective-Cの中にNSStringとは違うCStringというオブジェクトがあるものだと思い込んで
しまっていたのが敗因です。
見たまんまとはこのことで、この記述を見つけたときは目から鱗が落ちる思いでした。

書いたコードはこんな感じで、GetMessage()がCで書かれた文字列を返す関数です。

textview.text = [NSString stringWithCString:GetMessage() encoding:NSUTF8StringEncoding];

以上、備忘録でした。
-----追記ここから-----
【2010/05/23】 以下の記事をアップしました。

iPhoneの脱獄について

本当に脱獄が必要なのか良く考えた上で自己責任で実行してください。
-----追記ここまで-----

この前のことがあってからsyslogを取るようにしたら結構攻撃を受けているようです。
最近電池の減りが早いのでおかしいと思っていたのですがこれで納得です。

攻撃してきたアドレスはさらしておきます。

Jan 19 04:43:53 XXXXXXXX launchproxy[2994]: /usr/libexec/sshd-keygen-wrapper: Connection from: 210.219.122.3 on port: 48948
Jan 19 04:43:53 XXXXXXXX sshd[2995]: Did not receive identification string from 210.219.122.3
Jan 19 04:48:22 XXXXXXXX launchproxy[3024]: /usr/libexec/sshd-keygen-wrapper: Connection from: 210.219.122.3 on port: 58562
Jan 19 04:48:25 XXXXXXXX sshd[3025]: Failed password for root from 210.219.122.3 port 58562 ssh2
Jan 19 04:48:25 XXXXXXXX sshd[3025]: Received disconnect from 210.219.122.3: 11: Bye Bye
Jan 19 04:48:25 XXXXXXXX launchproxy[3024]: /usr/libexec/sshd-keygen-wrapper: Connection from: 210.219.122.3 on port: 58717
Jan 19 04:48:27 XXXXXXXX sshd[3026]: Invalid user fluffy from 210.219.122.3
Jan 19 04:48:27 XXXXXXXX sshd[3026]: input_userauth_request: invalid user fluffy
Jan 19 04:48:27 XXXXXXXX sshd[3026]: Failed password for invalid user fluffy from 210.219.122.3 port 58717 ssh2
Jan 19 04:48:27 XXXXXXXX sshd[3026]: Received disconnect from 210.219.122.3: 11: Bye Bye
Jan 19 04:48:27 XXXXXXXX launchproxy[3024]: /usr/libexec/sshd-keygen-wrapper: Connection from: 210.219.122.3 on port: 58810
Jan 19 04:48:29 XXXXXXXX sshd[3027]: Invalid user admin from 210.219.122.3
Jan 19 04:48:29 XXXXXXXX sshd[3027]: input_userauth_request: invalid user admin
Jan 19 04:48:29 XXXXXXXX sshd[3027]: Failed password for invalid user admin from 210.219.122.3 port 58810 ssh2
Jan 19 04:48:29 XXXXXXXX sshd[3027]: Received disconnect from 210.219.122.3: 11: Bye Bye
Jan 19 04:48:29 XXXXXXXX launchproxy[3024]: /usr/libexec/sshd-keygen-wrapper: Connection from: 210.219.122.3 on port: 58915
Jan 19 04:48:30 XXXXXXXX sshd[3028]: Invalid user test from 210.219.122.3
Jan 19 04:48:30 XXXXXXXX sshd[3028]: input_userauth_request: invalid user test
Jan 19 04:48:30 XXXXXXXX sshd[3028]: Failed password for invalid user test from 210.219.122.3 port 58915 ssh2
Jan 19 04:48:31 XXXXXXXX sshd[3028]: Received disconnect from 210.219.122.3: 11: Bye Bye
Jan 19 04:48:31 XXXXXXXX launchproxy[3024]: /usr/libexec/sshd-keygen-wrapper: Connection from: 210.219.122.3 on port: 59027
Jan 19 04:48:32 XXXXXXXX sshd[3029]: Invalid user guest from 210.219.122.3
Jan 19 04:48:32 XXXXXXXX sshd[3029]: input_userauth_request: invalid user guest
Jan 19 04:48:32 XXXXXXXX sshd[3029]: Failed password for invalid user guest from 210.219.122.3 port 59027 ssh2
Jan 19 04:48:32 XXXXXXXX sshd[3029]: Received disconnect from 210.219.122.3: 11: Bye Bye
Jan 19 04:48:32 XXXXXXXX launchproxy[3024]: /usr/libexec/sshd-keygen-wrapper: Connection from: 210.219.122.3 on port: 59141
Jan 19 04:48:34 XXXXXXXX sshd[3030]: Invalid user webmaster from 210.219.122.3
Jan 19 04:48:34 XXXXXXXX sshd[3030]: input_userauth_request: invalid user webmaster
Jan 19 04:48:34 XXXXXXXX sshd[3030]: Failed password for invalid user webmaster from 210.219.122.3 port 59141 ssh2
Jan 19 04:48:34 XXXXXXXX sshd[3030]: Received disconnect from 210.219.122.3: 11: Bye Bye
Jan 19 04:48:34 XXXXXXXX launchproxy[3024]: /usr/libexec/sshd-keygen-wrapper: Connection from: 210.219.122.3 on port: 60063
Jan 19 04:48:36 XXXXXXXX sshd[3031]: Invalid user mysql from 210.219.122.3
Jan 19 04:48:36 XXXXXXXX sshd[3031]: input_userauth_request: invalid user mysql
Jan 19 04:48:36 XXXXXXXX sshd[3031]: Failed password for invalid user mysql from 210.219.122.3 port 60063 ssh2
Jan 19 04:48:36 XXXXXXXX sshd[3031]: Received disconnect from 210.219.122.3: 11: Bye Bye


パスワードはalpineから変更しておいたのですが、辞書攻撃でやられたようです。
よく使われるパスワードTOP500とかに載っていないので安心していましたがちょっと甘かったようで、googleでパスワードを検索するとそれなりに出てきちゃいました。(^^ゞ

2.1の時にはsshの設定を変更してパスワードではなくキーファイルでのアクセスのみ許可する設定にしておいたのですが2.2に上げた時に設定するのを忘れたようです。

変更箇所は

/etc/ssh/sshd_config



#PasswordAuthentication yes

をコメントアウトしてnoにしておきます。

PasswordAuthentication no

これでパスワードによるログインが出来なくなりますので安心です。

もうしばらくはsyslogで確認しておいた方が良さそうです。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。