Skip to content

Instantly share code, notes, and snippets.

@timschneeb
Last active August 18, 2025 20:35
Show Gist options
  • Select an option

  • Save timschneeb/d16735114784ebc6a25c59d3e4c267bd to your computer and use it in GitHub Desktop.

Select an option

Save timschneeb/d16735114784ebc6a25c59d3e4c267bd to your computer and use it in GitHub Desktop.
PIN generator for `com.samsung.rtlassistant` (RTLAssistant, Version 1.3.6)
#include <stdio.h>
// PIN generator for com.samsung.rtlassistant (RTLAssistant used for Samsung's remote test lab service)
// -> This program produces PIN: 37626543
int main()
{
// Extracted from libcheckPin.so using Ghidra. Search for a named global called 'pin'. The pin is stored as ASCII, but I already converted it to a byte array with the actual numbers. (0x30 -> 0, 0x31 -> 1, ...)
// The pin is scrambled from the algorithm below.
char pin[] = {6, 4, 0, 7, 5, 3, 7, 7, 9, 6, 2, 6, 3, 5, 4, 3, 6, 6, 9, 8};
unsigned int uVar4 = 0;
while ((uVar4 - 0x10 < 0xfffffff5 ||
((uVar4 < 0xd && ((1 << (unsigned long)(uVar4 & 0x1f) & 0x1140U) != 0))))) {
uVar4 = uVar4 + 1;
}
printf("%u\n", pin[uVar4]);
while ((uVar4 - 0xf < 0xfffffff5 ||
((uVar4 < 0xc && ((1 << (unsigned long)(uVar4 & 0x1f) & 0x8a0U) != 0))))) {
uVar4 = uVar4 + 1;
}
printf("%u\n", pin[uVar4 + 1]);
uVar4 = uVar4 + 2;
while ((uVar4 - 0x10 < 0xfffffff5 ||
((uVar4 < 0xd && ((1 << (unsigned long)(uVar4 & 0x1f) & 0x1140U) != 0))))) {
uVar4 = uVar4 + 1;
}
printf("%u\n", pin[uVar4]);
while ((uVar4 - 0xf < 0xfffffff5 ||
((uVar4 < 0xc && ((1 << (unsigned long)(uVar4 & 0x1f) & 0x8a0U) != 0))))) {
uVar4 = uVar4 + 1;
}
printf("%u\n", pin[uVar4 + 1]);
uVar4 = uVar4 + 2;
while ((uVar4 - 0x10 < 0xfffffff5 ||
((uVar4 < 0xd && ((1 << (unsigned long)(uVar4 & 0x1f) & 0x1140U) != 0))))) {
uVar4 = uVar4 + 1;
}
printf("%u\n", pin[uVar4]);
while ((uVar4 - 0xf < 0xfffffff5 ||
((uVar4 < 0xc && ((1 << (unsigned long)(uVar4 & 0x1f) & 0x8a0U) != 0))))) {
uVar4 = uVar4 + 1;
}
printf("%u\n", pin[uVar4 + 1]);
uVar4 = uVar4 + 2;
while ((uVar4 - 0x10 < 0xfffffff5 ||
((uVar4 < 0xd && ((1 << (unsigned long)(uVar4 & 0x1f) & 0x1140U) != 0))))) {
uVar4 = uVar4 + 1;
}
printf("%u\n", pin[uVar4]);
while ((uVar4 - 0xf < 0xfffffff5 ||
((uVar4 < 0xc && ((1 << (unsigned long)(uVar4 & 0x1f) & 0x8a0U) != 0))))) {
uVar4 = uVar4 + 1;
}
printf("%u\n", pin[uVar4 + 1]);
return 0;
}
@Weinerdrizzle77
Copy link

How do I use this to remove the app

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment