Lista winnt@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [WINNT] Czyszczenie diakrytyków

To: winnt@man.lodz.pl
Subject: Re: [WINNT] Czyszczenie diakrytyków
From: "Grzegorz Niemirowski" <grzegorz@grzegorz.net>
Date: Sun, 27 Oct 2024 16:25:50 +0100
Andrzej P. Wozniak <uszer@poczta.onet.pl.invalid> napisał(a):
Tylko z czego są liczone te CRC? Bezpośrednio z nazwy
użytkownika raczej nie.
Z nazwy użytkownika.
Jak zapisanej? Przecież ktoś może mieć ogonki w nazwie i wtedy jest różnica w kodowaniu.
W okienku wpisuje się z ogonkami, a program konwertuje nazwę
użytkownika do UTF-16.
Ale jaki dokładnie ciąg jest generowany? UTF-16 z BOM czy bez BOM na początku ciągu? Ciąg jest zakończony przez 0x00 czy nie?

Pomyliłem się, tekst wpisany przez użytkownika jest konwertowany z UTF-16 na lokalną stronę kodową. Stąd była prośba żeby nie używać polskich liter na systemach z niepolską stroną kodową.

Czym to liczyłeś?
Nie muszę liczyć. Program sam generuje klucz i porównuje z wpisanym.
Trzeba tylko ten wygenerowany klucz podejrzeć i już wiadomo co
wpisać. Czy algorytm wykorzystuje CRC to nie wiem, to wymaga głębszej
analizy. W każdym razie finalna postać klucza jest generowana według
formatu "%u-%u", a więc jako liczby dziesiętne, nie szesnastkowe.
Czyli nie liczyłeś CRC i wycofujesz się z tego, że to CRC.

Z niczego nie się wycofywałem. Napisałem tylko, że dopóki nie znam dokładnie algorytmu, to nie mogę potwierdzić czy jest liczone CRC. W każdym razie dostałeś działający klucz.
Napisałem, że nie liczyłem, bo wykorzystałem gotowe obliczenia Gżegżółki.

A ja twierdziłem, że jeśli to CRC, to nie jest używany BEZPOŚREDNIO do nazwy użytkownika.

Aleś się uniósł. Ja sobie spokojnie rozkminiałem jak to działa i na bieżąco pisałem na grupie o swoich odkryciach. Nawet wygenerowałem Ci działający klucz, co zupełnie pominąłeś.

Widać to w przywróconym cytacie.
Może nazwa jest zapisana wspak, może jest XOR z jakimś ciągiem, może
jakaś  inna funkcja, ale nie bezpośrednio CRC. Jeśli wątpisz, wejdź na
stronę  https://crccalc.com i pokombinuj z nazwą użytkownika w UTF-16
dla liczenia  różnych sum. Podpowiadam, że Total Commander liczy sumę
opisaną jako  CRC-32/ISO-HDLC.

Nie trzeba gdybać, w tej chwili już wiem jak wygląda algorytm:
1. Zmień nazwę użytkownika z UTF-16 na stronę lokalną.
2. Z nazwy oblicz CRC32.
3. Do obliczonej wartości dodaj sól.
4. Wynik dodawania zapisz jako ciąg znaków.
5. Oblicz CRC32 z tego ciągu.
6. Zwróć wynik jako liczbę dziesiętną z dodanym znakiem minus i solą.

Podałeś ciąg Źęć Żąśnół. CRC32 dla niego to liczba 0xfc2505d5. Za sól przyjmuję sobie 123. Po dodaniu mam 0xFC250650. Program konwertuje to do ciągu zawierającego liczbę dziesiętną 4230284880. Z ciągu "4230284880" liczone jest CRC32 i dostajemy liczbę 0x9de051c4, czyli dziesiętnie 2648723908. Dorzucamy minus i powtarzamy sól, dostajemy klucz: 2648723908-123.

--
Grzegorz Niemirowski
https://www.grzegorz.net/

<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>