今回から、CFW版/OFW版を共通にしています
また、いくつかのメニュー項目を一時削除していますが、状況によっては復活する場合もあります

iso_tool ver 1.972
または
iso_tool ver 1.972

fake_np/iso2ebootと同等の機能を実装しましたが、本家と同様にサイズ等に制限がありますし、
変換速度等はPCの方が上のため、今後のための実装と思ってください

内部で同等の機能を実装しているので、同梱のPRXは本来必要ないのですが、
CFWの場合はPRX利用の方が変換が早いようなので、そのまま残してあります

更新点

*1.972
[NEW] 内部処理(OFW起動)の場合でもtype6を復号できるようにした
[NEW] OFW版と同一のバイナリを使用するために、一時的にネットワーク関係を削除
[BUG] 終了時にフリーズしてしまうことがあるのを修正
[NEW] auto_cfw/cfw切替え機能はは利用しない場合は全く利用しないので、メニュー/配布ファイルから削除
[NEW] fake_np/iso2ebootと同等の機能を実装
      *変換できる最大ISOサイズは約728MBまでです
      *事前にファンタシースターポータブル2インフィニティの体験版が必要となります

      変換方法
        事前設定(初回のみ)
          1)/PSP/GAME/に体験版を設置し、プレイできる状態にしておく
          2)iso_toolの△メニューから「fake_np用データ変換」を選択すると自動でデータを保存します
        ISO->EBOOT変換
          1)変換したいISOを選び、○メニューから「fake_np変換」を選択します
          2)/PSP/GAMEにISOファイル名でディレクトリが作成され、EBOOT.PBPに変換されます
          *変換できても動作しない場合もありますので、注意してください

念のためダウンロード方法を記載しておきます
1)右側にある”Free Download -Waitingtime”の後ろの括弧と数字が消えるのを待ちます(30秒)
2)”Free Download -Waitingtime”をクリックします
3)画面が切り替わります
4)”Please wait 30 seconds to download this file”.が”You can start the FREE Download now.”になるのを待ちます(30秒)
5)”FREE”の部分をクリックするとダウンロードが開始されます

変換後のEBOOT.PBPを調べてみましたので、メモとして残しておきます
4/2 21:22 一部追記

--------------------------------------------
EBOOT.PBP  = pbp_header + np_buf

--------------------------------------------
pbp_header = header + param_sfo [ + ICON0.PNG + ICON1.PMF + PIC0.PNG + PIC1.PNG + SND0.AT3 ] + data_psp
             *ICON0.PNG/ICON1.PMF/PIC0.PNG/PIC1.PNG/SND0.AT3は無くても可

header    size : 0x28
            *ICON0.PNG等のoffsetを記録

param_sfo size : 0x230
            *0x00+PSFから始まる、体験版から抜き出したデータ 

data_psp  size : 12529+15(pudding)(fake_np) / 12672(iso2eboot)
            *体験版から抜き出したデータ
--------------------------------------------
np_buf     = np_header + block_table + table_hash + iso_image + dummy_data

np_header   size : 0x100
              *NPUMDIMGから始まる、体験版から抜き出したデータ
block_table size : (total_block-1) * 0x20
              *total_block = 4272(fake_np) / 23301(iso2eboot) / 1block = 32KB
table_hash size : 0x10
              *block_tableから計算されたhash値
dummy_data size : 0x50 * 足りないblock数
              *元々の体験版のiso_imageより小さい場合、1block当り0x50のダミーデータを追加している
それぞれのデータはそのまま利用せずに、必要な部分を書き換えて利用している

fake_np v5   は 「NARUTO疾風伝 キズナドライブ 体験版」を利用
iso2eboot v2 は 「ファンタシースターポータブル2 インフィニティ スペシャル体験版」を利用

