Skip to content

Commit 0ee32a3

Browse files
committed
More PS5 stuff
## PS5 - New PS5 Port Checker - Checks almost all payload ports - Check a port manually - Refresh/Reload option - The PKG Extractor can now be found in "PC - Windows Utilities" -> "PKG Extractor" instead inside the GP5 Project Creator - The backup library now loads & shows more game information - MasterVersion - SDKVersion - PubToolsVersion - VersionFileURI (clickable) - Fixed opening the context menu for the backup library - Added new downloads - Dump Runner payload by Echo Stretch v0.01 - Fixed 'kstuff' payload download - Replaced 'kstuff-toggle' zip download with payload - Removed many old downloads, please update to the latest version of PS Multi Tools - Added new main menu entry "Commands for shsrv" - Get console information - Get AuthID - More will be added later... - Renamed menu entry "webMAN for websrv -> General" to "webMAN for websrv -> General Utilities" - Added required server information in order to use "webMAN for websrv" and the new "Commands for shsrv" utilities - The Payload Sender now resets the selected payload combobox item when sent
1 parent 7751511 commit 0ee32a3

19 files changed

+1016
-492
lines changed

LatestBuild.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
15.5.0
1+
15.5.1

PS Multi Tools/Classes/PS5Game.vb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
Private _GameBackupType As String
2525
Private _GameLocation As Location
2626
Private _GameRootLocation As RootLocation
27+
Private _GameMasterVersion As String
28+
Private _GameSDKVersion As String
29+
Private _GamePubToolVersion As String
30+
Private _GameVersionFileURI As String
2731

2832
Public Enum Location
2933
Remote
@@ -251,6 +255,42 @@
251255
End Set
252256
End Property
253257

258+
Public Property GameMasterVersion As String
259+
Get
260+
Return _GameMasterVersion
261+
End Get
262+
Set
263+
_GameMasterVersion = Value
264+
End Set
265+
End Property
266+
267+
Public Property GameSDKVersion As String
268+
Get
269+
Return _GameSDKVersion
270+
End Get
271+
Set
272+
_GameSDKVersion = Value
273+
End Set
274+
End Property
275+
276+
Public Property GamePubToolVersion As String
277+
Get
278+
Return _GamePubToolVersion
279+
End Get
280+
Set
281+
_GamePubToolVersion = Value
282+
End Set
283+
End Property
284+
285+
Public Property GameVersionFileURI As String
286+
Get
287+
Return _GameVersionFileURI
288+
End Get
289+
Set
290+
_GameVersionFileURI = Value
291+
End Set
292+
End Property
293+
254294
Public Shared Function GetGameRegion(GameID As String) As String
255295
If GameID.StartsWith("PPSA") Then
256296
Return "NA / Europe"
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
Imports System.Net.Sockets
2+
Imports System.Text
3+
Imports System.Threading
4+
5+
Public Class TelnetClient
6+
7+
Private TCPSocket As TcpClient
8+
9+
Private NewNetworkStream As NetworkStream
10+
11+
Public Sub New(HostName As String, Port As Integer)
12+
TCPSocket = New TcpClient()
13+
TCPSocket.Connect(HostName, Port)
14+
NewNetworkStream = TCPSocket.GetStream()
15+
End Sub
16+
17+
Public Sub Write(Command As String)
18+
If NewNetworkStream Is Nothing Then Return
19+
20+
Dim CommandWithNewLine As String = Command & vbCrLf
21+
Dim CommandBytes As Byte() = Encoding.ASCII.GetBytes(CommandWithNewLine)
22+
NewNetworkStream.Write(commandBytes, 0, commandBytes.Length)
23+
NewNetworkStream.Flush()
24+
End Sub
25+
26+
Public Function Read() As String
27+
If NewNetworkStream Is Nothing Then Return String.Empty
28+
29+
Dim ResponseBuilder As New StringBuilder()
30+
Dim Buffer(1024) As Byte
31+
32+
While NewNetworkStream.DataAvailable
33+
Dim BytesRead As Integer = NewNetworkStream.Read(Buffer, 0, Buffer.Length)
34+
If bytesRead <= 0 Then Exit While
35+
responseBuilder.Append(Encoding.ASCII.GetString(buffer, 0, bytesRead))
36+
Thread.Sleep(50)
37+
End While
38+
39+
Return responseBuilder.ToString()
40+
End Function
41+
42+
Public Sub Close()
43+
If NewNetworkStream IsNot Nothing Then NewNetworkStream.Close()
44+
If TCPSocket IsNot Nothing Then TCPSocket.Close()
45+
End Sub
46+
47+
End Class

