#difflelog #diffle #gamedev hehe


Pojawiło się pytanie o to jak działają hashe w linkach. A siedziałem cicho, bo kogo to interesuje. A ja szczerze bardzo zadowolony jestem jak to działa i tylko czekałem. dx


@Heheszki zwrócił uwagę, że te same hasła mają ten sam koniec. To prawda.


Wczorajszy (niedzisiejszy) wynik:

https://deykun.github.io/diffle-lang/pl?r=QIpUTYtUWbl5SM2UWLllGcuQDZk1iclRnL0gDOtMXYr5CMuITMuEjLxEjL2gTMtQXeyVWblhSI


Jego hash:

QIpUTYtUWbl5SM2UWLllGcuQDZk1iclRnL0gDOtMXYr5CMuITMuEjLxEjL2gTMtQXeyVWblhSI


Wchodzimy np. https://onlinestringtools.com/reverse-stringi odwracamy kod:

IShlbWVyeXQtMTg2LjExLjEuMTIuMC5rYXMtODg0LnRlci1kZDQucGllLWU2MS5lbWUtYTUpIQ


Dekodujemy bash64 np. https://www.base64decode.org/ i dostajemy:

!(emeryt-186.11.1.12.0.kas-884.ter-dd4.pie-e61.eme-a5)!


Jak ktoś da za krótki link to mu urwie hasło i wyświetli “Niestety ten link wygasł lub jest uszkodzony.” @Felonious_Gru czasami wstawia takie linki dając spacje. !( i )! są z tego samego powodu.


Co znaczą części

emeryt - hasło


186 - dzień roku

jeśli ktoś przestawi godzinę i wrzuci to jak zobaczy, że my mamy 185 dzień i to jutrzejsze hasło to zamiast spoilerów jest “Ten link powinien wkrótce działać".


11 - prawidłowych

1 - w złej pozycji

12 - nieprawidłowych

0 - wpisanych jako nieprawidłowe

Te liczby nie są wyświetlane w rezultacie, po nich są słowa i dla hasła emeryt i słów dalej jest liczony wynik tak jak w normalnej grze, te cyfry służą jako suma kontrolna, jak coś jest inaczej to link wygasł.


kas-884 - kasztan

ter-dd4 - terror

pie-e61 - pierw

eme-a5 - emeryt (hasło)

Z tego jestem dumny. Jak wpisujecie kasztan, to diffle pobiera chunk-kas.json z tablicą słów na kas, kąs etc. 884 to pozycja słowa kasztan w systemie szesnastkowym w pobranej tablicy.


Dlaczego? Bo krócej. 243 to w systemie szesnastkowym F3. A Bash64 to będzie MjQz i RjM, cel to mieć url sensownej długości. Z tego samego powodu nie ma tam całych słów.


Akurat w naszym przypadku to nie ma takiego znaczenia, bo link by był krótszy z całymi słowami.

!(emeryt-186.11.1.12.0.kasztan.terror.pierw.emeryt)!


Ale hasło było krótkie i nie miało polskich znaków (te w bashu są zwykle dłuższe) tu długość jest stała 6 znaków, a przy słowach startowych po 15 liter to się szybko zwraca.


But there is more…

Wychodzę z założenia, że jak ktoś strzela dużo słów to w pewnym momencie ma początek słowa.


I na przykład wpisane po kolei:

korzyść, korzeń, korytarz, kora, koran


W tym co wyżej skutkuje kor-123.kor-420.kor-312.kor-12.kor-1098

Ale ja wiedząc, że początek jest ten sam tnę te słowa do kor-123.420.312.12.1098

+ potem do szesnastkowego jeszcze (1098 -> 44a, 12 -> c).


Jak po kor jest kon to jest n-cyfra i odtwarza te litery patrząc na wcześniejsze słowo.


I teraz czasami aktualizuje słownik słów (nie wygrywających tylko tych do wpisania) i wtedy te cyfry się mogą przesunąć, jeśli suma kontrolna się rozejdzie, jest informacja, że link wygasł, ale teoretycznie jeśli po aktualizacji suma działa to link może działać i jest też jakieś ryzyko, że słowa się zmieniły, ale bez wpływu na wynik wtedy czyjś wynik ma oszukane słowo/a.


Nie ma co tej wiedzy używać do oszukiwania, bo wystarczy w trybie prywatnym zgadnąć hasło i potem w normalnym wpisać co się chce i się będzie miało super linka z wynikiem.


Z programistycznych rzeczy to testy jednostkowe nie są tak szanowane, ale właśnie ten ficzer jest nimi pokryty i każdy etap tego wygenerowania linku z słów i słów z linku jest pokryty testami i to po prostu ma działać i się nie psuć.


#difflepl #diffleen #grywebowe

Komentarze (9)

Cybulion

Wlasnie tak rzeczowej odpowiedzi sie po tobie spodziewałem. Piękne.

Felonious_Gru

@Deykun no elo, coś mam zjebane w telefonie i czasem doklei spacje, czasem enter gdzies pod koniec. Jak zauważę to poprawiam a jak nie to nie xd

Heheszki

@Deykun Ha! DZIĘKUJĘ że zaspokoiłeś moją ciekawość 🥹 Dotarłem do odwrócenia, ale skorzystałem z kiepskiego dekodera który wyrzucił krzaki, wróciłem do punktu wyjścia. W końcu doszedłem do wniosku, że pewnie api podmienia niektóre znaki w sposób który mnie nie ciekawi, bo jednak szukałem czegoś co będzie widać też gołym okiem :) Bardzo fajne.

Felonious_Gru

@Deykun


Nie ma co tej wiedzy używać do oszukiwania

Teraz to mi nadepnąłes na odcisk

Dzemik_Skrytozerca

Dałoby się poprosić o dodanie tagu #grywebowe do podsumowania? Ludzie zapominają to doklejać do postów.

Deykun

@Dzemik_Skrytozerca nie dałoby rady, bo postują też angielskie diffle, i nie dodałbym tam. Daj #diffle na czarno i będziesz miał gwarancje, że wytniesz też zapominalskich.

Dzemik_Skrytozerca

@Deykun


Dzięki za wyjaśnienie.


Psst. Nie daje nic na czarna bo lubię czasem robić gownoburze.

Zaloguj się aby komentować