ヤッチマイナシコ

たまには気分を変えよう

ナシコ

8/28

iPod touch(FW1.1.5) で jailbreak

やったぞー!!ついに手に入れたiPod touch!
iPhone手に入れた方から格安バーゲンでゲット。イイ人。

さてさて早速jailbreakですわ。結論から言うと簡単です。
とりあえずjailbreak後のパスワード変更さえ失敗しなければ?。

実験したiPod touch環境。
・MA623J/A 8GB
・FW 1.1.5

では脱獄開始。
※この記事の通り実行して脱獄に失敗しても責任とりません。ついでにAppleの保証も受けれなくなります。

1.必要な物

・ZIPhone 3.0 (Win)

超簡単にjailbreakできる代物です。
ココから落としましょう。
http://download.ziphone.org/

MACは知りません。

2.準備

お手元のiPod touchをPCに接続します。
iTunesの”復元”を実行して初期化する。
再起動するまでしばし待つ。

3.実行

ダウンロードしたファイルを解凍し ZiPhoneGUI.exe を起動します。
再起動が完了し操作できる状態になるのを確認。
ZiPhoneGUI.exe の上から2段目 JailBreak を実行する。
しばらくUNIXコマンドの文字列がツラツラ出るので3分ぐらい放置。タバコでも吸って祈りましょう。
?
自動的に再起動し、画面上に見慣れぬアイコン Installer などが表示されば成功。
失敗したらどうしようもない。
初期化できるか分かりませんがiPod touchをUSBから抜き、HOMEボタン+LOCKボタン長押しで電源を落とします。
HOMEボタンを押しながらUSBを挿し直してiTunesがiPod touchを認識してくれれば初期化で元に戻ると思います。

4.アプリケーションのインストール

Installerから必要なパッケージをじゃんじゃんとってきましょう。
自分のやった手順は以下の通り。

・Source -> Community Source
インストールできるパッケージが増えます。
アップデートが可能になるならばアップデートを実行。

・Utilities -> BossPrefs
Wifi、SSHなどの有無の設定が可能になる。ServicesというパッケージでもOK。
基本SSHはiPod touchへログインしないときはOFFにした方が良い。

・Utilities -> BossTool
アプリケーションの容量制限の解除。
アプリケーションを起動して上から順にボタン押していけばOK。

・iClarified -> OpenSSH
iPod touch内にアクセスするために必要な物。

・Tweaks(1.1.5) -> 1.1.5 Compatibility Patch
1.1.4のパッケージを入れるために必要。

・iPhone 1.1.4 Apps for Touch -> All Applications
iPhoneのメールとかマップとか。
初期ではこの項目は無いので追加する。
Installerの下の画面の一番右の Source からパッケージを提供しているURLを入力する。
右上の Edit ボタンを押し、左上の Add ボタンを押すとURL入力画面が出るので下記を入力する。
repo.applerepo.com
これでこの項目が Categories に表示される。

基本はこれぐらいだと思う。

5.パスワードの変更

初期状態のrootパスワードは alpine になっているため、SSHを有効状態にしたままだとログインされる危険性があるので変更します。特に気にならなければ変えなくてもいいんじゃないですかね。
※TeraTerm等のコマンドラインから passwd でパスワードの変更を行うとiPod touchが永久再起動をするようになってしまうので行わない方がよいです。一応復旧はできるみたいですが。。。
ここで失敗するとやり直しですからね。。。
変更しない方はココで終わりです。おつかれさまでした。

iPod touchへSSHログインするためにWinSCPなりTeraTermなり拾ってきます。

ファイルをダウンロードしてる間にでもiPod touchのSSHを有効にするために再起動しておきます。

再起動後PCからSSHでログインします。IPが分からない場合は設定からWifiで見れるはずです。
ログイン後 /etc/ に移動します。そこのディレクトリにmaster.passwdがあるので編集します。

nobody:*:-2:-2::0:0:Unprivileged User:/var/empty:/usr/bin/false
root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/sh
mobile:/smx7MYTQIi2M:501:501::0:0:Mobile User:/var/mobile:/bin/sh
daemon:*:1:1::0:0:System Services:/var/root:/usr/bin/false
unknown:*:99:99::0:0:Unknown User:/var/empty:/usr/bin/false
_securityd:*:64:64::0:0:securityd:/var/empty:/usr/bin/false