PS Multi Tools/Images/move.png

335 Bytes
Loading

PS Multi Tools/Menus/PS5Menu.xaml

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
<MenuItem Header="Payload Builder" x:Name="PayloadBuilderMenuItem"/>
2121
<MenuItem Header="Payload &amp; Mast1c0re PS2 Game Sender" x:Name="SenderMenuItem"/>
2222
<MenuItem Header="PKG Builder" x:Name="OpenPKGBuilderMenuItem"/>
23+
<MenuItem Header="PKG Extractor" x:Name="OpenPKGExtractorMenuItem"/>
2324
<MenuItem Header="PKG Merger" x:Name="OpenPKGMergerMenuItem"/>
2425
<MenuItem Header="PKG Reader (Viewer)" x:Name="OpenPKGReaderMenuItem"/>
2526
<MenuItem Header="PKG Sender" x:Name="OpenPKGSenderMenuItem"/>
27+
<MenuItem Header="Port Checker" x:Name="OpenPortCheckerMenuItem"/>
2628
<MenuItem Header="PS Classics fPKG Builder" x:Name="OpenPSClassicsfPKGBuilderMenuItem"/>
2729
<MenuItem Header="SELF Decrypter" x:Name="OpenSELFDecrypterMenuItem"/>
2830
<MenuItem Header="Simple Shortcut PKG Creator" x:Name="OpenShortcutPKGCreatorMenuItem"/>
@@ -119,16 +121,21 @@
119121
</MenuItem>
120122
</MenuItem>
121123
<MenuItem x:Name="WebManMenuItem" Header="webMAN for websrv">
122-
<MenuItem Header="General">
123-
<MenuItem Header="Open PS5 WebSrv Interface" x:Name="OpenPS5WebSrvInterface"/>
124-
<MenuItem Header="Browse PS5 File System" x:Name="BrowsePS5FileSystem"/>
125-
<MenuItem Header="Install or Remove Homebrew" x:Name="ManagePS5Homebrew"/>
126-
</MenuItem>
127-
<MenuItem Header="Game Utilities">
124+
<TextBlock Text="Requires WebSrv running" FontWeight="Bold" TextDecorations="Underline"></TextBlock>
125+
<MenuItem Header="Emulator Utilities">
128126
<MenuItem Header="Manage ROMs of Homebrew Emulators" x:Name="ManagePS5GameROMs"/>
129127
</MenuItem>
130-
<MenuItem Header="Temperature Monitoring">
131-
<MenuItem Header="Show system info on PS5" x:Name="ShowSystemInfoOnPS5"/>
128+
<MenuItem Header="General Utilities">
129+
<MenuItem Header="Open PS5 WebServer Interface" x:Name="OpenPS5WebSrvInterface"/>
130+
<MenuItem Header="Browse PS5 File System" x:Name="BrowsePS5FileSystem"/>
131+
<MenuItem Header="Manage installed Homebrew" x:Name="ManagePS5Homebrew"/>
132+
</MenuItem>
133+
</MenuItem>
134+
<MenuItem x:Name="TelnetMenuItem" Header="Commands for shsrv">
135+
<TextBlock Text="Requires ShSrv running" FontWeight="Bold" TextDecorations="Underline"></TextBlock>
136+
<MenuItem Header="Read Console Information">
137+
<MenuItem Header="Get Model, Serial Number, Software Version &amp; Temperatures" x:Name="GetConsoleInfo"/>
138+
<MenuItem Header="Get AuthID" x:Name="GetAuthID"/>
132139
</MenuItem>
133140
</MenuItem>
134141
<MenuItem x:Name="DownloadsMenuItem" Header="Downloads">
@@ -236,6 +243,13 @@
236243
</MenuItem>
237244

238245
<MenuItem Header="Payloads">
246+
<MenuItem Header="Dump Runner by Echo Stretch">
247+
<MenuItem Header="Download v0.01" x:Name="DownloadDumpRunner">
248+
<MenuItem.Icon>
249+
<Image Source="/Images/download.png"/>
250+
</MenuItem.Icon>
251+
</MenuItem>
252+
</MenuItem>
239253
<MenuItem Header="ELFLdr by john-tornblom">
240254
<MenuItem Header="Download v0.19" x:Name="DownloadELFLdr">
241255
<MenuItem.Icon>
@@ -254,16 +268,6 @@
254268
<Image Source="/Images/download.png"/>
255269
</MenuItem.Icon>
256270
</MenuItem>
257-
<MenuItem Header="Download v2.0b" x:Name="DownloadetaHEN">
258-
<MenuItem.Icon>
259-
<Image Source="/Images/download.png"/>
260-
</MenuItem.Icon>
261-
</MenuItem>
262-
<MenuItem Header="Download v2.0b (No Toolbox)" x:Name="DownloadetaHENNoToolbox">
263-
<MenuItem.Icon>
264-
<Image Source="/Images/download.png"/>
265-
</MenuItem.Icon>
266-
</MenuItem>
267271
<MenuItem Header="Download v2.0b IPV6 BD-J ISO" x:Name="DownloadetaHENBDJB">
268272
<MenuItem.Icon>
269273
<Image Source="/Images/download.png"/>

