Odczytanie klucza windows

0

Witam

Na stronie jednej z firm informatycznych znalazłem kod z algorytmem odczytania klucza windows z rejestru productid.

Staram się zrozumieć, podstawiam różne liczby wykonuję obliczenia i jakoś nie mogę ręcznie poobliczać wartości, tak, żeby zgadzały się z wynikiem.
Prośba o dopisanie komentarzy do załączonego kodu (można również roboczo algorytmicznie powstawiać dane i przykładowo wyliczyć kilka wartości. Z góry dziękuję

//Digital Product ID: FE 04 00 E8 44 28 31 EE C4 5F F4 F7 92 69 09
Char[] ZnakiDozwoloneWKluczuWindows = { ‚B’, ‚C’, ‚D’, ‚F’, ‚G’, ‚H’, ‚J’, ‚K’, ‚M’, ‚P’, ‚Q’, ‚R’, ‚T’, ‚V’, ‚W’, ‚X’, ‚Y’, ‚2’, ‚3’, ‚4’, ‚6’, ‚7’, ‚8’, ‚9’  };
Char[] KluczWidnowsa = new Char[25];
System.Byte[] ZakodowanyKlucz = {0xFE, 0x04, 0x00, 0xE8, 0x44, 0x28, 0x31, 0xEE, 0xC4, 0x5F, 0xF4, 0xF7, 0x92, 0x69, 0x09};
int i, j, k;
for (i = KluczWidnowsa.Length – 1; i >= 0; i–)
{
k = 0;
for (j = ZakodowanyKlucz.Length – 1; j >= 0; j–)
{
k = (k << 8) + ZakodowanyKlucz[j];
ZakodowanyKlucz[j] = (System.Byte)(k / 24);
k = k % 24;
}
KluczWidnowsa[i] = ZnakiDozwoloneWKluczuWindows[k];
}

Jeżeli chodzi o klucz to po odszyfrowaniu powinno wyjść:
[CIACH!]-7T498

0

Sprawdź sobie innym programem do odczytywania klucza czy zadziała. Ogólnie to odczytywanie klucza Windows dla Windows w odmianie OEM oraz w Windows 10 może nie zadziałać.

0

W windows 10 działa ale innym skryptem.
Zreszta problem mam nie z odczytaniem klucza. Tylko ze zrozumieniem w 100 procentach tego programiku. Jeżeli ktoś mógłby pomóc byłbym wdzięczny. Ps. nie potrzebnie moderator ukrył ten klucz. To jest klucz szkoleniowy normalnie dostępny na różnych stronach

0

Ktoś coś?

0

To może chociaż ktoś się postara wyjaśnić tę część kodu, bo z resztą nie mam problemu

for (j = ZakodowanyKlucz.Length – 1; j >= 0; j–)
{
k = (k << 8) + ZakodowanyKlucz[j];
ZakodowanyKlucz[j] = (System.Byte)(k / 24);
k = k % 24;
0

Bierze zmienną k i przesuwa w lewo (bitowo) o 8 bitów i dodaje do tego kolejny j-ty element klucza. Potem ten element klucza zmienia na k / 24 i konwetuje na zakres 0-255. A potem zmienną k zmienia na nią samą modulo 24, tj. reszta z dzielenia przez 24.

Dlaczego tak robi? Widać taki jest algorytm.

0

Można przykład któregoś elementu klucza na wartościach bo w dalszym ciągu nie sposób tego obliczyć ręcznie,,,,

0

Witam znalazłem taki wpis w internecie:
252
Asgerix
2-27-09 5:18AM
hex from registry: 73 02 00 00 00 00 00 00 00 00 00 00 00 00 00

I’ve noticed a lot of people asking about the algorithm. It is actually quite simple: You interpret the 15 byte code as a number (little endian), and convert to base 24 using these characters as digits: “BCDFGHJKMPQRTVWXY2346789″ (B=0, C=1, …).

E.g.: The code “73 02 00 00 00 …” correspond to the number 273 in hexadecimal, which is 627 decimal. Calculating the base-24 expansion you get: 124^2 + 224 + 3. Using the digits above, this translate to “CDF”. The product key is then generated by padding with “zeroes” and adding dashes for every five digits: “BBBBB-BBBBB-BBBBB-BBBBB-BBCDF”

Ogólnie, wg. mnie ktoś naciągnął te wyjaśnienia. Jest 15 par liczb odczytanych z rejestru. Nie da się ich przekształcić w liczbę decymalną, a następnie rozbić na ciąg liczbowy a242+b24</sup>1+c*24^0.

Ktoś ma jakiś pomysł?

1 użytkowników online, w tym zalogowanych: 0, gości: 1