Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 26 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
<a href="https://discord.io/myrincon"><img src="https://discordapp.com/api/guilds/516631805621960704/embed.png" alt="Discord Server" /></a>
# why this fork

this fork was created to also kill a0 to stop system information
because... when you unban a switch you dont want to send over banned info while using donor info to authenticate :(

until the dev who made this adds this fork via pull request then this fork will stay up

yes switch unbanning is possible and very easy to do, literally the last thing to do and the hardest is.. telemetry


## Lock-Logs (L-L)
* Stop sending telemetry to Nintendo
* Permanent modification of the save of [BCAT](https://switchbrew.org/wiki/BCAT_services)(Play Report)

0x80000000000000A1
0x80000000000000A0 (stop system information being sent over to avoid ban after unban)

0x80000000000000A2
0x80000000000000A1 (stop bannable telemetry)

0x80000000000000A2 (stop bannable telemetry)

[Source](https://switchbrew.org/wiki/Flash_Filesystem#System_Savegames)

* This stops sending telemetry to Nintendo
* This stops sending telemetry and system information to Nintendo to avoid bans after unbanning your switch ([Guide](https://github.com/erew70/SWITCH-UNBAN-GUIDE))

## Reason
* kill telemetry service to avoid get banned with cfw
Expand All @@ -21,17 +31,17 @@
* * Even so, the risk of ban exists so I recommend using emunand, if you don't want to take that risk
* This is a test, one thing is for sure, it stop the send telemetry through BCAT(PlayReport)
* It is not likely to happen but in case of instability in the system it can be uninstalled by Pressing + - inside the app or deleting from 'System:/save'
80000000000000A1 and 80000000000000A2 saves
80000000000000A0, 80000000000000A1, and 80000000000000A2 saves using NxNandManager

### Note:
Tested on:
* 9.1.0 - 13.0.0
* 9.1.0 - 17.0.0
* * For use this mod you need update to the latest version required by Nintendo
* This modification will remain installed and will not be deleted until you decide to remove it
#### It will only be removed if:
- - Uninstall it from the app
- - Remove the saves 80000000000000A1 and 80000000000000A2
- - Restoring a nand backup
- - Remove the saves 80000000000000A0, 80000000000000A1, and 80000000000000A2
- - Restoring a nand backup before installing
- - Using Haku33

### Credits
Expand All @@ -40,5 +50,12 @@ Tested on:
### Known Bugs
* None

<a href="https://discord.io/myrincon"><img src="icon.jpg" alt="Discord Server" /></a>


# WHAT IS SAFE:

## Hacking and mods online: ✅
### this is safe as long as their is no reporting in the game (and also if the game servers log everything but most likely they dont)

## Cracked games: ❔
### This is sort of safe, if you wanna use cracked games and not get banned make sure to turn wifi off before opening said cracked game to turn off aauth or block it using a proxy then close the game restart the switch and turn wifi back on when done playing to use cracked games safely and do not open said cracked game when connected to internet, even with telemetry blockers you will still get banned :( (i do not endorse piracy but this is what would have to be done to use them and not get banned)
106 changes: 65 additions & 41 deletions source/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,38 +60,6 @@ bool fileExists(const char* path)
}


bool led_on(void)
{
Result rc=0;
s32 i;
s32 total_entries;
u64 UniquePadIds[2];
HidsysNotificationLedPattern pattern;
hidsysExit();
rc = hidsysInitialize();
if (R_FAILED(rc)) {printf("hidsysInitialize(): 0x%x\n", rc);}

memset(&pattern, 0, sizeof(pattern));
// Setup Breathing effect pattern data.
pattern.baseMiniCycleDuration = 0x8; // 100ms.
pattern.totalMiniCycles = 0x2; // 3 mini cycles. Last one 12.5ms.
pattern.totalFullCycles = 0x6; // Repeat Time.
pattern.startIntensity = 0x2; // 13%.

pattern.miniCycles[0].ledIntensity = 0xF; // 100%.
pattern.miniCycles[0].transitionSteps = 0xF; // 15 steps. Transition time 1.5s.
pattern.miniCycles[0].finalStepDuration = 0x0; // Forced 12.5ms.
pattern.miniCycles[1].ledIntensity = 0x2; // 13%.
pattern.miniCycles[1].transitionSteps = 0xF; // 15 steps. Transition time 1.5s.
pattern.miniCycles[1].finalStepDuration = 0x0; // Forced 12.5ms.

rc = hidsysGetUniquePadsFromNpad(hidGetHandheldMode() ? CONTROLLER_HANDHELD : CONTROLLER_PLAYER_1, UniquePadIds, 2, &total_entries);
if (R_SUCCEEDED(rc))
{for(i=0; i<total_entries; i++) { rc = hidsysSetNotificationLedPattern(&pattern, UniquePadIds[i]);}}

hidsysExit();
return 0;
}

void espera(u32 timeS)
{
Expand Down Expand Up @@ -134,6 +102,39 @@ void Lock(u64 TID)

}


void LockSysINFO(u64 TID)
{
fsInitialize();
char id[160];
printf("\x1b[32;1m*\x1b[0m Locking %016lX\n",TID);
consoleUpdate(NULL);


mkdir("sdmc:/BCAT", 0777);
mkdir("sdmc:/BCAT/BSYSINFO", 0777);
mkdir("sdmc:/BCAT/ASYSINFO", 0777);
AccountUid uid;
fsdevMountSystemSaveData("save", FsSaveDataSpaceId_System, TID, uid);

sprintf(id,"sdmc:/BCAT/ASYSINFO/%016lX/",TID);
mkdir(id, 0777);
fs::copyDirToDir("save:/",id);

fs::DeleteDir("save:/");
fs::WriteFile("save:/statistics.bin", "EMPTY");
fs::WriteFile("save:/statistics_srepo.bin", "EMPTY");

sprintf(id,"sdmc:/BCAT/ASYSINFO/%016lX/",TID);
mkdir(id, 0777);
fs::copyDirToDir("save:/",id);

fsdevCommitDevice("save");
fsdevUnmountDevice("save");
fsFsClose(&loc);

}

void install()
{
//close BCAT ,lock and reboot
Expand All @@ -144,11 +145,11 @@ void install()
if (R_FAILED(rc = pmshellTerminateProgram(0x010000000000000C)))
printf("\x1b[31;1m*\x1b[0m Error Klling BCAT\n");
else{
Lock(0x80000000000000A1);
Lock(0x80000000000000A2);
Lock(0x80000000000000A1);
LockSysINFO(0x80000000000000A0);
printf("\x1b[32;1m*\x1b[0m W COMPLETE\n");
consoleUpdate(NULL);
led_on();
espera(5);
bpcInitialize();
bpcRebootSystem();
Expand Down Expand Up @@ -205,6 +206,7 @@ void uninstall()
consoleUpdate(NULL);
remove("sytem33:/save/80000000000000A1");
remove("sytem33:/save/80000000000000A2");
remove("system33:/save/80000000000000A0");

//umount system
printf("\x1b[32;1m*\x1b[0m umount system\n");
Expand All @@ -223,14 +225,35 @@ void uninstall()

int main(int argc, char **argv)
{
set_LANG();

char keysNames[28][32] = {
"A", "B", "X", "Y",
"StickL", "StickR", "L", "R",
"ZL", "ZR", "Plus", "Minus",
"Left", "Up", "Right", "Down",
"StickLLeft", "StickLUp", "StickLRight", "StickLDown",
"StickRLeft", "StickRUp", "StickRRight", "StickRDown",
"LeftSL", "LeftSR", "RightSL", "RightSR",
};



set_LANG();
consoleInit(NULL);
while (appletMainLoop())
{
hidScanInput();
u64 kDown = hidKeysDown(CONTROLLER_P1_AUTO);
u64 kHeld = hidKeysHeld(CONTROLLER_P1_AUTO);

PadState pad;
padInitializeDefault(&pad);
padUpdate(&pad);

u64 kDown = padGetButtonsDown(&pad);
u64 kHeld = padGetButtons(&pad);

consoleInit(NULL);

padConfigureInput(1, HidNpadStyleSet_NpadStandard);

printf("\x1b[32;1m*\x1b[0m %s v%s Kronos2308, BCAT LOCKER\n",TITLE, VERSION);
if(isSpanish)
{
Expand Down Expand Up @@ -258,20 +281,21 @@ set_LANG();
}
consoleUpdate(NULL);

if (kDown & KEY_A)

if (kDown & HidNpadButton_A)
{
install();
break;
}

if ((kDown & KEY_MINUS || kDown & KEY_PLUS) && (kHeld & KEY_MINUS && kHeld & KEY_PLUS))
if ((kDown & HidNpadButton_Minus || kDown & HidNpadButton_Plus) && (kHeld & HidNpadButton_Minus && kHeld & HidNpadButton_Plus))
{
uninstall();
break;
}


if (kDown & KEY_B || kDown & KEY_Y || kDown & KEY_X)
if (kDown & HidNpadButton_B || kDown & HidNpadButton_Y || kDown & HidNpadButton_X)
{
break;
}
Expand Down