PS Multi Tools/Menus/PS5Menu.xaml.vb

Lines changed: 98 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Imports System.Net
33
Imports System.Net.Sockets
44
Imports System.Security.Authentication
5+
Imports System.Threading
56
Imports FluentFTP
67
Imports Microsoft.Web.WebView2.Core
78
Imports Newtonsoft.Json
@@ -200,7 +201,7 @@ Public Class PS5Menu
200201
End Sub
201202

202203
Private Sub OpenGP5ManagerMenuItem_Click(sender As Object, e As RoutedEventArgs) Handles OpenGP5ManagerMenuItem.Click
203-
Dim NewGP5Creator As New GP5Creator() With {.PubToolsPath = Environment.CurrentDirectory + "\Tools\PS5\prospero-pub-cmd.exe", .ShowActivated = True}
204+
Dim NewGP5Creator As New GP5Creator() With {.ShowActivated = True}
204205
NewGP5Creator.Show()
205206
End Sub
206207

@@ -220,20 +221,17 @@ Public Class PS5Menu
220221
End Sub
221222

222223
Private Sub OpenPKGBuilderMenuItem_Click(sender As Object, e As RoutedEventArgs) Handles OpenPKGBuilderMenuItem.Click
223-
Dim NewPKGBuilder As New PS5PKGBuilder() With {.PubToolsPath = Environment.CurrentDirectory + "\Tools\PS5\prospero-pub-cmd.exe", .ShowActivated = True}
224+
Dim NewPKGBuilder As New PS5PKGBuilder() With {.ShowActivated = True}
224225
NewPKGBuilder.Show()
225226
End Sub
226227

228+
Private Sub OpenPKGExtractorMenuItem_Click(sender As Object, e As RoutedEventArgs) Handles OpenPKGExtractorMenuItem.Click
229+
Dim NewPS5PKGExtractor As New PS5PKGExtractor() With {.ShowActivated = True}
230+
NewPS5PKGExtractor.Show()
231+
End Sub
232+
227233
Private Sub OpenAudioConverterMenuItem_Click(sender As Object, e As RoutedEventArgs) Handles OpenAudioConverterMenuItem.Click
228234
Dim NewAudioConverter As New PS5AT9Converter() With {.ShowActivated = True}
229-
230-
If File.Exists(Environment.CurrentDirectory + "\Tools\PS5\at9tool.exe") Then
231-
NewAudioConverter.AT9Tool = Environment.CurrentDirectory + "\Tools\PS5\at9tool.exe"
232-
Else
233-
NewAudioConverter.IsEnabled = False
234-
MsgBox("Could not find the at9tool." + vbCrLf + "Please add it inside the 'Tools\PS5' folder inside PS Multi Tools.", MsgBoxStyle.Information, "at9tool not available")
235-
End If
236-
237235
NewAudioConverter.Show()
238236
End Sub
239237

@@ -301,6 +299,11 @@ Public Class PS5Menu
301299
End If
302300
End Sub
303301

302+
Private Sub OpenPortCheckerMenuItem_Click(sender As Object, e As RoutedEventArgs) Handles OpenPortCheckerMenuItem.Click
303+
Dim NewPS5PortChecker As New PS5PortChecker() With {.ShowActivated = True, .PS5Host = SharedIPAddress}
304+
NewPS5PortChecker.Show()
305+
End Sub
306+
304307
Private Sub OpenPSClassicsfPKGBuilderMenuItem_Click(sender As Object, e As RoutedEventArgs) Handles OpenPSClassicsfPKGBuilderMenuItem.Click
305308
Dim NewPSClassicsfPKGBuilder As New PSClassicsfPKGBuilder() With {.ShowActivated = True}
306309
NewPSClassicsfPKGBuilder.Show()
@@ -466,6 +469,15 @@ Public Class PS5Menu
466469

467470
#Region "Homebrew"
468471

