touchを旧FWで復元
iPod touchの新ファームウェアが週末(噂)に登場し、この段階でJailbreakは不可能になる見通しです。まぁ、つまりバージョンアップしなければ良いんですが、問題は、復元処理。iTunesによるiPodの復元は
- Appleサーバーに接続し最新バージョンを確認
- 最新版が存在した場合はダウンロードして使う
- HDD内ファイルが最新バージョンだった場合はそれを使う
という動作になっています。勝手に最新バージョンがダウンロードされてしまう、と。それこそLANケーブルを引っこ抜くなどしてもムダで、Appleサーバーへの接続が不可能だった場合には復元処理自体が行われない。「旧バージョンのファームウェアを使った復元」は基本的に不可能な訳です。
で、先に書いておくと、この方法で多分大丈夫なはず。
参考:もしかしたらiPod touchもダウングレードできるかもしれない : Gizmodo Japan(ギズモード・ジャパン)
※追記:この方法を使う予定の人も、必要なファイルを今のうちに落としておかないといけない可能性があるので、全文表示の「※追記」まで目を通しておいて頂けると。
ただ、もう一つ方向性(というか上記記事の機能を知らずに以下をふと調べて、途中で上記記事を見つけた)があるので、上記記事が無理だった場合には下の方向性で攻めるのが正解かな、と。
ということで「もう一つの方向性」の作業の流れ。
- iTunesとAppleサーバーの間の、新バージョン登場前である現在の通信を傍受する
- それを再現する(「最新版?1.1.1だよ?」と返す)サーバーをたてる
- iTunesに自分のマシンをAppleサーバーだと誤解させる
つまり、新バージョンが出た後でも、iTunesが「最新版は……今俺が持ってるヤツか、んじゃダウンロードしなくて良いやね」と判断してくれれば良い。そのように判断してくれれば、現在使っている(=旧バージョンの)ファームウェアを使った復元を行わせることが可能になる(はずだ)。
そして、「復元」という処理を解析していないので断言はできませんが、おそらくこれは「バージョンダウン可能」の意味にもなる。つまり、一度新iTunes+新ファームウェアをインストールしてしまったとしても、PCから一度iTunes関連ファイルを全て消し、新たに旧バージョンiTunes(+旧ファームウェア)をインストールしてから「(PC内にある)旧ファームウェアを使う復元」を行えば、iPod touch内のファームウェアは「旧ファームウェア」になる(かも)。
通信傍受結果ですが、とりあえず上記の最新版確認作業はHTTP。そして現在は
- 最初にリクエストされるのは「http://itunes.com/version」
- リダイレクト。「Location: http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version\n」
- 上記URLがXMLで、iTunesやらiPod touchファームウェアやらの最新版情報が記載されている
と、いう流れです。新バージョンリリース前である現在の生のXMLがこちら。
※追記
で、このXMLの中には、ファームウェアファイルのダウンロードURLも記載されています。
<key>
FirmwareURL
</key>
<string>
</string>
がtouchの現バージョンのファームウェアなので、HDD内にファームウェアが保存されていない人はダウンロードしておくと良いかもしれない。
上で紹介したGizmodoさんの記事では「ファームウェアファイルがHDD内に必ずある」という感じになってますが、これ、iTunesでファームウェアをバージョンアップしたことが無い人はHDD内にファームウェアファイル(という形で一ファイルになっているファイル)が存在しない気がする(少なくとも僕のマシン内には多分ない)。だもんで、Gizmodoさんの方法が使える&を使うにしても、今のうちにファームウェアを落としておかないと「助けてくださいファームウェアZIPで下さい」という状態になる可能性があります。
それと、リダイレクト先からのレスポンスヘッダが微妙に気になる。
HTTP/1.1 200 OK\r\n
Content-Length: 2701
Content-Type: text/xml\r\n
Last-Modified: Thu, 08 Nov 2007 01:20:53 GMT\r\n
Content-Encoding: gzip\r\n
x-set-apple-store-front: 143441-1\r\n
x-apple-asset-version: 36860\r\n
x-apple-max-age: 3600\r\n
x-apple-request-store-front:
x-apple-date-generated: Thu, 08 Nov 2007 01:20:53 GMT\r\n
x-apple-application-instance: 5111\r\n
x-webobjects-loadaverage: 0\r\n
Vary: Accept-Encoding\r\n
Expires: Thu, 08 Nov 2007 01:34:13 GMT\r\n
Cache-Control: max-age=0, no-cache\r\n
Pragma: no-cache\r\n
Date: Thu, 08 Nov 2007 01:34:13 GMT\r\n
Connection: keep-alive\r\n
X-Apple-Partner: origin.0\r\n
\r\n
拡張ヘッダ(X-何とか)……これらは最初の「http://itunes.com/version」からのレスポンスには含まれていなかった……を正しく再現しないと、iTunesが「これは違う」と判断する可能性アリ。ここまでを正しく再現するサーバーをたて、hostsファイルを弄って自分のマシンをAppleサーバーだと思いこませれば、おそらく旧ファームウェアを使った復元は可能でしょう(未検証)。
そして、iPhoneが一度ハック不能になった時にこの手の話は一度話題になっているはずなんですが、当時僕は全く情報を追っていなかったので、非常に「古い(海外ユーザーとかに十分検証され尽くされている)」ことを書いている可能性が結構あります。

TrackBack
この記事へのトラックバック