体験版内のデータは一緒に配布できないので、体験版から必要なデータを保存するようにしました
今後利用する体験版が変わる可能性もあるので、以下の様なスクリプトにて保存するようにしてあります

	# copy_part read_file write_file start_addr size
	copy_part ms0:/PSP/GAME/NPJH90157/EBOOT.PBP ./data/fake_np/param_sfo.dat 0x28 0x230
	copy_part ms0:/PSP/GAME/NPJH90157/EBOOT.PBP ./data/fake_np/data_psp.dat 0x40b80 0x3180
	copy_part ms0:/PSP/GAME/NPJH90157/EBOOT.PBP ./data/fake_np/np_header.dat 0x43d00 0x100

OFWでも動作するようにしてみました
大きく追加された機能はないので、1.970を利用している場合は更新の必要はありません
(逆にネットワーク関係の機能が利用できなくなります)

iso_tool ver 1.971 OFW

iso_tool_1971_ofw.zip 6,977,932Bytes
CRC32:d513d9fd
MD5:797ee3d9f46fe3b58b3b12712bc9588d
SHA-1:7993bcf65b78594349aa25907e2d5aedac86730b

暗号関係の処理を実装したので、続いてfake_npと同等の機能を実装中です

更新点

*1.971 OFW対応版
[NEW] CipherBridge.prxを読み込めない場合は内部で複合処理を行うように変更
      *その際はtype6(MHP3)の復号はできません
[NEW] OFWでの起動にOFW専用版で対応
      *ネットワーク関係の機能は利用できません

      *CFWでも動作しますが、ネットワーク関係の機能は利用できません
       (prxEncryperがprx modeのソフトにしか対応していないのが原因です)

      OFWとCFWでの動作の違い
       ・type6で暗号化されたeboot.binの復号ができません(現時点ではMHP3だけだと思われます)
       ・UMDからの吸出しができない(CFWの場合は標準でできなくともプラグインで対応可能)
       ・ネットワークアップデート等のネットワーク関係は利用できません

念のためダウンロード方法を記載しておきます
1)右側にある”Free Download -Waitingtime”の後ろの括弧と数字が消えるのを待ちます(30秒)
2)”Free Download -Waitingtime”をクリックします
3)画面が切り替わります
4)”Please wait 30 seconds to download this file”.が”You can start the FREE Download now.”になるのを待ちます(30秒)
5)”FREE”の部分をクリックするとダウンロードが開始されます

結局、GETU32が原因ではなく、バイトオーダーとバイト単位での書き込みが原因のようでした
現在、AES_set_decrypt_key()/AES_decrypt()/AES_cbc_encrypt()などが、(利用している範囲内では)正常に動作しており、
kirk_CMD1内部の動作を確認、調整するところまで進んでいます

もう少しで、OFWでの復号ができるようになると思われます

結構前から挑戦していたのですが、opensslのライブラリに問題がありそうです
PC上では復号できるのですが、PSPではなぜかエラーになる状態だったので、詳細を調べてみました

PCで復号中のログの一部

seed:
   0: 5d 00 00 00

key:
   0: 11 5a 5d 20 d5 3a 8d d3 9c c5 af 41 0f 0f 18 6f

enc_aeskey:
   0: 11 5a 5d 20 d5 3a 8d d3 9c c5 af 41 0f 0f 18 6f
  10: 66 f7 f5 56 b3 cd 78 85 2f 08 d7 c4 20 07 cf ab

PSPで復号中のログの一部

seed:
   0: 5d 00 00 00

key:
   0: 11 5a 5d 20 d5 3a 8d d3 9c c5 af 41 0f 0f 18 6f

enc_aeskey:
   0: 20 5d 5a 11 d3 8d 3a d5 41 af c5 9c 6f 18 0f 0f
  10: 56 f5 f7 66 85 78 cd b3 c4 d7 08 2f ab cf 07 20

同じseed/keyを設定しているのですが、帰ってくるaeskeyが4byteごとに逆転してしまっている状態です
AES_set_encrypt_key関数で利用されている、GETU32に問題があるようなので調査中です

© 2011 きまぐれblog Suffusion theme by Sayontan Sinha