How to Re-download P.T. using MacOS
There are many tutorials out there on how to re-download P.T. such as here and here, but all of them required Windows-based machines. So this is a simple guide on how to get Hideo Kojima's cancelled Silent Hills demo re-downloaded on a PS4.
- A MacOS machine on the same network as the PS4
- P.T. registered to a PSN account (downloaded at least once)
- SquidMan (I used version 4.0, but any version should work)
Simply install SquidMan on a MacOS machine, open the image and run the application. There is no need to copy the application onto the machine, but you can if you would like to re-use SquidMan for other uses or for future re-downloading of P.T.
Once SquidMan is running, on first run it should open the preferences automatically but if not, in the top left: SquidMan -> Preferences. There is no need to alter anything, just click on the "Template" subheader.
In here, you simply need to paste the following template:
http_port 808 # the parent cache cache_peer %PARENTPROXY% parent %PARENTPORT% 7 no-query no-digest no-netdb-exchange default #Ini untuk memaksa DNS ke OpenDNS. Bisa dihapus atau dikasih tanda pagar (#) di depannya. dns_nameservers 126.96.36.199 188.8.131.52 # performance options pipeline_prefetch %PIPELINE_PREFETCH% cache_miss_revalidate %CACHE_MISS_REVALIDATE% read_ahead_gap %READ_AHEAD_GAP% cache_replacement_policy %CACHE_REPLACEMENT_POLICY% memory_replacement_policy %MEMORY_REPLACEMENT_POLICY% # disk and memory cache settings cache_dir ufs %CACHEDIR% %CACHESIZE% 16 256 maximum_object_size %MAXOBJECTSIZE% cache_mem %MEMCACHESIZE% maximum_object_size_in_memory %MEMMAXOBJECTSIZE% # store coredumps in the first cache dir coredump_dir %CACHEDIR% # the hostname squid displays in error messages visible_hostname %VISIBLEHOSTNAME% # log & process ID file details cache_access_log stdio:%ACCESSLOG% cache_store_log stdio:%STORELOG% cache_log %CACHELOG% pid_filename %PIDFILE% # Squid listening port http_port %PORT% # Access Control lists acl manager proto cache_object acl localnet src 10.0.0.0/8 acl localnet src 172.16.0.0/12 acl localnet src 192.168.2.0/24 acl localnet src 192.168.1.0/24 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl pkgfile url_regex gs2.ww.prod.dl.playstation.net/gs2/appkgo/prod/CUSA01127_00/1/f_1818ed1e5995c6e5950f34b9c57faac61a2a63693828d6b9290e8c74e4b9d5cc/f/UP4511-CUSA01127_00-PPPPPPPPTTTTTTTT.json deny_info http://archive.org/download/studios/studios.json pkgfile http_reply_access deny pkgfile acl iconwall url_regex gs2.ww.prod.dl.playstation.net/gs2/appkgo/prod/CUSA01114_00/1/f_1a12093906541bc35b535b00d2b92966faf18f77e404548377e471f0f7aa8259/f/EP4511-CUSA01114_00-PPPPPPPPTTTTTTTT.json deny_info http://archive.org/download/yikes_201512/yikes.json iconwall http_reply_access deny iconwall # protect web apps running on the proxy host from external users http_access deny to_localhost # rules for client access go here http_access allow manager localhost http_access allow localhost http_access allow localnet http_access allow all %HTTPACCESSALLOWED% # after allowed hosts, deny all other access to this proxy # don't list any other access settings below this point http_access deny all # specify which hosts have direct access (bypassing the parent proxy) %ALWAYSDIRECT% http_access deny manager http_access deny !Safe_ports # refresh patterns (squid-recommended) refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
And that's it! Hit "Save" and then "Start Squid" to start the proxy.
But quick, lastly we need to get the local IP address of the machine. Open terminal and type this command:
ifconfig |grep inet. This will print out a chunk of data, but the important line is the one likely starting with
inet that is not the localhost IP,
127.0.0.1. This is your local IP address of your machine, that we will need when setting up the PS4.
Now on the PS4, login to the account that has P.T. already linked to the account. Then we must change some network settings to use the MacOS machine as a proxy. Go to: Settings -> NETWORK Settings -> Set up Internet Connection -> <your type of connection> -> Custom.
You can skip through all the IP address, subnet, DNS, etc settings, by using "Automatic" or "Do Not Specify," The important section is when you get to the proxy settings. Select "use" and type in the following:
- IP Address: <the local address of your MacOS machine, as found above using Terminal>
- Port: 808
Now you can complete the network settings, and the network test at the end should return positive. If you get any messages that it cannot connect, check the IP again carefully, or check through your router to get the machine's correct IP.
Now it is as simple as going to your Library (very right on the PS4 home screen), finding P.T. in your library and starting the download. If all is well, the download should start and successfully reinstall P.T. on your machine.
Once this is done, you can change the network settings back to automatic/your original setup, since the proxy is not needed anymore. Keeping it connected through the machine shouldn't cause any problems if you so feel, unless you turn off the MacOS machine. It could cause some latency issues in gaming, though, but I have not done any testing.
HOW DOES THIS WORK?
It's quite simple actually! The folks over at archive.org are a huge help here, for hosting the files needed to make this proxy successful. There are two important lines in the template that make this bypass work.
If you check line 59 of the template, you will see this:
acl pkgfile url_regex gs2.ww.prod.dl.playstation.net/gs2/appkgo/prod/CUSA01127_00/1/f_1818ed1e5995c6e5950f34b9c57faac61a2a63693828d6b9290e8c74e4b9d5cc/f/UP4511-CUSA01127_00-PPPPPPPPTTTTTTTT.json deny_info http://archive.org/download/studios/studios.json pkgfile
The first link here, hosted on playstation.net is the original package/studio information for P.T. as JSON object. This would include things like the file size, file location, hash value, etc.
Sony has removed this JSON file from their servers, which is why the download now fails without this bypass, so a copy has been mirrored at archive.org. When your PS4 attempts to connect to the original playstation link and returns an error, the proxy captures the denial and instead returns the archive.org link for the JSON file.
If you notice, the link within the JSON to the package is also changed to an archive.org link within their servers. If you were to open that link, you would actually start a download of the package (full game) to your computer! The thing is that you simply cannot install the package on a PS4, it has to be done using licences and decryption which is why P.T. must have been registered to the account.
The next chunk, line 64, is almost identical in how it works.
acl iconwall url_regex gs2.ww.prod.dl.playstation.net/gs2/appkgo/prod/CUSA01114_00/1/f_1a12093906541bc35b535b00d2b92966faf18f77e404548377e471f0f7aa8259/f/EP4511-CUSA01114_00-PPPPPPPPTTTTTTTT.json deny_info http://archive.org/download/yikes_201512/yikes.json iconwall
Again, it simply captures the denial on the orginal, removed URL and returns a mirrored copy on archive.org's servers.
Even the JSON structure is identical, and it is likely these are just slightly different versions for specific regions on PSN.
That is how you download P.T. using a MacOS machine, as well as a small explanation on how this works without causing any bans unlike modding a PS4 console!