├── banner.png
├── source
├── PS5-Profile-Modder
│ ├── Resources
│ │ └── Images
│ │ │ ├── ftp.png
│ │ │ ├── icon.png
│ │ │ ├── logo.png
│ │ │ ├── other.jpg
│ │ │ └── default_avatar.png
│ ├── 3e15884a-7090-441d-99ff-f787a4cbc2da(2).ico
│ ├── Properties
│ │ ├── Settings.settings
│ │ ├── Settings.Designer.cs
│ │ ├── AssemblyInfo.cs
│ │ ├── app.manifest
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── UsersDictionary.cs
│ ├── PS5User.cs
│ ├── Program.cs
│ ├── App.config
│ ├── CropTool.cs
│ ├── packages.config
│ ├── CropTool.resx
│ ├── ConnectForm.cs
│ ├── CropTool.Designer.cs
│ ├── ConnectForm.Designer.cs
│ ├── Editor.Designer.cs
│ ├── FodyWeavers.xsd
│ ├── Editor.cs
│ ├── ConnectForm.resx
│ ├── PS5-Profile-Modder.csproj
│ └── Editor.resx
└── PS5-Profile-Modder.sln
├── README.md
└── .gitignore
/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/koolaidxk1d/Hotswap/HEAD/banner.png
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Resources/Images/ftp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/koolaidxk1d/Hotswap/HEAD/source/PS5-Profile-Modder/Resources/Images/ftp.png
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Resources/Images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/koolaidxk1d/Hotswap/HEAD/source/PS5-Profile-Modder/Resources/Images/icon.png
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Resources/Images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/koolaidxk1d/Hotswap/HEAD/source/PS5-Profile-Modder/Resources/Images/logo.png
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Resources/Images/other.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/koolaidxk1d/Hotswap/HEAD/source/PS5-Profile-Modder/Resources/Images/other.jpg
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Resources/Images/default_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/koolaidxk1d/Hotswap/HEAD/source/PS5-Profile-Modder/Resources/Images/default_avatar.png
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/3e15884a-7090-441d-99ff-f787a4cbc2da(2).ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/koolaidxk1d/Hotswap/HEAD/source/PS5-Profile-Modder/3e15884a-7090-441d-99ff-f787a4cbc2da(2).ico
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/UsersDictionary.cs:
--------------------------------------------------------------------------------
1 | using ImageMagick;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Drawing;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace PS5_Profile_Modder {
10 | public static class Users {
11 | public static Dictionary UsersDict = new Dictionary();
12 | }
13 | }
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/PS5User.cs:
--------------------------------------------------------------------------------
1 | using ImageMagick;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Drawing;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace PS5_Profile_Modder {
10 | public class PS5User {
11 | public readonly string ID;
12 | public int[] TrophieCounts = new int[4];
13 | public MagickImage Avatar;
14 | public bool Changed = false;
15 |
16 | public PS5User(string id, MagickImage avatar) {
17 | this.ID = id;
18 | this.Avatar = avatar;
19 |
20 |
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Program.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.LookAndFeel;
2 | using DevExpress.Skins;
3 | using DevExpress.UserSkins;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Linq;
7 | using System.Windows.Forms;
8 |
9 | namespace PS5_Profile_Modder {
10 | public static class Program {
11 | ///
12 | /// The main entry point for the application.
13 | ///
14 | [STAThread]
15 | public static void Main() {
16 | Application.EnableVisualStyles();
17 | Application.SetCompatibleTextRenderingDefault(false);
18 | Application.Run(new Connect());
19 |
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.18034
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace PS5_Profile_Modder.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("HotswapPS5")]
8 | [assembly: AssemblyDescription("Automatically change your PS5 avatar.")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("HotswapPS5")]
12 | [assembly: AssemblyCopyright("Copyright © koolaidxk1d 2023")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 | // Setting ComVisible to false makes the types in this assembly not visible
16 | // to COM components. If you need to access a type in this assembly from
17 | // COM, set the ComVisible attribute to true on that type.
18 | [assembly: ComVisible(false)]
19 | // The following GUID is for the ID of the typelib if this project is exposed to COM
20 | [assembly: Guid("9006f149-aa49-4b8e-ba69-386d945fa738")]
21 | // Version information for an assembly consists of the following four values:
22 | //
23 | // Major Version
24 | // Minor Version
25 | // Build Number
26 | // Revision
27 | //
28 | // You can specify all the values or you can default the Build and Revision Numbers
29 | // by using the '*' as shown below:
30 | // [assembly: AssemblyVersion("1.0.*")]
31 | [assembly: AssemblyVersion("1.0.0.0")]
32 | [assembly: AssemblyFileVersion("1.0.0.0")]
33 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hotswap
2 | ### Remote avatar changer for the PS5.
3 |
4 | 
5 |
6 | ## Features
7 | - Uses existing FTP solutions. No payload needed!
8 | - Automatically handles .png/.dds file resizing and formatting
9 | - Built-in crop tool and photo editor
10 | - Pick image or take a picture with your webcam
11 | - Pull and save existing avatar
12 | - Automatic Light and Dark Mode themes
13 |
14 | ## How to Use
15 | 1) Input IP and Port to connect and grab the user data.
16 | 2) Make desired changes.
17 | 3) Click Save User to save changes to a given user.
18 |
19 | ## Build Instructions
20 |
21 | - Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads) (check the ".NET Desktop Development" box in the installer) and install [.NET Framework 4.8 Developer Pack](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net48-developer-pack-offline-installer).
22 | - Signup and get a free auth key at [Nuget.Devexpress.com](https://nuget.devexpress.com/)
23 | - Open VS and open the solution. Go into View > Other Windows > Package Manager Console. Click **Restore** and then Enter the following:
24 |
25 | ```
26 | dotnet nuget add source https://nuget.devexpress.com/api -n DXFeed -u DevExpress -p {your auth key}
27 | Install-Package DevExpress.Win
28 | Unblock-File PS5-Profile-Modder/ConnectForm.resx
29 | Unblock-File PS5-Profile-Modder/Editor.resx
30 | ```
31 | - The other dependencies *should* sort themselves out automatically.
32 | - Click on Editor.cs in the solution explorer. This will trigger a license file to be created in the Properties folder. Once this happens, you can **delete the license.licx** file (if you don't delete it, you will have popups when you run the program.)
33 | - Build (Ctrl-Shift-B)
34 |
35 | ---
36 |
37 | thanks [@DizzMods](https://twitter.com/dizzmods)
38 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | System
12 |
13 |
14 | True
15 |
16 |
17 | Skin/WXI
18 |
19 |
20 | Darkness
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | UseSegoeUI
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.7.34003.232
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PS5-Profile-Modder", "PS5-Profile-Modder\PS5-Profile-Modder.csproj", "{84C8B2B0-ED33-4454-A716-66A4E332C7ED}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|ARM = Debug|ARM
12 | Debug|ARM64 = Debug|ARM64
13 | Debug|x64 = Debug|x64
14 | Debug|x86 = Debug|x86
15 | Release|Any CPU = Release|Any CPU
16 | Release|ARM = Release|ARM
17 | Release|ARM64 = Release|ARM64
18 | Release|x64 = Release|x64
19 | Release|x86 = Release|x86
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|ARM.ActiveCfg = Debug|Any CPU
25 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|ARM.Build.0 = Debug|Any CPU
26 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|ARM64.ActiveCfg = Debug|Any CPU
27 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|ARM64.Build.0 = Debug|Any CPU
28 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|x64.ActiveCfg = Debug|Any CPU
29 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|x64.Build.0 = Debug|Any CPU
30 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|x86.ActiveCfg = Debug|x86
31 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Debug|x86.Build.0 = Debug|x86
32 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
33 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|Any CPU.Build.0 = Release|Any CPU
34 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|ARM.ActiveCfg = Release|Any CPU
35 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|ARM.Build.0 = Release|Any CPU
36 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|ARM64.ActiveCfg = Release|Any CPU
37 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|ARM64.Build.0 = Release|Any CPU
38 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|x64.ActiveCfg = Release|Any CPU
39 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|x64.Build.0 = Release|Any CPU
40 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|x86.ActiveCfg = Release|x86
41 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}.Release|x86.Build.0 = Release|x86
42 | EndGlobalSection
43 | GlobalSection(SolutionProperties) = preSolution
44 | HideSolutionNode = FALSE
45 | EndGlobalSection
46 | GlobalSection(ExtensibilityGlobals) = postSolution
47 | SolutionGuid = {BB3F7AF4-1FDA-4049-B916-6859E01CCF98}
48 | EndGlobalSection
49 | EndGlobal
50 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/CropTool.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.XtraEditors;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.ComponentModel;
5 | using System.Data;
6 | using System.Drawing;
7 | using System.Linq;
8 | using System.Text;
9 | using System.Threading.Tasks;
10 | using System.Windows.Forms;
11 | using ImageMagick;
12 | using System.IO;
13 | using System.Drawing.Imaging;
14 | using DevExpress.XtraEditors.ImageEditor;
15 |
16 | namespace PS5_Profile_Modder {
17 | public partial class CropTool : DevExpress.XtraEditors.XtraForm {
18 |
19 | String SelectedUser;
20 | public CropTool(Image selected_user_image, String selected_user) {
21 | InitializeComponent();
22 | SelectedUser = selected_user;
23 | pictureEdit1.Image = selected_user_image;
24 | if (!Connect.IsDarkMode()) { this.IconOptions.Image = global::PS5_Profile_Modder.Properties.Resources.other; }
25 |
26 |
27 |
28 |
29 |
30 | }
31 |
32 | private void btnChooseFile_Click(object sender, EventArgs e) {
33 | fileOpenDialog.ShowDialog();
34 |
35 | }
36 |
37 | // if file is opened
38 | private void fileOpenDialog_FileOk(object sender, CancelEventArgs e) {
39 | try {
40 | pictureEdit1.Image = Bitmap.FromStream(fileOpenDialog.OpenFile());
41 |
42 | } catch {
43 | XtraMessageBox.Show("Image is corrupt/unsupported ;__;", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
44 | return;
45 | }
46 | }
47 |
48 |
49 | private void btnTakePicture_Click(object sender, EventArgs e) {
50 | pictureEdit1.ShowTakePictureDialog();
51 | }
52 |
53 |
54 | private void btnCrop_Click(object sender, EventArgs e) {
55 | pictureEdit1.ShowImageEditorDialog();
56 | }
57 |
58 | private void btnDone_Click(object sender, EventArgs e) {
59 | try {
60 |
61 | var ms = new MemoryStream();
62 | pictureEdit1.Image.Save(ms, ImageFormat.Png);
63 | byte[] i = ms.ToArray();
64 | Users.UsersDict[SelectedUser].Avatar = new MagickImage(i);
65 | Users.UsersDict[SelectedUser].Changed = true;
66 |
67 | } catch { }
68 |
69 | this.Close();
70 |
71 | }
72 |
73 | private void pictureEdit1_ImageEditorDialogShowing(object sender, DevExpress.XtraEditors.ImageEditor.ImageEditorDialogShowingEventArgs e) {
74 | e.Form.CustomizeCropOptions += CustomizeCropOptions;
75 | }
76 |
77 | void CustomizeCropOptions(object sender, CustomizeCropOptionsEventArgs e) {
78 | var Square = new AspectRatioInfo(AspectRatioMode.Square, "Square");
79 | var Manual = new AspectRatioInfo(AspectRatioMode.Manual, "Manual");
80 | e.AspectRatios.Clear();
81 | e.AspectRatios.Add(Square);
82 | e.AspectRatios.Add(Manual);
83 | e.DefaultAspectRatio = Square;
84 | e.CropRegionToImageRatio = 100;
85 |
86 | }
87 |
88 |
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Properties/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
50 |
58 |
59 |
73 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace PS5_Profile_Modder.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PS5_Profile_Modder.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap default_avatar {
67 | get {
68 | object obj = ResourceManager.GetObject("default_avatar", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap ftp {
77 | get {
78 | object obj = ResourceManager.GetObject("ftp", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap other {
87 | get {
88 | object obj = ResourceManager.GetObject("other", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/CropTool.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 252, 18
122 |
123 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/ConnectForm.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.LookAndFeel;
2 | using DevExpress.Skins;
3 | using DevExpress.XtraEditors;
4 | using FluentFTP;
5 | using ImageMagick;
6 | using Microsoft.Win32;
7 | using System;
8 | using System.Collections.Generic;
9 | using System.ComponentModel;
10 | using System.Data;
11 | using System.Diagnostics.Eventing.Reader;
12 | using System.Drawing;
13 | using System.Linq;
14 | using System.Net;
15 | using System.Runtime.CompilerServices;
16 | using System.Text;
17 | using System.Windows.Forms;
18 | using static System.Windows.Forms.VisualStyles.VisualStyleElement;
19 |
20 | namespace PS5_Profile_Modder {
21 | public partial class Connect : DevExpress.XtraEditors.XtraForm {
22 |
23 | FtpClient client;
24 |
25 |
26 | public Connect() {
27 | InitializeComponent();
28 | DevExpress.XtraEditors.WindowsFormsSettings.AllowRoundedWindowCorners = DevExpress.Utils.DefaultBoolean.True;
29 | if (IsDarkMode())
30 | this.LookAndFeel.SetSkinStyle(SkinStyle.WXI, SkinSvgPalette.WXI.Darkness);
31 | else
32 | this.LookAndFeel.SetSkinStyle(SkinStyle.WXI, SkinSvgPalette.WXI.Clearness);
33 |
34 | if (!Connect.IsDarkMode()) { IconOptions.Image = PS5_Profile_Modder.Properties.Resources.other; }
35 |
36 | Skin currentSkin = CommonSkins.GetSkin(UserLookAndFeel.Default);
37 | SkinElement element = currentSkin[CommonSkins.SkinButton];
38 | btnConnect.Appearance.BackColor = currentSkin.SvgPalettes["DefaultSkinPalette"].GetColorByStyleName("Primary Background 0", "White");
39 | }
40 |
41 |
42 | public static bool IsDarkMode() {
43 | string keyPath = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize";
44 | string valueName = "AppsUseLightTheme";
45 | object testValue = Registry.GetValue(keyPath, valueName, null);
46 | switch (testValue) {
47 | case 0:
48 | return true;
49 | case 1:
50 | return false;
51 | default:
52 | return false;
53 | }
54 | }
55 |
56 | private void btnConnect_Click(object sender, EventArgs e) {
57 | submitInput();
58 | }
59 | private void inputIP_KeyPress(object sender, KeyPressEventArgs e) {
60 | if (e.KeyChar == 13) {
61 | submitInput();
62 | }
63 | }
64 | private void inputPort_KeyPress(object sender, KeyPressEventArgs e) {
65 | if (e.KeyChar == 13) {
66 | submitInput();
67 | }
68 | }
69 |
70 |
71 | private string InputIsValid() {
72 | if (!IPAddress.TryParse(inputIP.Text, out _)) {
73 | return "invalid_ip";
74 | } else if (!(int.TryParse(inputPort.Text, out int result) && result < 65536 && result > 0)) {
75 | return "invalid_port";
76 | }
77 |
78 | return "OK";
79 | }
80 |
81 | private void submitInput() {
82 |
83 | switch (InputIsValid()) {
84 | case "invalid_ip":
85 | XtraMessageBox.Show("Enter a valid IP address.", "Invalid IP", MessageBoxButtons.OK);
86 | break;
87 | case "invalid_port":
88 | XtraMessageBox.Show("Enter a valid port between 1 and 65536.", "Invalid Port", MessageBoxButtons.OK);
89 | break;
90 | case "OK":
91 | RETRY:
92 | this.client = new FtpClient(inputIP.Text, int.Parse(inputPort.Text));
93 | try {
94 | client.AutoConnect();
95 |
96 | //Console.WriteLine("Success");
97 | //this.Close();
98 | } catch {
99 | if (XtraMessageBox.Show("Unable to connect. Is FTP running on the console?", "Connection Failed",
100 | MessageBoxButtons.RetryCancel) == DialogResult.Retry) {
101 | goto RETRY;
102 | }
103 | }
104 |
105 | FtpGetUsers(inputIP.Text, inputPort.Text);
106 | break;
107 | }
108 | }
109 |
110 | private void Connect_FormClosed(object sender, FormClosedEventArgs e) {
111 | Application.Exit();
112 | }
113 |
114 | private void FtpGetUsers(string ip, string port) {
115 | client.SetWorkingDirectory("/user/home");
116 | FtpListItem[] UserListItems = client.GetListing();
117 | byte[] NameBuffer = new byte[17];
118 | byte[] AvatarBuffer = new byte[100000000];
119 |
120 |
121 | foreach (FtpListItem item in UserListItems) {
122 | Array.Clear(NameBuffer, 0, NameBuffer.Length);
123 | Array.Clear(AvatarBuffer, 0, AvatarBuffer.Length);
124 | MagickImage Avatar = null;
125 |
126 | //download name if possible
127 | try {
128 | client.DownloadBytes(out NameBuffer, string.Format("/user/home/{0}/username.dat", item.Name));
129 | } catch {
130 | NameBuffer = Encoding.ASCII.GetBytes(item.Name);
131 | }
132 | //download avatar if possible
133 | try {
134 | client.DownloadBytes(out AvatarBuffer, string.Format("/system_data/priv/cache/profile/{0}/avatar.png", ("0x" + item.Name.ToUpper())));
135 | Avatar = new MagickImage(AvatarBuffer);
136 | } catch {
137 | Console.WriteLine("Could not load the image or the image did not exist.");
138 | AvatarBuffer = new byte[100000000];
139 | }
140 |
141 | Users.UsersDict.Add(System.Text.Encoding.Default.GetString(NameBuffer), new PS5User(item.Name, Avatar));
142 | }
143 |
144 | Editor editorWindow = new Editor(client);
145 | editorWindow.ShowDialog();
146 | this.Close();
147 |
148 |
149 | }
150 |
151 | private void hyperlinkLabelControl1_HyperlinkClick(object sender, DevExpress.Utils.HyperlinkClickEventArgs e) {
152 | System.Diagnostics.Process.Start("https://" + e.Link);
153 |
154 | }
155 | }
156 | }
157 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/CropTool.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace PS5_Profile_Modder {
2 | partial class CropTool {
3 | ///
4 | /// Required designer variable.
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// Clean up any resources being used.
10 | ///
11 | /// true if managed resources should be disposed; otherwise, false.
12 | protected override void Dispose(bool disposing) {
13 | if (disposing && (components != null)) {
14 | components.Dispose();
15 | }
16 | base.Dispose(disposing);
17 | }
18 |
19 | #region Windows Form Designer generated code
20 |
21 | ///
22 | /// Required method for Designer support - do not modify
23 | /// the contents of this method with the code editor.
24 | ///
25 | private void InitializeComponent() {
26 | this.pictureEdit1 = new DevExpress.XtraEditors.PictureEdit();
27 | this.btnDone = new DevExpress.XtraEditors.SimpleButton();
28 | this.btnCrop = new DevExpress.XtraEditors.SimpleButton();
29 | this.btnChooseFile = new DevExpress.XtraEditors.SimpleButton();
30 | this.btnTakePicture = new DevExpress.XtraEditors.SimpleButton();
31 | this.fileOpenDialog = new System.Windows.Forms.OpenFileDialog();
32 | ((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).BeginInit();
33 | this.SuspendLayout();
34 | //
35 | // pictureEdit1
36 | //
37 | this.pictureEdit1.EditValue = global::PS5_Profile_Modder.Properties.Resources.default_avatar;
38 | this.pictureEdit1.Location = new System.Drawing.Point(12, 12);
39 | this.pictureEdit1.Name = "pictureEdit1";
40 | this.pictureEdit1.Properties.PictureStoreMode = DevExpress.XtraEditors.Controls.PictureStoreMode.Image;
41 | this.pictureEdit1.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.Auto;
42 | this.pictureEdit1.Properties.ShowMenu = false;
43 | this.pictureEdit1.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Squeeze;
44 | this.pictureEdit1.Size = new System.Drawing.Size(250, 250);
45 | this.pictureEdit1.TabIndex = 0;
46 | this.pictureEdit1.ImageEditorDialogShowing += new DevExpress.XtraEditors.ImageEditor.ImageEditorDialogShowingEventHandler(this.pictureEdit1_ImageEditorDialogShowing);
47 | //
48 | // btnDone
49 | //
50 | this.btnDone.Location = new System.Drawing.Point(178, 328);
51 | this.btnDone.Name = "btnDone";
52 | this.btnDone.Size = new System.Drawing.Size(85, 23);
53 | this.btnDone.TabIndex = 1;
54 | this.btnDone.Text = "Done";
55 | this.btnDone.Click += new System.EventHandler(this.btnDone_Click);
56 | //
57 | // btnCrop
58 | //
59 | this.btnCrop.Location = new System.Drawing.Point(192, 268);
60 | this.btnCrop.Name = "btnCrop";
61 | this.btnCrop.Size = new System.Drawing.Size(70, 23);
62 | this.btnCrop.TabIndex = 2;
63 | this.btnCrop.Text = "Crop";
64 | this.btnCrop.Click += new System.EventHandler(this.btnCrop_Click);
65 | //
66 | // btnChooseFile
67 | //
68 | this.btnChooseFile.Location = new System.Drawing.Point(12, 268);
69 | this.btnChooseFile.Name = "btnChooseFile";
70 | this.btnChooseFile.Size = new System.Drawing.Size(81, 23);
71 | this.btnChooseFile.TabIndex = 3;
72 | this.btnChooseFile.Text = "Choose a File";
73 | this.btnChooseFile.Click += new System.EventHandler(this.btnChooseFile_Click);
74 | //
75 | // btnTakePicture
76 | //
77 | this.btnTakePicture.Location = new System.Drawing.Point(99, 268);
78 | this.btnTakePicture.Name = "btnTakePicture";
79 | this.btnTakePicture.Size = new System.Drawing.Size(62, 23);
80 | this.btnTakePicture.TabIndex = 4;
81 | this.btnTakePicture.Text = "Webcam";
82 | this.btnTakePicture.Click += new System.EventHandler(this.btnTakePicture_Click);
83 | //
84 | // fileOpenDialog
85 | //
86 | this.fileOpenDialog.Filter = "Image Files|*.jpg;*.jpeg;*.png;*.tif;*.bmp";
87 | this.fileOpenDialog.RestoreDirectory = true;
88 | this.fileOpenDialog.Title = "Choose an Avatar";
89 | this.fileOpenDialog.FileOk += new System.ComponentModel.CancelEventHandler(this.fileOpenDialog_FileOk);
90 | //
91 | // CropTool
92 | //
93 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
94 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
95 | this.ClientSize = new System.Drawing.Size(275, 363);
96 | this.Controls.Add(this.btnTakePicture);
97 | this.Controls.Add(this.btnChooseFile);
98 | this.Controls.Add(this.btnCrop);
99 | this.Controls.Add(this.btnDone);
100 | this.Controls.Add(this.pictureEdit1);
101 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
102 | this.IconOptions.Image = global::PS5_Profile_Modder.Properties.Resources.default_avatar;
103 |
104 | this.MaximizeBox = false;
105 | this.MinimizeBox = false;
106 | this.Name = "CropTool";
107 | this.ShowInTaskbar = false;
108 | this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
109 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
110 | this.Text = "Crop Image";
111 | ((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).EndInit();
112 | this.ResumeLayout(false);
113 |
114 | }
115 |
116 | #endregion
117 |
118 | private DevExpress.XtraEditors.PictureEdit pictureEdit1;
119 | private DevExpress.XtraEditors.SimpleButton btnDone;
120 | private DevExpress.XtraEditors.SimpleButton btnCrop;
121 | private DevExpress.XtraEditors.SimpleButton btnChooseFile;
122 | private DevExpress.XtraEditors.SimpleButton btnTakePicture;
123 | private System.Windows.Forms.OpenFileDialog fileOpenDialog;
124 | }
125 | }
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\Images\default_avatar.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\Images\ftp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\Images\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/ConnectForm.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace PS5_Profile_Modder {
2 | partial class Connect {
3 | ///
4 | /// Required designer variable.
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// Clean up any resources being used.
10 | ///
11 | /// true if managed resources should be disposed; otherwise, false.
12 | protected override void Dispose(bool disposing) {
13 | if (disposing && (components != null)) {
14 | components.Dispose();
15 | }
16 | base.Dispose(disposing);
17 | }
18 |
19 | #region Windows Form Designer generated code
20 |
21 | ///
22 | /// Required method for Designer support - do not modify
23 | /// the contents of this method with the code editor.
24 | ///
25 | private void InitializeComponent() {
26 | this.components = new System.ComponentModel.Container();
27 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Connect));
28 | this.btnConnect = new DevExpress.XtraEditors.SimpleButton();
29 | this.behaviorManager1 = new DevExpress.Utils.Behaviors.BehaviorManager(this.components);
30 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
31 | this.inputPort = new DevExpress.XtraEditors.TextEdit();
32 | this.inputIP = new DevExpress.XtraEditors.TextEdit();
33 | this.hyperlinkLabelControl1 = new DevExpress.XtraEditors.HyperlinkLabelControl();
34 | ((System.ComponentModel.ISupportInitialize)(this.behaviorManager1)).BeginInit();
35 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
36 | ((System.ComponentModel.ISupportInitialize)(this.inputPort.Properties)).BeginInit();
37 | ((System.ComponentModel.ISupportInitialize)(this.inputIP.Properties)).BeginInit();
38 | this.SuspendLayout();
39 | //
40 | // btnConnect
41 | //
42 | this.btnConnect.Location = new System.Drawing.Point(184, 46);
43 | this.btnConnect.Name = "btnConnect";
44 | this.btnConnect.Size = new System.Drawing.Size(80, 28);
45 | this.btnConnect.TabIndex = 3;
46 | this.btnConnect.Text = "Connect";
47 | this.btnConnect.Click += new System.EventHandler(this.btnConnect_Click);
48 | //
49 | // pictureBox1
50 | //
51 | this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
52 | this.pictureBox1.Location = new System.Drawing.Point(7, 3);
53 | this.pictureBox1.Name = "pictureBox1";
54 | this.pictureBox1.Size = new System.Drawing.Size(100, 80);
55 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
56 | this.pictureBox1.TabIndex = 8;
57 | this.pictureBox1.TabStop = false;
58 | //
59 | // inputPort
60 | //
61 | this.inputPort.EditValue = "";
62 | this.inputPort.Location = new System.Drawing.Point(113, 46);
63 | this.inputPort.Name = "inputPort";
64 | this.inputPort.Properties.NullValuePrompt = "Port";
65 | this.inputPort.Properties.UseAdvancedMode = DevExpress.Utils.DefaultBoolean.True;
66 | this.inputPort.Properties.ValidateOnEnterKey = true;
67 | this.inputPort.Size = new System.Drawing.Size(65, 28);
68 | this.inputPort.TabIndex = 2;
69 | this.inputPort.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.inputPort_KeyPress);
70 | //
71 | // inputIP
72 | //
73 | this.inputIP.EditValue = "";
74 | this.inputIP.Location = new System.Drawing.Point(113, 12);
75 | this.inputIP.Name = "inputIP";
76 | this.inputIP.Properties.NullValuePrompt = "IP Address";
77 | this.inputIP.Properties.ValidateOnEnterKey = true;
78 | this.inputIP.Size = new System.Drawing.Size(151, 28);
79 | this.inputIP.TabIndex = 1;
80 | this.inputIP.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.inputIP_KeyPress);
81 | //
82 | // hyperlinkLabelControl1
83 | //
84 | this.hyperlinkLabelControl1.AllowHtmlTextInToolTip = DevExpress.Utils.DefaultBoolean.True;
85 | this.hyperlinkLabelControl1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
86 | this.hyperlinkLabelControl1.Location = new System.Drawing.Point(184, 92);
87 | this.hyperlinkLabelControl1.Name = "hyperlinkLabelControl1";
88 | this.hyperlinkLabelControl1.Size = new System.Drawing.Size(74, 13);
89 | this.hyperlinkLabelControl1.TabIndex = 9;
90 | this.hyperlinkLabelControl1.Text = "@koolaidxk1d";
91 | this.hyperlinkLabelControl1.HyperlinkClick += new DevExpress.Utils.HyperlinkClickEventHandler(this.hyperlinkLabelControl1_HyperlinkClick);
92 | //
93 | // Connect
94 | //
95 | this.Appearance.Options.UseFont = true;
96 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
97 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
98 | this.ClientSize = new System.Drawing.Size(276, 117);
99 | this.Controls.Add(this.hyperlinkLabelControl1);
100 | this.Controls.Add(this.pictureBox1);
101 | this.Controls.Add(this.btnConnect);
102 | this.Controls.Add(this.inputPort);
103 | this.Controls.Add(this.inputIP);
104 | this.Font = new System.Drawing.Font("Tahoma", 8.25F);
105 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
106 | this.IconOptions.Image = global::PS5_Profile_Modder.Properties.Resources.default_avatar;
107 | this.MaximizeBox = false;
108 | this.MinimizeBox = false;
109 | this.Name = "Connect";
110 | this.Text = "Connect to PS5";
111 | this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Connect_FormClosed);
112 | ((System.ComponentModel.ISupportInitialize)(this.behaviorManager1)).EndInit();
113 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
114 | ((System.ComponentModel.ISupportInitialize)(this.inputPort.Properties)).EndInit();
115 | ((System.ComponentModel.ISupportInitialize)(this.inputIP.Properties)).EndInit();
116 | this.ResumeLayout(false);
117 | this.PerformLayout();
118 |
119 | }
120 |
121 | #endregion
122 | private DevExpress.XtraEditors.TextEdit inputIP;
123 | private DevExpress.XtraEditors.TextEdit inputPort;
124 | private DevExpress.XtraEditors.SimpleButton btnConnect;
125 | private System.Windows.Forms.PictureBox pictureBox1;
126 | private DevExpress.Utils.Behaviors.BehaviorManager behaviorManager1;
127 | private DevExpress.XtraEditors.HyperlinkLabelControl hyperlinkLabelControl1;
128 | }
129 | }
130 |
131 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Editor.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace PS5_Profile_Modder {
2 | partial class Editor {
3 | ///
4 | /// Required designer variable.
5 | ///
6 | private System.ComponentModel.IContainer components = null;
7 |
8 | ///
9 | /// Clean up any resources being used.
10 | ///
11 | /// true if managed resources should be disposed; otherwise, false.
12 | protected override void Dispose(bool disposing) {
13 | if (disposing && (components != null)) {
14 | components.Dispose();
15 | }
16 | base.Dispose(disposing);
17 | }
18 |
19 | #region Windows Form Designer generated code
20 |
21 | ///
22 | /// Required method for Designer support - do not modify
23 | /// the contents of this method with the code editor.
24 | ///
25 | private void InitializeComponent() {
26 | this.components = new System.ComponentModel.Container();
27 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Editor));
28 | this.btnSave = new DevExpress.XtraEditors.SimpleButton();
29 | this.btnEdit = new DevExpress.XtraEditors.SimpleButton();
30 | this.panelAvatar = new System.Windows.Forms.Panel();
31 | this.behaviorManager1 = new DevExpress.Utils.Behaviors.BehaviorManager(this.components);
32 | this.btnTrash = new DevExpress.XtraEditors.SimpleButton();
33 | this.dropUsers = new DevExpress.XtraEditors.ComboBoxEdit();
34 | this.btnGrabber = new DevExpress.XtraEditors.SimpleButton();
35 | ((System.ComponentModel.ISupportInitialize)(this.behaviorManager1)).BeginInit();
36 | ((System.ComponentModel.ISupportInitialize)(this.dropUsers.Properties)).BeginInit();
37 | this.SuspendLayout();
38 | //
39 | // btnSave
40 | //
41 | this.btnSave.Enabled = false;
42 | this.btnSave.Location = new System.Drawing.Point(185, 217);
43 | this.btnSave.Name = "btnSave";
44 | this.btnSave.Size = new System.Drawing.Size(95, 28);
45 | this.btnSave.TabIndex = 8;
46 | this.btnSave.Text = "Save User";
47 | this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
48 | //
49 | // btnEdit
50 | //
51 | this.btnEdit.Location = new System.Drawing.Point(22, 217);
52 | this.btnEdit.Name = "btnEdit";
53 | this.btnEdit.Size = new System.Drawing.Size(157, 28);
54 | this.btnEdit.TabIndex = 9;
55 | this.btnEdit.Text = "Edit";
56 | this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
57 | //
58 | // panelAvatar
59 | //
60 | this.panelAvatar.Location = new System.Drawing.Point(22, 12);
61 | this.panelAvatar.Name = "panelAvatar";
62 | this.panelAvatar.Size = new System.Drawing.Size(100, 100);
63 | this.panelAvatar.TabIndex = 10;
64 | this.panelAvatar.Paint += new System.Windows.Forms.PaintEventHandler(this.panelAvatar_Paint);
65 | //
66 | // btnTrash
67 | //
68 | this.btnTrash.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("btnTrash.ImageOptions.Image")));
69 | this.btnTrash.Location = new System.Drawing.Point(22, 118);
70 | this.btnTrash.Name = "btnTrash";
71 | this.btnTrash.Size = new System.Drawing.Size(26, 28);
72 | this.btnTrash.TabIndex = 11;
73 | this.btnTrash.ToolTip = "Wipe this user\'s avatar cache";
74 | this.btnTrash.Click += new System.EventHandler(this.btnTrash_Click);
75 | //
76 | // dropUsers
77 | //
78 | this.dropUsers.Location = new System.Drawing.Point(138, 12);
79 | this.dropUsers.Name = "dropUsers";
80 | this.dropUsers.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
81 | new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
82 | this.dropUsers.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
83 | this.dropUsers.Size = new System.Drawing.Size(142, 28);
84 | this.dropUsers.TabIndex = 1;
85 | this.dropUsers.SelectedIndexChanged += new System.EventHandler(this.dropUsers_SelectedIndexChanged);
86 | //
87 | // btnGrabber
88 | //
89 | this.btnGrabber.Appearance.ForeColor = System.Drawing.Color.OliveDrab;
90 | this.btnGrabber.Appearance.Options.UseForeColor = true;
91 | this.btnGrabber.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
92 | this.btnGrabber.ImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("simpleButton1.ImageOptions.Image")));
93 | this.btnGrabber.Location = new System.Drawing.Point(96, 118);
94 | this.btnGrabber.Name = "btnGrabber";
95 | this.btnGrabber.Size = new System.Drawing.Size(26, 28);
96 | this.btnGrabber.TabIndex = 12;
97 | this.btnGrabber.ToolTip = "Download this avatar\'s files to your PC";
98 | this.btnGrabber.Click += new System.EventHandler(this.btnGrabber_Click);
99 | //
100 | // Editor
101 | //
102 | this.Appearance.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.Information;
103 | this.Appearance.Options.UseForeColor = true;
104 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
105 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
106 | this.ClientSize = new System.Drawing.Size(298, 266);
107 | this.Controls.Add(this.btnGrabber);
108 | this.Controls.Add(this.btnTrash);
109 | this.Controls.Add(this.panelAvatar);
110 | this.Controls.Add(this.btnEdit);
111 | this.Controls.Add(this.btnSave);
112 | this.Controls.Add(this.dropUsers);
113 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
114 | this.IconOptions.Image = ((System.Drawing.Image)(resources.GetObject("Editor.IconOptions.Image")));
115 | this.MaximizeBox = false;
116 | this.Name = "Editor";
117 | this.ShowInTaskbar = false;
118 | this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
119 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
120 | this.Text = "Editor";
121 | ((System.ComponentModel.ISupportInitialize)(this.behaviorManager1)).EndInit();
122 | ((System.ComponentModel.ISupportInitialize)(this.dropUsers.Properties)).EndInit();
123 | this.ResumeLayout(false);
124 |
125 | }
126 |
127 | #endregion
128 |
129 | private DevExpress.XtraEditors.ComboBoxEdit dropUsers;
130 | private DevExpress.XtraEditors.SimpleButton btnSave;
131 | private DevExpress.XtraEditors.SimpleButton btnEdit;
132 | private System.Windows.Forms.Panel panelAvatar;
133 | private DevExpress.Utils.Behaviors.BehaviorManager behaviorManager1;
134 | private DevExpress.XtraEditors.SimpleButton btnTrash;
135 | private DevExpress.XtraEditors.SimpleButton btnGrabber;
136 | }
137 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.suo
8 | *.user
9 | *.userosscache
10 | *.sln.docstates
11 |
12 | # User-specific files (MonoDevelop/Xamarin Studio)
13 | *.userprefs
14 |
15 | # Tools pulled down during build
16 | .tools/
17 | .dotnet/
18 | .packages/
19 |
20 | # Build results
21 | [Dd]ebug/
22 | [Dd]ebugPublic/
23 | [Rr]elease/
24 | [Rr]eleases/
25 | x64/
26 | x86/
27 | bld/
28 | [Bb]in/
29 | [Oo]bj/
30 | [Ll]og/
31 |
32 | # Visual Studio 2015/2017 cache/options directory
33 | .vs/
34 | # Uncomment if you have tasks that create the project's static files in wwwroot
35 | #wwwroot/
36 |
37 | # Visual Studio 2017 auto generated files
38 | Generated\ Files/
39 |
40 | # MSTest test Results
41 | [Tt]est[Rr]esult*/
42 | [Bb]uild[Ll]og.*
43 |
44 | # NUNIT
45 | *.VisualState.xml
46 | TestResult.xml
47 |
48 | # Build Results of an ATL Project
49 | [Dd]ebugPS/
50 | [Rr]eleasePS/
51 | dlldata.c
52 |
53 | # Benchmark Results
54 | BenchmarkDotNet.Artifacts/
55 |
56 | # .NET Core
57 | project.lock.json
58 | project.fragment.lock.json
59 | artifacts/
60 | .dotnet/
61 |
62 | # StyleCop
63 | StyleCopReport.xml
64 |
65 | # Files built by Visual Studio
66 | *_i.c
67 | *_p.c
68 | *_i.h
69 | *.ilk
70 | *.meta
71 | *.obj
72 | *.iobj
73 | *.pch
74 | *.pdb
75 | *.ipdb
76 | *.pgc
77 | *.pgd
78 | *.rsp
79 | *.sbr
80 | *.tlb
81 | *.tli
82 | *.tlh
83 | *.tmp
84 | *.tmp_proj
85 | *.log
86 | *.vspscc
87 | *.vssscc
88 | .builds
89 | *.pidb
90 | *.svclog
91 | *.scc
92 |
93 | # Chutzpah Test files
94 | _Chutzpah*
95 |
96 | # Visual C++ cache files
97 | ipch/
98 | *.aps
99 | *.ncb
100 | *.opendb
101 | *.opensdf
102 | *.sdf
103 | *.cachefile
104 | *.VC.db
105 | *.VC.VC.opendb
106 |
107 | # Visual Studio profiler
108 | *.psess
109 | *.vsp
110 | *.vspx
111 | *.sap
112 |
113 | # Visual Studio Trace Files
114 | *.e2e
115 |
116 | # TFS 2012 Local Workspace
117 | $tf/
118 |
119 | # Guidance Automation Toolkit
120 | *.gpState
121 |
122 | # ReSharper is a .NET coding add-in
123 | _ReSharper*/
124 | *.[Rr]e[Ss]harper
125 | *.DotSettings.user
126 |
127 | # JustCode is a .NET coding add-in
128 | .JustCode
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # Visual Studio Code
145 | .vscode/*
146 | !.vscode/settings.json
147 | !.vscode/tasks.json
148 | !.vscode/launch.json
149 | !.vscode/extensions.json
150 |
151 | # NCrunch
152 | _NCrunch_*
153 | .*crunch*.local.xml
154 | nCrunchTemp_*
155 |
156 | # MightyMoose
157 | *.mm.*
158 | AutoTest.Net/
159 |
160 | # Web workbench (sass)
161 | .sass-cache/
162 |
163 | # Installshield output folder
164 | [Ee]xpress/
165 |
166 | # DocProject is a documentation generator add-in
167 | DocProject/buildhelp/
168 | DocProject/Help/*.HxT
169 | DocProject/Help/*.HxC
170 | DocProject/Help/*.hhc
171 | DocProject/Help/*.hhk
172 | DocProject/Help/*.hhp
173 | DocProject/Help/Html2
174 | DocProject/Help/html
175 |
176 | # Click-Once directory
177 | publish/
178 |
179 | # Publish Web Output
180 | *.[Pp]ublish.xml
181 | *.azurePubxml
182 | # Note: Comment the next line if you want to checkin your web deploy settings,
183 | # but database connection strings (with potential passwords) will be unencrypted
184 | *.pubxml
185 | *.publishproj
186 |
187 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
188 | # checkin your Azure Web App publish settings, but sensitive information contained
189 | # in these scripts will be unencrypted
190 | PublishScripts/
191 |
192 | # NuGet Packages
193 | *.nupkg
194 | # The packages folder can be ignored because of Package Restore
195 | **/[Pp]ackages/*
196 | # except build/, which is used as an MSBuild target.
197 | !**/[Pp]ackages/build/
198 | # Uncomment if necessary however generally it will be regenerated when needed
199 | #!**/[Pp]ackages/repositories.config
200 | # NuGet v3's project.json files produces more ignorable files
201 | *.nuget.props
202 | *.nuget.targets
203 |
204 | # Microsoft Azure Build Output
205 | csx/
206 | *.build.csdef
207 |
208 | # Microsoft Azure Emulator
209 | ecf/
210 | rcf/
211 |
212 | # Windows Store app package directories and files
213 | AppPackages/
214 | BundleArtifacts/
215 | Package.StoreAssociation.xml
216 | _pkginfo.txt
217 | *.appx
218 |
219 | # Visual Studio cache files
220 | # files ending in .cache can be ignored
221 | *.[Cc]ache
222 | # but keep track of directories ending in .cache
223 | !*.[Cc]ache/
224 |
225 | # Others
226 | ClientBin/
227 | ~$*
228 | *~
229 | *.dbmdl
230 | *.dbproj.schemaview
231 | *.jfm
232 | *.pfx
233 | *.publishsettings
234 | orleans.codegen.cs
235 |
236 | # Including strong name files can present a security risk
237 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
238 | #*.snk
239 |
240 | # Since there are multiple workflows, uncomment next line to ignore bower_components
241 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
242 | #bower_components/
243 |
244 | # RIA/Silverlight projects
245 | Generated_Code/
246 |
247 | # Backup & report files from converting an old project file
248 | # to a newer Visual Studio version. Backup files are not needed,
249 | # because we have git ;-)
250 | _UpgradeReport_Files/
251 | Backup*/
252 | UpgradeLog*.XML
253 | UpgradeLog*.htm
254 | ServiceFabricBackup/
255 | *.rptproj.bak
256 |
257 | # SQL Server files
258 | *.mdf
259 | *.ldf
260 | *.ndf
261 |
262 | # Business Intelligence projects
263 | *.rdl.data
264 | *.bim.layout
265 | *.bim_*.settings
266 | *.rptproj.rsuser
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # JetBrains Rider
303 | .idea/
304 | *.sln.iml
305 |
306 | # CodeRush
307 | .cr/
308 |
309 | # Python Tools for Visual Studio (PTVS)
310 | __pycache__/
311 | *.pyc
312 |
313 | # Cake - Uncomment if you are using it
314 | # tools/**
315 | # !tools/packages.config
316 |
317 | # Tabs Studio
318 | *.tss
319 |
320 | # Telerik's JustMock configuration file
321 | *.jmconfig
322 |
323 | # BizTalk build output
324 | *.btp.cs
325 | *.btm.cs
326 | *.odx.cs
327 | *.xsd.cs
328 |
329 | # OpenCover UI analysis results
330 | OpenCover/
331 |
332 | # Azure Stream Analytics local run output
333 | ASALocalRun/
334 |
335 | # MSBuild Binary and Structured Log
336 | *.binlog
337 |
338 | # NVidia Nsight GPU debugger configuration file
339 | *.nvuser
340 |
341 | # MFractors (Xamarin productivity tool) working folder
342 | .mfractor/
343 |
344 | ### OSX ###
345 |
346 | # General
347 | .DS_Store
348 | .AppleDouble
349 | .LSOverride
350 |
351 | # Icon must end with two \r
352 | Icon
353 |
354 |
355 | # Thumbnails
356 | ._*
357 |
358 | # Files that might appear in the root of a volume
359 | .DocumentRevisions-V100
360 | .fseventsd
361 | .Spotlight-V100
362 | .TemporaryItems
363 | .Trashes
364 | .VolumeIcon.icns
365 | .com.apple.timemachine.donotpresent
366 |
367 | # Directories potentially created on remote AFP share
368 | .AppleDB
369 | .AppleDesktop
370 | Network Trash Folder
371 | Temporary Items
372 | .apdisk
373 |
374 | # Ignore "InteropTests/NativeTests/out"
375 | InteropTests/NativeTests/out
376 | /src/System.Windows.Forms/src/comctl32.dll
377 | *.received.*
378 |
379 | # Normally do not want to pick up changes in the scratch project, this will ignore files that aren't already tracked.
380 | # 'git update-index --assume-unchanged ' will allow ignoring changes for tracked files.
381 | **/ScratchProject/
382 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/FodyWeavers.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
13 |
14 |
15 |
16 |
17 | A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
18 |
19 |
20 |
21 |
22 | A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
23 |
24 |
25 |
26 |
27 | A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
28 |
29 |
30 |
31 |
32 | A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
33 |
34 |
35 |
36 |
37 | A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
38 |
39 |
40 |
41 |
42 | The order of preloaded assemblies, delimited with line breaks.
43 |
44 |
45 |
46 |
47 |
48 | This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
49 |
50 |
51 |
52 |
53 | Controls if .pdbs for reference assemblies are also embedded.
54 |
55 |
56 |
57 |
58 | Controls if runtime assemblies are also embedded.
59 |
60 |
61 |
62 |
63 | Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.
64 |
65 |
66 |
67 |
68 | Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
69 |
70 |
71 |
72 |
73 | As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
74 |
75 |
76 |
77 |
78 | Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
79 |
80 |
81 |
82 |
83 | Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
84 |
85 |
86 |
87 |
88 | A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
89 |
90 |
91 |
92 |
93 | A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
94 |
95 |
96 |
97 |
98 | A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
99 |
100 |
101 |
102 |
103 | A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.
104 |
105 |
106 |
107 |
108 | A list of unmanaged 32 bit assembly names to include, delimited with |.
109 |
110 |
111 |
112 |
113 | A list of unmanaged 64 bit assembly names to include, delimited with |.
114 |
115 |
116 |
117 |
118 | The order of preloaded assemblies, delimited with |.
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 | 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
127 |
128 |
129 |
130 |
131 | A comma-separated list of error codes that can be safely ignored in assembly verification.
132 |
133 |
134 |
135 |
136 | 'false' to turn off automatic generation of the XML Schema file.
137 |
138 |
139 |
140 |
141 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Editor.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.DirectX.NativeInterop.Direct2D;
2 | using DevExpress.XtraEditors;
3 | using DevExpress.XtraEditors.Design;
4 | using FluentFTP;
5 | using System;
6 | using System.Collections.Generic;
7 | using System.ComponentModel;
8 | using System.Data;
9 | using System.Drawing;
10 | using System.Linq;
11 | using System.Security.Cryptography.X509Certificates;
12 | using System.Text;
13 | using System.Threading.Tasks;
14 | using System.Windows.Forms;
15 | using ImageMagick;
16 | using System.IO;
17 | using DevExpress.LookAndFeel;
18 | using DevExpress.Skins;
19 | using System.Drawing.Imaging;
20 |
21 | namespace PS5_Profile_Modder {
22 | public partial class Editor : DevExpress.XtraEditors.XtraForm {
23 |
24 | Image SelectedUserImage = null;
25 | FtpClient client;
26 |
27 | Image OpenedImage;
28 | Stream fs;
29 | MagickImage mi;
30 |
31 | Skin currentSkin;
32 | SkinElement element;
33 |
34 | public Editor(FtpClient ftpclient) {
35 | InitializeComponent();
36 | client = ftpclient;
37 | currentSkin = CommonSkins.GetSkin(UserLookAndFeel.Default);
38 | element = currentSkin[CommonSkins.SkinButton];
39 |
40 | if (!Connect.IsDarkMode()) { IconOptions.Image = PS5_Profile_Modder.Properties.Resources.other; }
41 |
42 |
43 | btnSave.Appearance.BackColor = currentSkin.SvgPalettes["DefaultSkinPalette"].
44 | GetColorByStyleName("Edit Background 0", "White");
45 |
46 |
47 | foreach (KeyValuePair entry in Users.UsersDict) {
48 | dropUsers.Properties.Items.Add(entry.Key);
49 | }
50 | dropUsers.SelectedIndex = 0;
51 |
52 |
53 |
54 |
55 |
56 |
57 | }
58 | private void panelAvatar_Paint(object sender, PaintEventArgs e) {
59 | // Show Person Picture using PS5User.Avatar (or default if null)
60 | e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
61 | Image image = new Bitmap(PS5_Profile_Modder.Properties.Resources.default_avatar, 98, 98);
62 | if (!Connect.IsDarkMode()) { image = new Bitmap(PS5_Profile_Modder.Properties.Resources.other, 98, 98); }
63 | try { image = new Bitmap(Users.UsersDict[dropUsers.SelectedItem.ToString()].Avatar.ToBitmap(), 98, 98); } catch { Console.WriteLine("No avatar found. Using default."); }
64 | TextureBrush tbrush = new TextureBrush(image, new RectangleF(0, 0, 98, 98));
65 | e.Graphics.FillEllipse(tbrush, new RectangleF(0, 0, 98, 98));
66 |
67 | if (Users.UsersDict[dropUsers.SelectedItem.ToString()].Changed == true) {
68 | btnSave.Enabled = true;
69 | btnSave.Appearance.BackColor = currentSkin.SvgPalettes["DefaultSkinPalette"].
70 | GetColorByStyleName("Primary Background 0", "White");
71 | }
72 |
73 | }
74 |
75 | private void btnEdit_Click(object sender, EventArgs e) {
76 |
77 | Form CropToolWindow = new CropTool(SelectedUserImage, dropUsers.SelectedItem.ToString());
78 | CropToolWindow.ShowDialog();
79 |
80 | panelAvatar.Refresh();
81 |
82 | }
83 | private void btnSave_Click(object sender, EventArgs e) {
84 | try {
85 | MagickImage avatar = Users.UsersDict[dropUsers.SelectedItem.ToString()].Avatar;
86 | avatar.Format = MagickFormat.Png;
87 |
88 | IMagickGeometry g = new MagickGeometry(440, 440);
89 | g.FillArea = true;
90 |
91 | string tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
92 | Directory.CreateDirectory(tempDirectory);
93 |
94 | avatar.Resize(g);
95 | avatar.Crop(440, 440, Gravity.Center);
96 | avatar.Write(tempDirectory+"/avatar.png");
97 | avatar.Format = MagickFormat.Dds;
98 | avatar.Write(tempDirectory+"/avatar440.dds");
99 | avatar.Resize(260, 260);
100 | avatar.Write(tempDirectory+"/avatar260.dds");
101 | avatar.Resize(128, 128);
102 | avatar.Write(tempDirectory+"/avatar128.dds");
103 | avatar.Resize(64, 64);
104 | avatar.Write(tempDirectory+"/avatar64.dds");
105 |
106 | try { client.DeleteFile(string.Format("/system_data/priv/cache/profile/{0}/avatar.png", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper())); } catch { }
107 | try { client.DeleteFile(string.Format("/system_data/priv/cache/profile/{0}/avatar440.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper())); } catch { }
108 | try { client.DeleteFile(string.Format("/system_data/priv/cache/profile/{0}/avatar260.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper())); } catch { }
109 | try { client.DeleteFile(string.Format("/system_data/priv/cache/profile/{0}/avatar128.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper())); } catch { }
110 | try { client.DeleteFile(string.Format("/system_data/priv/cache/profile/{0}/avatar64.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper())); } catch { }
111 |
112 |
113 | client.UploadFile(tempDirectory+"/avatar.png", string.Format("/system_data/priv/cache/profile/{0}/avatar.png", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()), FtpRemoteExists.NoCheck);
114 | client.UploadFile(tempDirectory+"/avatar440.dds", string.Format("/system_data/priv/cache/profile/{0}/avatar440.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()), FtpRemoteExists.NoCheck);
115 | client.UploadFile(tempDirectory+"/avatar260.dds", string.Format("/system_data/priv/cache/profile/{0}/avatar260.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()), FtpRemoteExists.NoCheck);
116 | client.UploadFile(tempDirectory+"/avatar128.dds", string.Format("/system_data/priv/cache/profile/{0}/avatar128.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()), FtpRemoteExists.NoCheck);
117 | client.UploadFile(tempDirectory+"/avatar64.dds", string.Format("/system_data/priv/cache/profile/{0}/avatar64.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()), FtpRemoteExists.NoCheck);
118 |
119 |
120 | File.Delete(tempDirectory+"/avatar.png");
121 | File.Delete(tempDirectory+"/avatar440.dds");
122 | File.Delete(tempDirectory+"/avatar260.dds");
123 | File.Delete(tempDirectory+"/avatar128.dds");
124 | File.Delete(tempDirectory+"/avatar64.dds");
125 |
126 |
127 |
128 | } catch {
129 | XtraMessageBox.Show("Unknown issue while converting and uploading images.",
130 | "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
131 | return;
132 | }
133 |
134 | Users.UsersDict[dropUsers.SelectedItem.ToString()].Changed = false;
135 | btnSave.Enabled = false;
136 | btnSave.Appearance.BackColor = currentSkin.SvgPalettes["DefaultSkinPalette"].
137 | GetColorByStyleName("Edit Background 0", "White");
138 |
139 | }
140 |
141 |
142 |
143 | private void dropUsers_SelectedIndexChanged(object sender, EventArgs e) {
144 | this.panelAvatar.Refresh();
145 | if (Users.UsersDict[dropUsers.SelectedItem.ToString()].Avatar == null) {
146 | btnGrabber.Enabled = false;
147 | } else {
148 | btnGrabber.Enabled = true;
149 | }
150 |
151 | if (Users.UsersDict[dropUsers.SelectedItem.ToString()].Changed == true) {
152 | btnSave.Enabled = true;
153 | btnSave.Appearance.BackColor = currentSkin.SvgPalettes["DefaultSkinPalette"].
154 | GetColorByStyleName("Primary Background 0", "White");
155 | } else {
156 | btnSave.Enabled = false;
157 | btnSave.Appearance.BackColor = currentSkin.SvgPalettes["DefaultSkinPalette"].
158 | GetColorByStyleName("Edit Background 0", "White");
159 | }
160 |
161 |
162 |
163 | }
164 |
165 | private void btnTrash_Click(object sender, EventArgs e) {
166 | if (XtraMessageBox.Show("This will delete all avatar cache files associated with this user. Are you sure?",
167 | "Confirmation", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) {
168 | client.SetWorkingDirectory(string.Format("/system_data/priv/cache/profile/{0}", ("0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper())));
169 | try { client.DeleteFile("avatar.png"); } catch { }
170 | try { client.DeleteFile("avatar440.dds"); } catch { }
171 | try { client.DeleteFile("avatar260.dds"); } catch { }
172 | try { client.DeleteFile("avatar128.dds"); } catch { }
173 | try { client.DeleteFile("avatar64.dds"); } catch { }
174 | Users.UsersDict[dropUsers.SelectedItem.ToString()].Avatar = null;
175 | btnSave.Enabled = false;
176 | btnSave.Appearance.BackColor = currentSkin.SvgPalettes["DefaultSkinPalette"].
177 | GetColorByStyleName("Edit Background 0", "White");
178 |
179 | //
180 | this.panelAvatar.Refresh();
181 | }
182 | }
183 |
184 | private void btnGrabber_Click(object sender, EventArgs e) {
185 | var dir = dropUsers.SelectedItem.ToString().Replace("\0", string.Empty);
186 | try {
187 | foreach (char c in System.IO.Path.GetInvalidFileNameChars()) {
188 | dir = dir.Replace(c, '_');
189 | }
190 | Directory.CreateDirectory(dir);
191 | client.DownloadFile(dir + "/avatar.png", string.Format("/system_data/priv/cache/profile/{0}/avatar.png", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()));
192 | client.DownloadFile(dir + "/avatar440.dds", string.Format("/system_data/priv/cache/profile/{0}/avatar440.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()));
193 | client.DownloadFile(dir + "/avatar260.dds", string.Format("/system_data/priv/cache/profile/{0}/avatar260.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()));
194 | client.DownloadFile(dir + "/avatar128.dds", string.Format("/system_data/priv/cache/profile/{0}/avatar128.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()));
195 | client.DownloadFile(dir + "/avatar64.dds", string.Format("/system_data/priv/cache/profile/{0}/avatar64.dds", "0x" + Users.UsersDict[dropUsers.SelectedItem.ToString()].ID.ToUpper()));
196 | }
197 | catch {
198 | XtraMessageBox.Show("Unknown issue while downloading images.",
199 | "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
200 | return;
201 |
202 | }
203 | XtraMessageBox.Show(string.Format("The user's images have been downloaded and saved inside the \"{0}\" folder.", dir),
204 | "Avatar Downloaded", MessageBoxButtons.OK, MessageBoxIcon.Information);
205 | return;
206 |
207 | }
208 | }
209 | }
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/ConnectForm.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 |
125 |
126 | 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
305 |
306 |
307 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/PS5-Profile-Modder.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Debug
4 | x86
5 | 8.0.30703
6 | 2.0
7 | {84C8B2B0-ED33-4454-A716-66A4E332C7ED}
8 | WinExe
9 | Properties
10 | PS5_Profile_Modder
11 | HotswapPS5
12 | v4.8
13 | 512
14 |
15 |
16 | false
17 | true
18 | C:\dev\
19 | true
20 | Disk
21 | false
22 | Foreground
23 | 7
24 | Days
25 | false
26 | false
27 | true
28 | true
29 | 2
30 | 1.0.0.%2a
31 | false
32 | true
33 | true
34 |
35 |
36 | AnyCPU
37 | true
38 | full
39 | false
40 | bin\Debug\
41 | DEBUG;TRACE
42 | prompt
43 | 4
44 |
45 |
46 | AnyCPU
47 | none
48 | true
49 | bin\Release\
50 | TRACE
51 | prompt
52 | 4
53 |
54 |
55 | 3e15884a-7090-441d-99ff-f787a4cbc2da%282%29.ico
56 |
57 |
58 | 4B4F6E33124228681487225275423969EA04E8DE
59 |
60 |
61 | PS5-Profile-Modder_TemporaryKey.pfx
62 |
63 |
64 | false
65 |
66 |
67 | true
68 | bin\x86\Debug\
69 | DEBUG;TRACE
70 | full
71 | x86
72 | 7.3
73 | prompt
74 | true
75 |
76 |
77 | bin\x86\Release\
78 | TRACE
79 | true
80 | pdbonly
81 | x86
82 | 7.3
83 | prompt
84 | true
85 |
86 |
87 | LocalIntranet
88 |
89 |
90 | Properties\app.manifest
91 |
92 |
93 |
94 | False
95 | True
96 |
97 |
98 | False
99 | True
100 |
101 |
102 | False
103 | True
104 |
105 |
106 | False
107 | True
108 |
109 |
110 | False
111 | True
112 |
113 |
114 | False
115 | True
116 |
117 |
118 | False
119 | True
120 |
121 |
122 | ..\packages\FluentFTP.47.1.0\lib\net472\FluentFTP.dll
123 | False
124 | True
125 |
126 |
127 | ..\packages\Magick.NET-Q16-AnyCPU.13.2.0\lib\netstandard20\Magick.NET-Q16-AnyCPU.dll
128 | False
129 | True
130 |
131 |
132 | ..\packages\Magick.NET.Core.13.2.0\lib\netstandard20\Magick.NET.Core.dll
133 | False
134 | True
135 |
136 |
137 | ..\packages\Magick.NET.SystemDrawing.7.0.6\lib\net462\Magick.NET.SystemDrawing.dll
138 | False
139 | True
140 |
141 |
142 | ..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll
143 | True
144 | True
145 | False
146 |
147 |
148 | False
149 |
150 |
151 | ..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll
152 | True
153 | True
154 | False
155 |
156 |
157 | False
158 |
159 |
160 | False
161 |
162 |
163 | ..\packages\System.Console.4.3.0\lib\net46\System.Console.dll
164 | True
165 | True
166 | False
167 |
168 |
169 | False
170 |
171 |
172 | ..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll
173 | False
174 | False
175 |
176 |
177 | ..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll
178 | True
179 | True
180 | False
181 |
182 |
183 | ..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll
184 | True
185 | True
186 | False
187 |
188 |
189 | ..\packages\System.IO.4.3.0\lib\net462\System.IO.dll
190 | True
191 | True
192 | False
193 |
194 |
195 | ..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll
196 | True
197 | True
198 | False
199 |
200 |
201 | False
202 |
203 |
204 | ..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll
205 | True
206 | True
207 | False
208 |
209 |
210 | ..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll
211 | True
212 | True
213 | False
214 |
215 |
216 | ..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll
217 | True
218 | True
219 | False
220 |
221 |
222 | ..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll
223 | True
224 | True
225 | False
226 |
227 |
228 | ..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll
229 | True
230 | True
231 | False
232 |
233 |
234 | ..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll
235 | True
236 | True
237 | False
238 |
239 |
240 | ..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll
241 | True
242 | True
243 | False
244 |
245 |
246 | False
247 |
248 |
249 | ..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll
250 | True
251 | True
252 | False
253 |
254 |
255 | ..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll
256 | True
257 | True
258 | False
259 |
260 |
261 | ..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll
262 | True
263 | True
264 | False
265 |
266 |
267 | ..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll
268 | True
269 | True
270 | False
271 |
272 |
273 | ..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll
274 | True
275 | True
276 | False
277 |
278 |
279 | ..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll
280 | True
281 | True
282 | False
283 |
284 |
285 | ..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll
286 | True
287 | True
288 | False
289 |
290 |
291 | ..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll
292 | True
293 | True
294 | False
295 |
296 |
297 | ..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll
298 | True
299 | True
300 | False
301 |
302 |
303 | ..\packages\System.Text.RegularExpressions.4.3.0\lib\net463\System.Text.RegularExpressions.dll
304 | True
305 | True
306 | False
307 |
308 |
309 | False
310 |
311 |
312 | False
313 |
314 |
315 | False
316 |
317 |
318 | False
319 |
320 |
321 | False
322 |
323 |
324 | False
325 |
326 |
327 | False
328 |
329 |
330 | False
331 |
332 |
333 | ..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll
334 | True
335 | True
336 | False
337 |
338 |
339 |
340 |
341 | Form
342 |
343 |
344 | ConnectForm.cs
345 |
346 |
347 | Form
348 |
349 |
350 | Editor.cs
351 |
352 |
353 |
354 |
355 |
356 | Form
357 |
358 |
359 | CropTool.cs
360 |
361 |
362 |
363 | ConnectForm.cs
364 |
365 |
366 | Editor.cs
367 |
368 |
369 | ResXFileCodeGenerator
370 | Resources.Designer.cs
371 | Designer
372 |
373 |
374 | True
375 | Resources.resx
376 | True
377 |
378 |
379 |
380 |
381 |
382 | SettingsSingleFileGenerator
383 | Settings.Designer.cs
384 |
385 |
386 | True
387 | Settings.settings
388 | True
389 |
390 |
391 |
392 |
393 | CropTool.cs
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 | False
416 | Microsoft .NET Framework 4.8 %28x86 and x64%29
417 | true
418 |
419 |
420 | False
421 | .NET Framework 3.5 SP1
422 | false
423 |
424 |
425 |
426 |
427 |
428 |
429 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
430 |
431 |
432 |
433 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
--------------------------------------------------------------------------------
/source/PS5-Profile-Modder/Editor.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 17, 17
122 |
123 |
124 |
125 |
126 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
127 | dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAMdEVYdFRpdGxlAFRyYXNoO2SaNW0AAAJbSURBVDhP
128 | dZJvT5JRGMbRXH9Wqy/BN+mFiT6WCAKSQmZLZRogGNLMlUsxfRRXWLkgncSmJpaGERR/EpQMSlNb9aJe
129 | 9K4vcXXuE8+zEXm2a+c+97mu3+6z51EA+FcV+lZnxur0wDUwyTQBW98odC2OzH+8irIGU4XWaIep3e1l
130 | 9Smmk62X+8epV7wvkUKpVHLRoUHXk1Hrr8HWL8LunoDWaIOm2cbPVtc42D2JTyLlpKKivqn7geumF0/m
131 | nyMazyK3/RmFnS98jye2sLQSw0P/InrdIpjXRxkJQMURQWOBx7eEKf8qguEkXqc+Ip3b4zudqU/3w/cW
132 | QV7KUFYCHK1t6ESdugtCo4WP2sTerGvp5TudqU/35CNRhqlSBjCdNrb1YWU9jQU2rnh/HpH4JpbX3mJk
133 | MoDllykEl9ZBHuY9U8zIABrneLPZwUYuYC2WhegL8SdEEzncmZzFq2Qe4UgKBlMvAU4wVVFWAnCI3uRE
134 | cusA8XQB4nQIuU/fkczuYNg7x/uRNznoWh3y+0kE4KJP03TRjo0PX5HI7mKMTZDf+4F37/cxJM7yfjSV
135 | 559WypBKAI2GHmb8hsTmLjxTQQ7YYIDBUT/vE0Ct7y4FUFDSBW0XNyYZYGhiDoW9n9jY3seN4RkZcF7T
136 | yX6/v4syJYA6dYcMuDUWKAIOcP32tAyobbh6OKCmvv23LxBGIBTBgOcxFl8k8PRZDI5BH2bmV+F9tIBz
137 | QtuvYr4coBLa7qqES9AaLLjS4WZywdzuRHOLFTWCGWerjahWmUeK+XIAW5VMx4qqOqQmD18AFH8AEJMi
138 | C62GfuUAAAAASUVORK5CYII=
139 |
140 |
141 |
142 |
143 | iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABV0RVh0VGl0
144 | bGUARG93bmxvYWQ7QXJyb3c77I8a0AAAAk9JREFUOE91km1IU1EYxzfvsib2gkY5KaSLK4WhMLg6cdvd
145 | dLV8ySSKCKmwZqEpKoYohS9gb7rUvmnOaaPRi01EIupD2SgJ55pF1Jcgs6LoQ/ghK4Lk33lsjCXHB36c
146 | w3n+58c59x4FgCWWlZIRwyFSkX3Rgu67VhpinOOWCTZHNGztAfXCGb7A6dtFg3Dpjg2//rz7jxa3TCHV
147 | WZeJMlwBHVtgrD7ntWL+9xTmFtx4/92Nzz98aOrLpZCaoaIsTyC0eWS0DjOGzGzTfbz55sRrxtv5AdT3
148 | GlDfY0BtdzaFVVzBsfaM2zeeVmDmaxdCX85j8tNpRgMezp7Ao9lqXL13GHllKaMrCZTG0i2J5W0ZH7zB
149 | vbj+0grPjBnXQkYMh0zo88vYeXTbx/ScjZspyxNQCQUOMb+yU7/oCeVhMGiAazobg9NG7K/TLurtSXbK
150 | UHAlAX3IVYUO8WKTS4/+gIT+KQlV3emQijRdrBcbzvAFxZWpNCgTk9Xxux1ioGMsEy0jOmSVaJ7HJ8Su
151 | pV5WSTJl+AL7cVFxZTKTpoLelpSx55S4YC3b+lMrJdCi0PNEp5CKNdTnC1hFP2FBKtTU6ORNtWxO/57u
152 | HnnSPIHKOSb7L49b0Dkq48KICR03jWj35qLVk4MzbgOaB7JQ26v3U5YnUDe7DJiYK4fvlR23XtjgZX/C
153 | E7RgKGCG65kR/ZMG7KvbTuE4nmDNoca0xwcb03CgYcdSsLRGi5JqLYqqUlFwUoS9QkT+kRQ6AVdAd6O3
154 | vo6xPsyGZdBaHCPm3z4o/gL/F7wZt1fm3wAAAABJRU5ErkJggg==
155 |
156 |
157 |
158 |
159 | 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
406 | HmO0pleuAAAAAElFTkSuQmCC
407 |
408 |
409 |
--------------------------------------------------------------------------------