472+
Private Async Sub DownloadDumpRunner_Click(sender As Object, e As RoutedEventArgs) Handles DownloadDumpRunner.Click
473+
Dim NewDownloader As New Downloader() With {.ShowActivated = True}
474+
NewDownloader.Show()
475+
If Await NewDownloader.CreateNewDownload("http://X.X.X.X/ps5/hb/dump_runner.elf") = False Then
476+
MsgBox("Could not download the selected file.", MsgBoxStyle.Critical)
477+
NewDownloader.Close()
478+
End If
479+
End Sub
480+
469481
Private Async Sub DownloadAvatarChanger_Click(sender As Object, e As RoutedEventArgs) Handles DownloadAvatarChanger.Click
470482
Dim NewDownloader As New Downloader() With {.ShowActivated = True}
471483
NewDownloader.Show()
@@ -550,7 +562,7 @@ Public Class PS5Menu
550562
Private Async Sub DownloadNewKStuff_Click(sender As Object, e As RoutedEventArgs) Handles DownloadNewKStuff.Click
551563
Dim NewDownloader As New Downloader() With {.ShowActivated = True, .PackageConsole = "PS5"}
552564
NewDownloader.Show()
553-
If Await NewDownloader.CreateNewDownload("http://X.X.X.X/ps5/hb/kstuff_3xx-7xx_v1.5.elf") = False Then
565+
If Await NewDownloader.CreateNewDownload("http://X.X.X.X/ps5/hb/kstuff_v1.5.elf") = False Then
554566
MsgBox("Could not download the selected file.", MsgBoxStyle.Critical)
555567
NewDownloader.Close()
556568
End If
@@ -559,7 +571,7 @@ Public Class PS5Menu
559571
Private Async Sub DownloadKStuffToggle_Click(sender As Object, e As RoutedEventArgs) Handles DownloadKStuffToggle.Click
560572
Dim NewDownloader As New Downloader() With {.ShowActivated = True, .PackageConsole = "PS5"}
561573
NewDownloader.Show()
562-
If Await NewDownloader.CreateNewDownload("http://X.X.X.X/ps5/hb/kstuff-toggle-0.2Beta.zip") = False Then
574+
If Await NewDownloader.CreateNewDownload("http://X.X.X.X/ps5/hb/kstuff-toggle.elf") = False Then
563575
MsgBox("Could not download the selected file.", MsgBoxStyle.Critical)
564576
NewDownloader.Close()
565577
End If
@@ -574,24 +586,6 @@ Public Class PS5Menu
574586
End If
575587
End Sub
576588

577-
Private Async Sub DownloadetaHEN_Click(sender As Object, e As RoutedEventArgs) Handles DownloadetaHEN.Click
578-
Dim NewDownloader As New Downloader() With {.ShowActivated = True, .PackageConsole = "PS5"}
579-
NewDownloader.Show()
580-
If Await NewDownloader.CreateNewDownload("https://github.com/etaHEN/etaHEN/releases/download/2.0b/etaHEN-2.0b.bin") = False Then
581-
MsgBox("Could not download the selected file.", MsgBoxStyle.Critical)
582-
NewDownloader.Close()
583-
End If
584-
End Sub
585-
586-
Private Async Sub DownloadetaHENNoToolbox_Click(sender As Object, e As RoutedEventArgs) Handles DownloadetaHENNoToolbox.Click
587-
Dim NewDownloader As New Downloader() With {.ShowActivated = True, .PackageConsole = "PS5"}
588-
NewDownloader.Show()
589-
If Await NewDownloader.CreateNewDownload("https://github.com/etaHEN/etaHEN/releases/download/2.0b/Payload.zip") = False Then
590-
MsgBox("Could not download the selected file.", MsgBoxStyle.Critical)
591-
NewDownloader.Close()
592-
End If
593-
End Sub
594-
595589
Private Async Sub DownloadetaHENBDJB_Click(sender As Object, e As RoutedEventArgs) Handles DownloadetaHENBDJB.Click
596590
Dim NewDownloader As New Downloader() With {.ShowActivated = True, .PackageConsole = "PS5"}
597591
NewDownloader.Show()
@@ -1052,10 +1046,6 @@ Public Class PS5Menu
10521046
End If
10531047
End Sub
10541048

1055-
Private Sub ShowSystemInfoOnPS5_Click(sender As Object, e As RoutedEventArgs) Handles ShowSystemInfoOnPS5.Click
1056-
MsgBox("Not ready yet.", MsgBoxStyle.Information)
1057-
End Sub
1058-
10591049
Private Sub OpenPS5WebSrvInterface_Click(sender As Object, e As RoutedEventArgs) Handles OpenPS5WebSrvInterface.Click
10601050
If Not String.IsNullOrEmpty(SharedIPAddress) Then
10611051
Dim NewwebMANMODWebGUI As New PS5webMANBrowser() With {.ShowActivated = True, .WebMANWebSrvAddress = "http://" & SharedIPAddress + ":8080"}
@@ -1086,6 +1076,80 @@ Public Class PS5Menu
10861076
NewWebSrvHomebrewManager.Show()
10871077
End Sub
10881078

