某所でPARAM.SFO内のデータ取得についての話があったので、iso_toolで利用している部分を抜き出してみました
事前にchar *bufにPARAM.SFOが読み込まれているのが前提です
iso_toolの、file.cの関数を利用すれば読み込めると思います

  typedef struct {
    short label_off;
    char unk;
    char data_type;
    int datafield_used;
    int datafield_size;
    int data_off;
  } psf_t;

  int loop;
  int label_ptr;
  int data_ptr;
  psf_t *psf_ptr;
  char work[256];

  loop = 0;
  label_ptr = *(int *)&buf[0x08]; // ラベルの先頭位置
  data_ptr = *(int *)&buf[0x0c]; // データの先頭位置
  psf_ptr = (psf_t *)&buf[0x14];
  work[0] = '\0';

  while(loop < *(int *)&buf[0x10])
  {
    if(strcmp((char *)(psf_ptr[loop].label_off + label_ptr + buf), "TITLE") == 0) // 「TITLE」を検索 
    {
   // 見つかった場合の処理、実際のデータは(char *)(psf_ptr[loop].data_off + data_ptr + buf)以下です
      strcpy(work, (char *)(psf_ptr[loop].data_off + data_ptr + buf));
      break;
    }
    loop++;
  }

  if(work[0] == '\0')
    strncpy(work, iso_path, 127); // 見つからなかった場合の処理

fake_np同梱のソースについていた、pspcipherをビルドしてみました
PC上でEBOOT.BINの復号ができます

利用手順は、
・./decにEBOOT.BINを設置
・./pspc.exeを実行
・./encに復号されたEBOOT.BINが作成される

一部のtagしか対応していないようです

iso_toolでは復号には外部prxを利用しているので、CFWでしか復号はできませんが
これを利用してOFWでもiso_toolで復号できるように実装中です

pspcipher (2677)

最近頂いたコメンへの返信です

>PBOOT.PBPから「EBOOT.BIN書出し」が失敗します。
>ver1.51を使うと問題なく出来たので報告させてもらいます。

調査してみます

>GPSP kaiの開発ってしてないんですか?
現在のところは停止しています

>モンハン3が復号出来るとどう変わるのでしょうか?
今のところは大きなメリットは無いのですが、将来type6で暗号化されたEBOOT.BINが出たときに対応出来ます
(今までのEBOOT.BINはほぼtype2でしたが、MHP3のみtype6を利用していました)

>Fate/EXTRA(NPJH-50247)のUMD→ISOを試みたのですが、IDなどが表示されず変換できませんでした…。
>UMD_IDのリストには載っているのですが…なぜでしょう???
>環境はPSP-3000(04g) 6.20 TN-Cです。

6.20TN/6.35/6.37系は自作ソフトでは吸出し出来ないようです
umd_dump.prxを試してみて下さい

>今他のファイルをISOTOOLに導入するときの
>ファイル配置ってどうなってるんですか?

data/以下のそれぞれのフォルダに配置します
Prometheusパッチであれば、data/prometheus/new/等に配置します

>PSP go 6.20 TN-C にて使用させていただいております。
>内蔵メモリから起動した場合、SELECTキーによるデバイス切り替えが上手くいかないようです。
>M2側のISOフォルダが読み込まれません。
>画面上は”ms0:/iso/”となっていますが、実際には”ef0:/iso/”の中身が表示されます。
>一方、M2に入れたiso_toolを起動した場合は、切り替えは上手くいきます。

調査してみます

>psp3000でもPSPでUMDをコピーできるようにできませんかね?
こちらもiso_toolやfilerで吸出し出来なくても、umd_dump.prxで吸出し出来ると思います

>一部のゲームをリネームしようとするとUMDIDになっています あとリネーム失敗と出ます
UMD_ID.csvにデータが無い場合は英語名への変換はUMD IDとなります
リネーム失敗については、もう少し詳しく状況を教えて頂ければ調査してみます
(PSP機種/FW/元のファイル名/変換後のファイル名等)

type 6の復号とオンラインでのCipherBridge.prx更新に対応しました

iso_tool ver 1.970

iso_tool_1970.zip 1,919,503Bytes
CRC32:F9FA2112
MD5:006B9086FF8B47BC14B27E99D1CD3ADF
SHA-1:9EB2BB6D7F9B45E7A16590488C2D42C9DAF82B9F

更新点

*1.970
[NEW] type 6の復号に対応(CipherBridge.prxを更新)
[NEW] △メニューに「CipherBridge.prx」の更新を追加
[NEW] DATA/key.txtにいくつかのtag/keyを追加
      (tag 0xD91615F0/0xD91616F0/0xD91619F0/0xD91620F0/0xD91621F0/0xD91622F0/0xD91623F0/0xD91624F0/0xD91628F0/0xD91680F0/0xD91681F0)

さすがにソースが継ぎ接ぎだらけで残念なことになってきたので、書き直しor大幅修正をすることにしました
まずは文字表示当たりから手を付けています。あと平行してtype6の解析もしています

そんなわけでしばらくは現状の物をベースに対応していく予定ですが、Ver表記はちょっと失敗したかも

DSのBASICがめちゃ気になります、PSP用の需要は無いのかな?

掲示板はスパムでのサーバ負荷が高かったので、いったんリンクを外しています

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