[PS4] WebサーバにあるPKGをリモートでインストールさせる事が可能な Remote Package Installer がリリース

2018/10/26 02:00 PS4 0
・2018/11/01 … [PS4] PS4 Remote PKG Sender がリリース
・2018/10/28 … [PS4] PS4RPI GUI v0.2 がリリース
・2018/10/27 … [PS4] PS4 Remote Package Installer WEB GUI v0.1 がリリース
・2018/10/26 … 無音動画投稿 https://youtu.be/XupCpmBS-As
・2018/10/26 02:00 … serveの導入手順とcurlの導入手順を追加
・2018/10/24 01:23 … 記事公開

GitHubでflatz氏が、PS4へPKGをリモートでインストールさせる事が可能な Remote Package Installer をリリースしていました。
https://gist.github.com/flatz/60956f2bf1351a563f625357a45cd9c8

使用可能なFWはFW4.5x以上とされています。しかしながら今回使用するHENのペイロードは5.05向けにリリースされているため、
Remote Package Installerは現時点では基本的に5.05ユーザー向けです。

使用するプロトコルはHTTPで、基本的にはローカルにWebサーバを用意し、そこにFPKGを配置してPCからそのURLを指定する
コマンドを叩き、PS4へPKGをDL,インストールさせる、という運用をします。
jsonファイルもサポートされており、ソニーがpkgのURLを載せるために使用しているjson或いはそれと同じフォーマットで書いた
自作のjsonが使用可能です。flatz氏はjsonを用いた方法をCDN wayと呼んでいるようです。
※CDN wayで正規(リテール)PKGをインストールしても、ライセンス等が無いため当然起動は出来ません。

flatz氏はローカルにWebサーバを用意するためにnpmでserveをインストールされています。flatz氏がserveを使用されたのは、
Webサーバとして動作するPCソフトを作るのが面倒な事、そしてマルチスレッドをサポートしている事が理由だそうです。
もちろん、serveではなく使い慣れた物があるならそれを使っても構いません。
PS4へ情報を送信するコマンドとしては、curlを使用します。

現時点ではコマンドの実行が必要ですが、コマンドを見るのも嫌という方でもなければRemote Package Installerはとても
役に立つはずです。これは個人的には本当に嬉しいリリース。使用手順を書いておきます。



※メインで使用しているPCがWindowsであるため、Windows前提の解説になる事をご了承ください。



●serveの導入手順

既に自分に合ったWebサーバ環境が手元にある人はserveを導入しなくても構いません。
flatz氏が使用しているようなので、この記事で簡単に紹介しておきます。

1、Node.jsのインストーラー (Windows Installer (.msi)) をダウンロードする
https://nodejs.org/ja/download/
2、DLした物をインストールする
3、コマンドプロンプトを管理者として実行する
4、以下のように実行してserveをインストール
npm install -g serve -s
5、以下のように実行してserveを実行
serve -p ポート番号 fpkgのある場所のパス

serve -p 12345 C:\Game\PS4
※"-p"とポート番号を書かずにパスだけを引数にする事も可能(その場合はポート番号が5000になる)
※この後curlを実行するため、このコマンドプロンプトは閉じずにもう1つコマンドプロンプトを起動する

表示されたURL(On Your Network)を確認し、LAN内の他のデバイス(ゲーム機やスマホ)からアクセスしてみてください。
それで問題無ければcurlに進めますが、アクセス出来ない場合はファイアウォールの設定を変更する必要があります。
これは大抵の場合、serveで使用しているポート番号を許可してやれば解決するはずです。

この作業ではコマンドプロンプトは必ず管理者として実行してください。
npmのエラーに関してはググって解決してください…私には荷が重い。
npmのエラーで挫折した場合はserveではなく他の物を使っても構いません。



●HENのペイロードに関して

