MCMi460 / Reset-Parental-Controls-NX

An easy way to change the pin for parental controls for the Nintendo Switch! (cfw required)
GNU General Public License v3.0
13 stars 4 forks source link

Reset Parental Controls time #4

Closed CompuGenius-Programs closed 1 month ago

CompuGenius-Programs commented 2 months ago

Is it possible you can add code that will reset the parental controls clock back to the full time allowed? Also, perhaps if you could add a way of adding a certain amount of time to the clock in place of doing so through the app?

CompuGenius-Programs commented 2 months ago

I looked at https://switchbrew.org/wiki/Parental_Control_services and unfortunately, it looks like the closest thing to what I'm looking for is 1951 (SetPlayTimerSettingsForDebug). Do you think perhaps there's a way of emulating the controls of the app locally?

Delation commented 2 months ago

Do you think perhaps there's a way of emulating the controls of the app locally?

While I think that it could be done, I don't know that it could be done. I'll look into it more likewise with #3.

CompuGenius-Programs commented 2 months ago

Do you think perhaps there's a way of emulating the controls of the app locally?

While I think that it could be done, I don't know that it could be done. I'll look into it more likewise with #3.

Awesome, thanks! If you would like some help, feel free to give me some resources to look into. I've never done homebrew development, but I'm a software engineer and a fast learner.

MCMi460 commented 2 months ago

Some quick relevant information dump:

https://switchbrew.org/wiki/Parental_Control_services#IParentalControlService https://reswitched.github.io/SwIPC/ifaces.html#nn::pctl::detail::ipc::IParentalControlService(1951) https://reswitched.github.io/SwIPC/types.html#nn::pctl::PlayTimerSettings https://git.gronkiewicz.dev/pgronkievitz/suyu/src/commit/6a43aff745e7b22b8d465a8f6c9e287206aff2f8/src/core/hle/service/pctl/pctl_module.cpp#L477

// This is nn::pctl::PlayTimerSettings
struct PlayTimerSettings {
  std::array<u32, 13> settings;
};
static_assert(sizeof(PlayTimerSettings) == 0x34, "PlayTimerSettings has incorrect size.");

What an elegant amount of information we have just received /s. No documentation == me document now :( Which especially sucks because I don't have a Nintendo Switch with online access, so by all means, I'm just poking around in the dark to interpret the data I receive/set. Not to mention the likely checks for a mobile app's existence that I have been avoiding.

It certainly seems like the right trail to go down, though.

CompuGenius-Programs commented 2 months ago

Some quick relevant information dump:

https://switchbrew.org/wiki/Parental_Control_services#IParentalControlService https://reswitched.github.io/SwIPC/ifaces.html#nn::pctl::detail::ipc::IParentalControlService(1951) https://reswitched.github.io/SwIPC/types.html#nn::pctl::PlayTimerSettings https://git.gronkiewicz.dev/pgronkievitz/suyu/src/commit/6a43aff745e7b22b8d465a8f6c9e287206aff2f8/src/core/hle/service/pctl/pctl_module.cpp#L477

// This is nn::pctl::PlayTimerSettings
struct PlayTimerSettings {
  std::array<u32, 13> settings;
};
static_assert(sizeof(PlayTimerSettings) == 0x34, "PlayTimerSettings has incorrect size.");

What an elegant amount of information we have just received /s. No documentation == me document now :( Which especially sucks because I don't have a Nintendo Switch with online access, so by all means, I'm just poking around in the dark to interpret the data I receive/set. Not to mention the likely checks for a mobile app's existence that I have been avoiding.

It certainly seems like the right trail to go down, though.

I have a Switch that can connect online with a mobile app linked. I'd rather not put unnecessary ban risk, though. I only use CFW on EmuMMC and all that. I'll look into these resources, lyk what I think. To make things easier, we can text on Discord, if you'd prefer.

MCMi460 commented 2 months ago

Sure! You can join my Discord server here: https://discord.gg/pwFASr2NKx The safest way of doing this is, as a previous person (in #3) described, by setting everything in SysMMC, then creating an EmuMMC for running the Homebrew. This is very tedious but is operable.

CompuGenius-Programs commented 2 months ago

Sure! You can join my Discord server here: https://discord.gg/pwFASr2NKx The safest way of doing this is, as a previous person (in #3) described, by setting everything in SysMMC, then creating an EmuMMC for running the Homebrew. This is very tedious but is operable.

Yeah, that's actually what I had originally. However, due to not being able to find a workaround, I removed the app linking on Emu (although it's still linked on Sys). For testing purposes, I wouldn't mind recreating EmuMMC to have Emu linked to an app again. The reason I mentioned Sys though was because wouldn't we need an active internet connection to capture the API logs we're trying to emulate? Or would we be able to get them through Emu (albeit failed)? If through Emu, we won't have the actual response the Switch is expecting, though.

CompuGenius-Programs commented 1 month ago

Closed with https://github.com/MCMi460/Reset-Parental-Controls-NX/issues/3#issuecomment-2093599152