太字にしている部分を書き換えますが、説明が大変長くなるので参考サイトを見てください(^^;
perlがある場合はコチラ so wath?
パスワード生成のリンク先があるサイトはコチラ C'est pas mal ?!
他力本願ですいません。。。

個人的な事だったんですが、変更時注意です。
テキストエディタによりまちまちですが、変更箇所の文字列をダブルクリックした場合 / が選択されない場合があるのでコピペする場合は気をつけましょう。(2回失敗した><)


6.終わり

5. を実行した場合、確認としてiPod touchを再起動しSSHで新しいパスワードを入力してログインできたら完了です。


誤字脱字いっぱいあると思いますが気にしないでくださ。

2008/8/28 - 2:02 | Comments (2)

Category : iPod touch

8/24

URLVariables でPHPと通信 - AS3

AS2でいうとSendAndLoadになるかな。

さくさくっと書いていきますね。

// データ作成
var url_Variables:URLVariables = new URLVariables();
url_Variables.str = "hoge";
url_Variables.num = 5;

// データ送信先
var url_Request:URLRequest = new URLRequest();
url_Request.url = "variables.php";
url_Request.method = URLRequestMethod.POST;
url_Request.data = url_Variables;

// 送信
var url_Loader:URLLoader = new URLLoader();
url_Loader.dataFormat = URLLoaderDataFormat.VARIABLES;
url_Loader.addEventListener(Event.COMPLETE, completeHandler);
url_Loader.load(url_Request);

// 受信
function completeHandler (evt:Event):void{
 var vars:URLVariables = new URLVariables( evt.target.data );
 var tField:TextField = new TextField();
 tField.autoSize = TextFieldAutoSize.LEFT;
 tField.border = true;
 tField.appendText(vars.comp);
 tField.x = tField.y = 20;
 addChild(tField);
}



続いてPHP
<?php
 $str = $_POST['str'];
 $num = $_POST['num'];
 $comptxt = $str.$num;
 echo "comp=".$comptxt;
?> 



こんな感じですね。

これで問題になるのは、パブリッシュしたときにPHPの実行結果ではなくて中身を丸ごと持ってくるのでEvent.COMPLETE時の処理でエラーになり、その後の処理が止まってしまいます。
なのでtry,catchで分岐させた方がいいかもしれません。

localhostではうまく動きますけどね。
実行結果は hoge5 が返ってきます。

source FLASH CS3 - variables.zip

2008/8/24 - 15:54 | Comments (2)

Category : FLASH AS3

8/23

ハンコック

ハンコーーーーーーック、みてきたっ!

ウィルスミスとシャーリーズセロンが出てて贅沢だぜー。

孤独な酔いちくれスーパーヒーローが更生していくおはなし。

道路壊すわビル壊すわ、クジラ投げるわ、なんでもありだな。
ウィルスミス、空飛んじゃうし、弾丸跳ね返すハガネのボディだし。
入り込む映画ではなくてパーッと見ていく感じで、途中からアレアレ?ってなるけど気にしないさ。


夏の終わりにスカッと出来る良い映画でした^^

2008/8/23 - 23:51 | Comments (0)

Category : 映画

8/21

削除が面倒 - AS3

むっずいわー。

毎回これ言ってる気がする。リアルでも。

addChild、removeChild、addEventListener、removeEventListenerでちょっと悩み中。
通常に使う分は全く問題ないんだけど、正しく管理しないとremoveEventListenerの消し忘れとかでメモリーリークとかすぐにおこしそうで><

けども管理が面倒だーっっっってなわけで試行錯誤してます。
もうため息しかでねぇ。。

// フレームに記述
var obj:Sprite = new Sprite();
var g = obj.graphics;
g.lineStyle(1,0x000000,1);
g.beginFill(0x000000,1);
g.drawRect(10,10,100,100);
addChild(obj);

obj.addEventListener(Event.ENTER_FRAME, hogeEnter);
obj.addEventListener(MouseEvent.MOUSE_DOWN, hogeMouseDown);

function hogeEnter(evt:Event){
 trace("hogeEnter!");
}

function hogeMouseDown(evt:Event){
 trace("hogeMouseDown!");
 evt.target.removeEventListener(MouseEvent.MOUSE_DOWN, hogeMouseDown);
 removeChild(obj);
}



1つオブジェクトを作ってそれにENTER_FRAMEとMOUSE_DOWNのイベントリスナーを登録します。
そしてMOUSE_DOWNでオブジェクトを消去するだけのプログラムです。
ついでにMOUSE_DOWNのイベントリスナーも消去してます。

でもこれだとENTER_FRAMEは走りっぱなしになるんです。
あたりまえっちゃー当たり前。消してないんだもんなーハハハw

こういうことは避けないと何にせよ問題が出てくるって話ですよ。

ENTER_FRAMEも消せばいいやん



おっしゃるとおりでございます!!


まぁ通常理解している範囲だと確実に消しますが、
も し も ! 
の時の為の保険みたいなもんがほしいわけです。

で、今のところ答えは無い(´-`)

けど、これでいける?ってのは一応ある。

Event.REMOVED_FROM_STAGE

このイベントリスナーを登録したオブジェクトが削除された場合に通知してくれる。
しかも親オブジェクト内に子オブジェクトがある場合で、親を削除した場合に子にも通知してくれる?と思う。。。
これはもうちょい検証しないと分からない。

とりあえず徐々にですが前進しとります。


//----
なんとなく作ってるもの。現在表示っつーかaddChildした物の一覧が見れる。

機能を付加したらなかなか面白いかな。



※2008/08/24 追記
Event.REMOVED_FROM_STAGEを追加したオブジェクトを消すとイベントが走るのでうまい具合にスクリプトを組めばよさそうです。
子オブジェクトにEvent.REMOVED_FROM_STAGEを追加し、親オブジェクトを消した場合でもイベントが走りました。

2008/8/21 - 2:43 | Comments (0)

Category : FLASH AS3

8/17

岳切渓谷

土砂降りになるだろうと予想してましたが晴れちゃったので大分の岳切渓谷へいってきましたよ。
一枚岩の上を2kmぐらい歩いてみましたが、自然に感動したのかあんまり疲れませんでした。


入り口


の冷たさにキャーキャーはしゃぎつつ歩く歩く!!
涼しすぎて汗とか全く出ませんでしたよ。

以下写真ペタペタ。








偶然にも蜂の巣が作られる現場に遭遇!



かなり冷たい水が湧き出てくる場所を発見。



切り株灰皿で休憩。


このあと車で帰ってたら前が見えないぐらいの土砂降りに?。
5分でも遅かったら悲惨だっただろうなぁ。

山は気まぐれですなぁ〜。

2008/8/17 - 23:05 | Comments (0)

Category : どっか行った写真あれこれ

8/15

関門海峡花火 20080813

携帯で撮影。面倒なのでYouTube利用。



画質がいまいちか。

2008/8/15 - 5:00 | Comments (0)

Category : どっか行った観察

8/11

removeChild : AS3

基本的なremoveChild()について。
removeChild()は画面に追加したSprite等を削除することができます。

var sp:Sprite = new Sprite(); //Spriteを作成
sp.graphics.beginFill(0x000000,1); //塗りを設定
sp.graphics.drawRect(0,0,100,100); // 位置と大きさを設定
addChild(sp); // 画面に追加
removeChild(sp); // 画面から削除


最後の行のremoveChild(sp)で画面から消す事ができます。

spA
 └ spB
こんな構造でspAを削除した場合はspBも削除されます。
var spA:Sprite = new Sprite(); //Sprite spAを作成
spA.graphics.beginFill(0x000000,1); //塗りを設定
spA.graphics.drawRect(0,0,100,100); // 位置と大きさを設定
addChild(spA); // 画面に追加

var spB:Sprite = new Sprite(); //Sprite spBを作成
spB.graphics.beginFill(0xFF0000,1); //塗りを設定
spB.graphics.drawRect(100,100,100,100); // 位置と大きさを設定
spA.addChild(spB); // spA配下にspBを追加
removeChild(spA); // spAを画面から削除



2008/8/11 - 0:41 | Comments (0)

Category : FLASH AS3

CopyRight 2004 ヤッチマイナシコー! All rights reserved.

Powerd By neustil.com