使用するHENのペイロードに関してですが、zecoxao氏のHEN v1.8を使用する必要があります。
PS4からアクセスするなら:http://zecoxao.github.io/
リポジトリ:https://github.com/zecoxao/zecoxao.github.io
これはxvortex氏のps4-hen-vtx v1.7を改良された物です。
リリースされていたのは知っていましたが、変更点的にエンドユーザーには関係ないと思って記事にはしていませんでした。
Remote Package Installerのリリースによりエンドユーザーにも関係がある存在となりました。

ps4-exploit-host を使用している場合、"/exploits/5.05/HEN/" のindex.htmlを置き換える事で手動更新完了です。
index.htmlは上記で挙げたリポジトリからDLしてください。



●curlの導入手順

curlはWindows 10 RS4(1803)から標準のコマンドとなったので、それ以上のバージョンの方はこの手順を飛ばしても構いません。
コマンドプロンプトでcurlと打ち込んでヘルプやマニュアルの引数が表示されれば、curlは既に入っています。

Windowsの場合、基本的には公式にある最新版をDLしてください。
https://curl.haxx.se/windows/
ソフトウェアの開発環境が用意されたPCなら、開発環境によってはcurlが入っている事もあります。
それを把握している場合はわざわざ今回curlの最新版を持ってこなくても良いかなと…

1、Windows版のcurlをDLする
https://curl.haxx.se/windows/
2、DLしたzipからbinフォルダを取り出す
(binフォルダの中身は "curl.exe" 等)
3、"C:/Windows/System32/" に手順2で取り出したbinフォルダの中身(exe等)をコピー
4、コマンドプロンプトを起動して curl と打って実行してみる
(ヘルプやマニュアルの引数が表示されたらOK)



●コマンドを実行するまでの手順
1、HEN v1.8 を実行
2、remote_pkg_installer .pkg をインストール
3、Remote Package Installer を起動
※起動状態でもスプラッシュ画像と同じ画像が表示された状態です
4、PC側でコマンド実行
※正常に処理されればここでDLとインストールが開始される

・追記 2018/10/24 19:30
https://twitter.com/flat_z/status/1055007573164855297
コマンドを実行してからRemote Package Installerを開かなければいけなかったのは、Windowsで起こるバグだったようです。
修正版がリリースされてましたので、手順を書き直しました。24日夕方以降にDLした方は修正版のはずです。
それ以前にDLしていた方は修正版をDL,インストールしてください。


●コマンド

