Skocz do zawartości

DLL, SZYFROWANIE I DESZYFROWANIE ZMIENNYCH


Rekomendowane odpowiedzi

Witam serdecznie :)

Napisałem dla kolegi plik dll służący do szyfrowania i deszyfracji zmiennych i namówił mnie on żebym udostępnił go dla was :)

Tym samym jest to mój pierwszy temat na waszym forum :)

Przejdźmy do tematu...

Mam nadzieje że macie jako takie pojęcia jak używać plików .dll w Game Maker.

Najpierw przykład a później wyjaśnię :)

 

GML
foo = "sym";

a = 15;

 

ZA = external_define( 'phAss.dll', 'ZA', dll_stdcall, ty_real, 2, ty_real, ty_string );

OD = external_define( 'phAss.dll', 'OD', dll_stdcall, ty_real, 1, ty_string);

 

external_call(ZA, a, foo);

show_message('Test odczytania: ' + string( external_call(OD, foo) ) );

 

external_free('phAss.dll');

Pierwsza linijka jest to zmienna pomocnicza musi się ona składać z trzech znaków, za pomocą tej zmiennej będziemy mogli się później odwołać do zmiennej zapisanej w pliku kojarzonym z tą zmienną :)

 

Druga linijka jest to nasza zmienna którą chcemy zapisać w pliku.

 

następne cztery linijki mam nadzieje że nie wymagają komentarza...

 

Linijka nr 6

GML
external_call(ZA, a, foo);

Jest to zapis naszej zmiennej a do pliku kojarzonym ze zmienną foo.

 

GML
show_message('Test odczytania: ' + string( external_call(OD, foo) ) );

Ta linijka odpowiada za odszyfrowanie pliku kojarzonym ze zmienną foo i jej wyświetlenie, możemy ją zastąpić linijką:

GML
b = external_call(OD, foo);

czyli przypisanie do zmiennej b wartości pliku kojarzonym ze zmienną foo.

 

Linijka nr 10

GML
external_free('phAss.dll');

zwalnia biblioteke z pamięci.

 

Mam nadziej że jako tako jest to zrozumiałem, wiem że nie mam daru tłumaczenia, ale jakby co to pytajcie...

Plik .dll możecie pobrać z mojego uploada https://gmclan.org/up5334_4_dll_phAss.html

Odnośnik do komentarza
Udostępnij na innych stronach

GML
foo = "sym";

a = 15;

 

ZA = external_define( 'phAss.dll', 'ZA', dll_stdcall, ty_real, 2, ty_real, ty_string );

OD = external_define( 'phAss.dll', 'OD', dll_stdcall, ty_real, 1, ty_string);

 

external_call(ZA, a, foo);

show_message('Test odczytania: ' + string( external_call(OD, foo) ) );

 

external_free('phAss.dll');

To jest całość kodu do użycia szyfratora, nie sądzę że jest on długi.

Jak wspomniałem napisałem tego dll'a dla użytku własnego, żeby wrzucić go tutaj namówił mnie kolega, a może akurat komuś się przyda :)

Kto nie chce korzystać to nie musi nic na silę :)

Odnośnik do komentarza
Udostępnij na innych stronach

czyli foo robi w tym przypadku za klucz/haslo?

Odnośnik do komentarza
Udostępnij na innych stronach

czyli foo robi w tym przypadku za klucz/haslo?

Tak można nazwać to kluczem do pliku w którym zapisana jest zmienna.

mały przykład użycia dwóch kluczy:

GML
foo = "sym";

foo2 = "abc";

a = 15;

b = 23;

 

ZA = external_define( 'phAss.dll', 'ZA', dll_stdcall, ty_real, 2, ty_real, ty_string );

OD = external_define( 'phAss.dll', 'OD', dll_stdcall, ty_real, 1, ty_string);

 

external_call(ZA, a, foo2); //zapisanie zmiennej a do pliku z kluczem foo2

external_call(ZA, b, foo); //zapisanie zmiennej b do pliku z kluczem foo

show_message('Test odczytania: ' + string( external_call(OD, foo) ) ); // odczytanie zmiennej z pliku kojarzonym z kluczem foo

show_message('Test odczytania: ' + string( external_call(OD, foo2) ) ); // odczytanie zmiennej z pliku kojarzonym z kluczem foo2

external_free('phAss.dll');

Odnośnik do komentarza
Udostępnij na innych stronach

Domyslam sie ze wspolgra z liczba a, ktora zapewne jest przesunieciem. heh, jak tak to sposob ze tak powiem nijaki, jesli przelatujesz xorem i dajesz przesuniecie :P jesli jednak sie myle to mnie sprostuj jak to dziala :P