1079+
Private Sub GetAuthID_Click(sender As Object, e As RoutedEventArgs) Handles GetAuthID.Click
1080+
Try
1081+
Dim NewTelnetClient As New TelnetClient(SharedIPAddress, 2323)
1082+
1083+
Thread.Sleep(20000) 'Wait 20sec until connected
1084+
1085+
'Get welcome message to check if connected successfully
1086+
Dim WelcomeMesssage As String = NewTelnetClient.Read()
1087+
If Not String.IsNullOrEmpty(WelcomeMesssage) Then
1088+
1089+
NewTelnetClient.Write("authid")
1090+
1091+
Thread.Sleep(500)
1092+
1093+
Dim RetrievedAuthID As String = NewTelnetClient.Read()
1094+
MsgBox("AuthID: ")
1095+
Else
1096+
MsgBox("ShSrv took to long to respond.", MsgBoxStyle.Critical, "Error reading output")
1097+
NewTelnetClient.Close()
1098+
End If
1099+
1100+
'Disconnect
1101+
NewTelnetClient.Close()
1102+
Catch ex As Exception
1103+
MsgBox("An error occurred: " & ex.Message)
1104+
End Try
1105+
End Sub
1106+
1107+
Private Sub GetConsoleInfo_Click(sender As Object, e As RoutedEventArgs) Handles GetConsoleInfo.Click
1108+
Try
1109+
Dim NewTelnetClient As New TelnetClient(SharedIPAddress, 2323)
1110+
1111+
Thread.Sleep(20000) 'Wait 20sec until connected
1112+
1113+
'Get welcome message and split console information output to values
1114+
Dim WelcomeMesssage As String = NewTelnetClient.Read()
1115+
If Not String.IsNullOrEmpty(WelcomeMesssage) Then
1116+
Dim WelcomeData As New Dictionary(Of String, String)()
1117+
Dim SplittedLines() As String = WelcomeMesssage.Split(New String() {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
1118+
1119+
For Each Line As String In SplittedLines
1120+
Dim LineParts() As String = Line.Split(":"c)
1121+
If LineParts.Length >= 2 Then
1122+
Dim DictKey As String = LineParts(0).Trim()
1123+
Dim DictValue As String = LineParts(1).Trim()
1124+
WelcomeData(DictKey) = DictValue
1125+
End If
1126+
Next
1127+
1128+
Dim ConsoleModel As String = If(WelcomeData.ContainsKey("Model"), WelcomeData("Model"), String.Empty)
1129+
Dim ConsoleSerialNumber As String = If(WelcomeData.ContainsKey("S/N"), WelcomeData("S/N"), String.Empty)
1130+
Dim ConsoleSoftwareVersion As String = If(WelcomeData.ContainsKey("S/W"), WelcomeData("S/W"), String.Empty)
1131+
Dim ConsoleSoCTemp As String = If(WelcomeData.ContainsKey("SoC temp"), WelcomeData("SoC temp"), String.Empty)
1132+
Dim ConsoleCPUTemp As String = If(WelcomeData.ContainsKey("CPU temp"), WelcomeData("CPU temp"), String.Empty)
1133+
Dim ConsoleCPUFreq As String = If(WelcomeData.ContainsKey("CPU freq"), WelcomeData("CPU freq"), String.Empty)
1134+
1135+
MsgBox("Model Number: " & ConsoleModel & vbCrLf &
1136+
"Serial Number: " & ConsoleSerialNumber & vbCrLf &
1137+
"Software Version: " & ConsoleSoftwareVersion & vbCrLf &
1138+
"SoC Temperature: " & ConsoleSoCTemp & vbCrLf &
1139+
"CPU Temperature: " & ConsoleCPUTemp & vbCrLf &
1140+
"CPU Frequency: " & ConsoleCPUFreq)
1141+
Else
1142+
MsgBox("ShSrv took to long to respond.", MsgBoxStyle.Critical, "Error reading output")
1143+
NewTelnetClient.Close()
1144+
End If
1145+
1146+
'Disconnect
1147+
NewTelnetClient.Close()
1148+
Catch ex As Exception
1149+
MsgBox("An error occurred: " & ex.Message)
1150+
End Try
1151+
End Sub
1152+
10891153
#End Region
10901154

10911155
End Class

0 commit comments

Comments
 (0)