<PS4 IP> はPS4のIPアドレスで置き換えてください。
<PC IP> と <PC Port> はそれぞれPCのIPアドレスとポート番号で置き換えてください。
タイトルID及びコンテンツIDの部分は、flatz氏の書いた内容をコピペしただけなので各々書き換えてください。
Windowsの場合として " を三重にしたものを紹介していますが、それでダメなようなら"の前に\を付けてください(\")

・タイトルIDを指定してそれがインストールされいるかどうかを確認
■Windowsの場合
curl --data {"""title_id""":"""CUSA09311"""} http://<PS4 IP>:12800/api/is_exists
 或いは
curl --data {\"title_id\":\"CUSA09311\"} http://<PS4 IP>:12800/api/is_exists
■他の環境
curl --data '{"title_id":"CUSA09311"}' 'http://<PS4 IP>:12800/api/is_exists'

・PKGのURLを指定してそれをDL,インストールさせる
■Windowsの場合
curl -v http://<PS4 IP>:12800/api/install --data {"""type""":"""direct""","""packages""":["""http://<PC IP>:<PC Port>/PKGのファイル名"""]}
■他の環境
curl -v 'http://<PS4 IP>:12800/api/install' --data '{"type":"direct","packages":["http://<PC IP>:<PC Port>/PKGのファイル名"]}'
※複数ある場合は配列内は以下のように
※["http://<PC IP>:<PC Port>/PKGのファイル名","http://<PC IP>:<PC Port>/PKGのファイル名"]


DLは裏でPS4の機能として行われているので、Remote Package Installerを閉じてゲームで遊んで待っていても大丈夫です。

・jsonファイルのURLを指定してjsonに書かれたPKGをDL,インストールさせる
■Windowsの場合
curl -v http://<PS4 IP>:12800/api/install --data {"""type""":"""ref_pkg_url""","""url""":"""<jsonファイルのURL>"""}
■他の環境
curl -v 'http://<PS4 IP>:12800/api/install' --data '{"type":"ref_pkg_url","url":"<jsonファイルのURL>"}'

・タイトルIDを指定してそのゲームをアンインストール
■Windowsの場合
curl -v http://<PS4 IP>:12800/api/uninstall_game --data {"""title_id""":"""CUSA02299"""}
■他の環境
curl -v 'http://<PS4 IP>:12800/api/uninstall_game' --data '{"title_id":"CUSA02299"}'

・タイトルIDを指定してそのゲームのパッチをアンインストール
■Windowsの場合
curl -v http://<PS4 IP>:12800/api/uninstall_patch --data {"""title_id""":"""CUSA08344"""}
■他の環境
curl -v 'http://<PS4 IP>:12800/api/uninstall_patch' --data '{"title_id":"CUSA08344"}'

・コンテンツIDを指定してDLCをアンインストール
■Windowsの場合
curl -v http://<PS4 IP>:12800/api/uninstall_ac --data {"""content_id""":"""UP0001-CUSA09311_00-ULCPACK000000004"""}
■他の環境
curl -v 'http://<PS4 IP>:12800/api/uninstall_ac' --data '{"content_id":"UP0001-CUSA09311_00-ULCPACK000000004"}'

・コンテンツIDを指定してテーマをアンインストール
■Windowsの場合
curl -v http://<PS4 IP>:12800/api/uninstall_theme --data {"""content_id""":"""UP9000-CUSA08344_00-DETROITCHARTHEME"""}
■他の環境
curl -v 'http://<PS4 IP>:12800/api/uninstall_theme' --data '{"content_id":"UP9000-CUSA08344_00-DETROITCHARTHEME"}'


PKGのインストールコマンドが成功するとタスクID(お知らせに表示される項目のID)が取得でき、それを使用して
タスクの一時停止やタスクの削除が可能なコマンドもflatz氏は紹介しています。
私としては、それはPS4上でやった方がはやくね?的な事を思ってしまったのでそれらの紹介はしません。
唯一、これだけは便利だと思ったので紹介しておきます。

・進捗状況(残り時間)の取得
■Windowsの場合
curl -v http://<PS4 IP>:12800/api/get_task_progress --data {"""task_id""":123}
■他の環境
curl -v 'http://<PS4 IP>:12800/api/get_task_progress' --data '{"task_id":123}'
123の所を、取得したタスクIDの値にしてください。
これを実行すると残り時間が秒(rest_sec)で取得されます。



インストールコマンドを実行するとDL,インストールが始まるわけですが、お知らせでは残り時間が「計算中です…」
から変わりません。残り時間はホーム画面からそのゲームのアイコンを選択すれば見る事が可能です。



"Unable to set up prerequisites for package" というエラーが表示された場合、ファイアウォールが防いでいる事によって
PS4がPC(ローカルWebサーバ)に接続出来ていないとか、CDN wayでソニーのサーバからpkgをDLしようとしているものの
ps4-exploit-hostが妨げているとか、ローカルWebサーバを立てているソフトの相性が考えられます。3つ目は、私の環境で
miniwebではそのエラーが吐かれるもののserveでは問題が無かったという現象が確認出来たために挙げています。



▼コメント




▼コメントを投稿












※「英数字90%以上」のコメントを規制中です。コメントを投稿する際は日本語でお願いします。
※確認ボタンを押すと投稿確認フォームに移ります。投稿確認フォームの送信ボタンを押してください。
※確認フォームにある「メールアドレス」に入力された内容は管理人のみ確認可能です。空欄で構いません。
※確認フォームにある「タイトル」「パスワード」は当ブログでは使用していません。空欄で構いません。
※確認フォームにある「URL」は名前のリンクとして機能します。空欄で構いません。
※確認フォームには非公開コメントのチェック項目がありますが、非公開コメントは受け付けていません。
メールフォームより連絡頂ければメールにてお返事致します。