a nie, poprawka, "sym" to widac jest kotwica, a samym kluczem jest liczba, a wiec czy to samo przesuniecie czy sam gnyskowy xor (klucz to liczba; very zly sposob, nie polecam) to kiepsko tu widze bezpieczenstwo danych :/

Odnośnik do komentarza
Udostępnij na innych stronach

Nie, nie jest tak jak mówisz, w sumie to mało zrozumiałem z tego co napisałem :)

Algorytm zapisania i szyfrowania zmiennej jest całkiem inny niż myślisz (o ile dobrze myślę co ty myślisz :D)

Pobierz dll'a i zrób szybki teścik, a może zrozumiesz jak to działa :)

edit //

Zapoznałem się z tym xor'em o którym pisałeś, nie słyszałem o tym wcześniej i mogę cie zapewnić że to nie jest ta metoda szyfrowania :)

Odnośnik do komentarza
Udostępnij na innych stronach

Nazwa pliku generowana jest z podanego klucza - do pierwszych 3 znaków w ciągu dodawana jest liczba 36. Podana liczba która ma być zaszyfrowana w pliku zamieniana jest na liczbę całkowitą a potem zamieniana na ciąg znaków, następnie do każdego znaku w stringu dodawana jest liczba 63. Potem wpisujesz do pliku 40 bajtów śmieci, zaszyfrowaną liczbę (zakończoną powrotem karetki i znakiem nowej linii) i kolejne 40 bajtów śmieci :)

 

Nieco słabe.

 

Powinieneś dać przykład w gm6/gmk albo przynajmniej plik gml żeby zaimportować skrypty do projektu, bo tak to się nie chce składać samemu ;p

Odnośnik do komentarza
Udostępnij na innych stronach

co poradzisz, taka smutna rzeczywistość że wszystko będą chcieli Ci rozłożyć na czynniki pierwsze :P przyzwyczaj się i lepiej zrób jakiś lepszy sposób na zabezpieczenie bo ten jest kiepski a skoro już wiemy jak szyfruje to bez problemu będzie to wszystko odkodować :P serio, sprawdź lepsze metody szyfrowania :)

 

PS. co do sygny:

IF (a>=18) INTERNET();

zwykle czepialstwo ale rzuca sie w oczy ;P

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
Zapoznałem się z tym xor'em o którym pisałeś, nie słyszałem o tym wcześniej i mogę cie zapewnić że to nie jest ta metoda szyfrowania :)

 

I od razu wiadomo, jak liche jest Twoje szyfrowanie, skoro nie znasz tak prostej metody. Podpowiem, że właśnie XORem szyfrowano wiele wiadomości w czasie II Wojny światowej i istniały specjalne książeczki z kluczami, gdzie każda karteczka była wyrywana po przyjściu wiadomości.

Musisz się jeszcze pouczyć.

Odnośnik do komentarza
Udostępnij na innych stronach

heh :D

Tak wiem że metoda nie jest trudna, ale plik ten robiłem dość krótko i jego celem będzie tylko prosta szyfracja ilości żyć i zdobytych monet w grze, nie będzie służył do kodowanie numerów kont bankowych więc nie wiem o co tyle zamieszania xD

Odnośnik do komentarza
Udostępnij na innych stronach

bo widzisz, My tu lubimy dokładność w tym co sie robi i często możesz się spodkać z sytuacją gdzie większość się na Ciebie uweźmie, ale nie dla tego aby Ci ukrócić skrzydła, ale aby Ci pokazać gdzie leży błąd, jakich sposobów najlepiej użyć :P

Odnośnik do komentarza
Udostępnij na innych stronach

I od razu wiadomo, jak liche jest Twoje szyfrowanie, skoro nie znasz tak prostej metody.

Nie wiem jak nie znajomość metody xor może świadczyć o tym że moja metoda jest słaba :D

 

bo widzisz, My tu lubimy dokładność w tym co sie robi i często możesz się spodkać z sytuacją gdzie większość się na Ciebie uweźmie

No to aż za dobrze widać, prawie w każdym temacie ktoś się czegoś uczepi, ale po dłuższym zastanowienie to nie jest takie głupie, łatwiej doskonalić nasz projekt jeśli wiemy gdzie popełniliśmy błąd :)

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem jak nie znajomość metody xor może świadczyć o tym że moja metoda jest słaba biggrin.gif

bo XOR to podstawa bezpiecznego szyfrowania, w przeciwienstwie do zwyklego przesuniecia wartosci znaku o klucz. Jednak XOR sam bez dodatkowej metody nic nie pomoze, bo i to mozna zlamac przy uzyciu techniki bruteforce, dla tego jak szyfrujesz to mieszasz glowny algorytm szyfrowania z bazowym XORem gdzie klucz to ciag znakow, a nie liczba

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...