Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczanie aplikacji przed kradzieżą
Forum PHP.pl > Forum > PHP
Stron: 1, 2, 3
scanner
Tak sobie siedzę i myślę i wpadłem na taki temat.

Napisałem aplikację MyApp (nazwa zmyślona) - oczywiście php/SQL. Udostępniam jej demo na sieci i oferuję jej sprzedaż za cenę X zł.

I teraz szukam sposobu, w jaki można by zabezpieczyć MyApp przed rozpowszechnianiem pakietu poza moja kontrolą. Poza stosowaniem np. MMCache lub ZendEncodera (itp) nic innego sensownego nie przychodzi mi do głowy.

Powyższe rozwiażania niestey nie wchodzą w grę - jeśli MyApp sprzedam komuś, kto ją będzie chciał postawic np. na Lycosie, to wszystko zdechnie.

Oczywisćie ufam userom i jełśi za coś zapłacili XX zł, to prawdopodobnie nie będą tym handlować dalej, ale.. temat do przemyśleń jest.

Macie jakieś pomysły?
fiszol
Cytat(scanner @ 2004-09-29 14:03:43)
Oczywisćie ufam userom i jełśi za coś zapłacili XX zł, to prawdopodobnie nie będą tym handlować dalej, ale.. temat do przemyśleń jest.

Nie ufaj, spójrz na torrenty, niemal wszystko jest tam płatne....

A co do zabezpieczeń, może jakiś zdalny ssytem autentyfikacji, np skrypt po uruchomieniu kontaktuję się z serwerem XXX i porównuje kod, jeśli kod jest w bazie danych serwera XXX oskryptowanie pracuje dalej, jeśli nie wykonuje die('bla bla bla'), jednak to ma jedną zasdaniczą i ogormną wadę, mianowicie każdy będzie mógł wywalić cześc kodu odpowiedzialną za to ze źródeł....
Mam nadzieję że chociaż odorbinę to pomogło, nasunęło jakieś rozwiązanie o ktorym ja niemam pojęcia

cheers,
fiszol
scanner
Cytat(fiszol @ 2004-09-29 14:21:24)
jednak to ma jedną zasdaniczą i ogormną wadę, mianowicie każdy będzie mógł wywalić cześc kodu odpowiedzialną za to ze źródeł....

Za długo nad tym myślę, zębym pominął taką oczywistośc. Próba użycia takiego systemu ma dwie wady:
- system kontrolny (mój serwer) moze być offline - autoryzacja zdechnie
- bez kompilacji (ZendEnc, MMCache) stosowanie takiego modelu jest pozbawione logiki, sam powiedziąłeś, ze mozan wyedytować.
kszychu
Moim skromnym zdaniem nie da się tego zabezpieczyć. Złamanie/obejście/wywalenie każdego zabezpieczenia w nieskompilowanym kodzie to tylko kwestia czasu.
bregovic
Jedna z mozliwosci jest sprzedawanie interfejsow do MyApp - ktore bedzie dzialalo na twoim serwerze, i komunikowalo sie z nim np za pomoca xml-rpc" title="Zobacz w manualu PHP" target="_manual lub soap" title="Zobacz w manualu PHP" target="_manual... Oczywiscie wymaga to od ciebie jako producenta MyApp zapewnienia stabilnosci serwera - ale to sa konsekwencje bezpieczenstwa...
Dynuel
sam o tym też mślałem i potrzebuję jakieś dobrego rozwiązania.

a co powiecie aby źródło umieścisz na własnym sererze a u kolesia jedynie pliki które by pobierały kod, tylko trzeba by to zrobić tak aby on sam nie mógł ich ściągnąć, i nie wiem czy to jest w ogóle możliwe
mpps
zawrzyj to w umowie kupna-sprzedaży lub licencyjnej.
jeśli nadasz każdemu egzemplarzowi aplikacji ukryty w źródle kod, i jeśli dojdą do Ciebie informacje (lub sam znajdziesz), że ten egzemplarz aplikacji jest dostępny w sieci w wersji pełnej za friko, zawsze będziesz mógł pociągnąć do odpowiedzialności cywilno-prawnej właściciela egzemplarza z tymże ukrytym kodem.
co innego, jeśli jakiś egzemplarz ktoś rozkompiluje, złamie (usunie część z kodem) i po skompilowaniu wrzuci do sieci... - ostatnio to się stało standardem przy łamaniu zabezpieczeń nawet tych najdroższych programów...
acha - oczywiście pozostaje kwestia obowiązkowej rejestracji egzemplarza aplikacji przez klienta...
co do ceny... zależy jaką ta aplikacja ma wartość merytoryczną - to sam musisz wiedzieć, na ile cenisz czas jej poświęcony, i to co dana aplikacja daje (czyt.: jak bardzo ułatwia userowi życie). sęk w tym, że zazwyczaj, jeśli miałbyś wycenić swoją aplikację na tyle, ile ona faktycznie jest warta, to nikt by jej nie kupił winksmiley.jpg więc należy cenę podzielić przez potencjalną ilość klientów...
chyba, że dążyć do czegoś takiego, do czego dąży(ł?) microsoft... sprzedajesz interface z dostępem do serwera, na którym działa aplikacja - wtedy masz pewność, że tylko jeden user używa tylko jednego egzemplarza, bo loguje się na serwerze na swoje konto. a opłaty pobierasz np. rocznie(?) ryczałtem.
fiszol
@mpps; tutaj dochodzi jeszcze coś takiego jak koszta sądowe, czy mianowicie skrypt będzie wart dochodzenia sprawiedliwości ( adkewatnie do ceny skryptu )

Cytat
(lub sam znajdziesz)
To oznacza albo trzepanie googli dzień w dzien 24h/ dobę, albo zostawanie jakiegoś backdoora w oskryptowaniu co jesz\t raczej nie fair wobec klienta

Cytat
co innego, jeśli jakiś egzemplarz ktoś rozkompiluje, złamie (usunie część z kodem) i po skompilowaniu wrzuci do sieci... - ostatnio to się stało standardem przy łamaniu zabezpieczeń nawet tych najdroższych programów...

Torrenty, tam jest wszystko bez ograniczeń, i jeśli oskryptowanie określone tutaj jako "MyApp" spotkało by się z szerokim zainteresowaniem, rónież pojawiło by się jako torrent, a w przypadku serwisów torentowych dochodzenie swoich praw jest w ręcz nierealne.

to tyle,
fiszol
NuLL
Nie wiem jak Wy sadzice ale wydaje mi sie ze szanse na odnalezienie wlasnej aplikacji w necie jes nierealne - nie oszukujmy sie. Szczerze mowiac - ja bym rpobowal w ajkis pecyficzny spsobtworzyc HTML-a - jakies okreslone nazwy pol czy siakies takie rzeczy? innego pomyslu nie widze. pomysl glupi ale np. przekazywanie danych w adresie czy cos moze wskazywac na ta aplikacje - z tym ze musi ona sluzyc do konkretnych celow

Pozdrawiam
Dawid Pytel
Cytat
tutaj dochodzi jeszcze coś takiego jak koszta sądowe, czy mianowicie skrypt będzie wart dochodzenia sprawiedliwości ( adkewatnie do ceny skryptu )


Możesz się sądzić nawet o 100 zł. Fakt, zapłacisz za prowadzenei sprawy jednak jeżeli masz pewność, że wygrasz to:
a) dasz nauczkę oszustowi
cool.gif przegrana strona zwraca koszty procesu osobie, która wygrała
tiraeth
Mam pomysł.......

jeżeli chodzi o zabezpieczenie przed dalszym rozpowszechnianiem to można, np. tak:

:: Jeżeli potrafisz zarządzać plikami/edytować je w kompresji zip to można zrobić tak, że każdy ściągnięty pakiet MyApp będzie miał w konfiguracji zapisany unikalny id. W momencie ściągnięcia skryptu ten id, ip downloadera, jego host i data ściagnięcia będzie zapisana do bazy.
:: Administrator strony instalując MyApp będzie musiał podać adres email.
:: Potem podczas instalacji MyApp, skrypt będzie pobierał adres strony do jakiejś zmiennej (powiedzmy $adres_strony) i wysyłał Ci email'a z takimi informacjami:

Cytat
Witaj, scanner!

Kolejna strona ściągnęła i zainstalowała MyApp w wersji DEMO!! Poniżej znajdują się dane dot. strony oraz tego pakietu MyApp:

Adres strony: http://adres.strony.pl
Email admina: admin@adres.strony.pl
Data instalacji: środa, 29 września 2004, 13:33:12
Identyfikator pakietu: 82cn3222xcak28cc0213cn4r2rn8573o

Ilość identyfikatorów tego pakietu w bazie danych jest równa 0 a więc jest to świeży pakiecik MyApp.

Możesz skontaktować się z adminem tej strony i podziękować za wybór MyApp >tutaj<


no chyba, że taki id pakietu istnieje już to wtedy skrypt będzie sprawdzać czy w bazie istnieją identyfikatory takie jak podane w mailu, to wtedy będzie to tak:
Cytat
Witaj, scanner!

Kolejna strona ściągnęła i zainstalowała MyApp w wersji DEMO!! Poniżej znajdują się dane dot. strony oraz tego pakietu MyApp:

Adres strony: http://adres.strony.pl
Email admina: admin@adres.strony.pl
Data instalacji: środa, 29 września 2004, 13:33:12
Identyfikator pakietu: 82cn3222xcak28cc0213cn4r2rn8573o

Ilość identyfikatorów tego pakietu w bazie danych jest równa 1exclamation.gif Chyba ktoś rozpowszechnia MyApp bez Twojej wiedzy.

Możesz skontaktować się z adminem tej strony i porozmawiać na temat rozpowszechnianai MyApp >tutaj<


oczywiście strukturę bd chyba będziesz umiał utworzyć smile.gif

pozdro!
rogrog
dobry pomysł ale nadal ktoś może usunąć kod odpowiedzialny za maila do autora z kodu
MoD
W takim razie można to zapisać w jakimś pliku NIE MODYFIKOWAĆ (np. config.php, żeby osoba nie nabrała podejrzeń). Ale mam jeszcze inny sposób:

1. Napisać własną procedurę szyfrowania
2. Umieścić ją na własnym serverze
3. Zakodować nią plik CONFIG.php zawierający konfigurację oraz kod zrobiony na podstawie pomysłu Tiraetha
4. Podczas kożystania ze sryptu zaincludować nasz plik z procedurą szyfrowania, odkodować CONFIG.php oraz wywołac funckję eval" title="Zobacz w manualu PHP" target="_manual z podanym odkodowanym CONFIG.php

Wszystko można złamać, ale należy jak najbardziej zamotać kod smile.gif
mpps
eekch, a wracając do początku:
@scanner: ta aplikacja, o której mowa, to coś, co działa lokalnie, czy w necie?
bo uważam, że to zasadnicza różnica w kwestii zabezpieczeń...
aplikację net-ową łatwiej sprawdzić czy legalna...(?)
zalew
Cytat
Poza stosowaniem np. MMCache lub ZendEncodera (itp) nic innego sensownego nie przychodzi mi do głowy.

Powyższe rozwiażania niestey nie wchodzą w grę - jeśli MyApp sprzedam komuś, kto ją będzie chciał postawic np. na Lycosie, to wszystko zdechnie.


piszesz cos o nazwie 'requirements' i tam mowisz ze na serwerze ma byc zend optimizer i ze jest darmowy.. poza tym okresl sobie userow, chyba ktos kto wydaje pineiadze na oporgramowanie nie trzyma sajtu na darmowym koncie hostingowym.
__phpion__
Mozna robic rozne myki. Wlasne taki jaki juz zostal opisany (z identyfikacja skryptu). Na pewno w skrypcie znajduje sie plik, ktory jest sercem skryptu. Moze to byc plik z funkcjami, moze to byc plik typu startowego. Moze po prostu umieszczac go na wlasnym serwerze i stamtad includowac? Wtedy jedyna mozliwosc, ze ktos napisze te pliki jeszcze raz...
Bakus
__phpion__: jeżeli includujesz zdalnie, to żaden problem zobaczyć ten plik w przeglądarce... jeżeli ma być wykonywany na wspomnianym serwerze, to jak napisał scanner: "system kontrolny (mój serwer) moze być offline"
borec
a moze cos takiego:

http://www.phpclasses.org/browse/package/1730.html

Cytat
Solace Script Maze is meant to protect php scripts from being stolen or modified.

It uses only native php functions, so no additional extensions are required to execute protected scripts, thus also support php 5.
orson
witam ...

a moze tak:
- po zakupie skryptu, na etapie konfiguracji podaje sie wszystkie dane a po kliknieciu next pojawia sie piekny obrazek ... sciagany z twojego serwera biggrin.gif w url przesylasz sobie dane typu id, ip serwisu, nazwa, url i inne ... mozna nawet zrobi js do przesylania postem ... mozna zrobic flasha ktory laczy sie z baza i wysyla te wszystkie zeczy ... i teraz jezeli serwer jest offline pojawia sie komunikat ze produkt nie moze zostac zarejstrowany ... try again later biggrin.gif [oczywiscie informacja o koniecznosci rejstracji znajduje sie w umowie licencyjnej]
- kodu z modolu rejstrujacego nie trzeba szyfrowac .... mozna go zaciemnic ... jezeli to skrypt ktory ma ze 300 linijek to po zaciemnieniu nie bedzie sie tego dalo przeczytac ... dodasz kilka mylnych funkcji i ktos bedzie musial siedziec 3 tygodnie zeby sie polapac co robi co ...
- przy logowaniu admina moze znowu pobierac maly obrazek gif z transem 1x1 px z id i url i ip ... jezeli twoj serwer jest offline to trudno ... kiedys bedzie online biggrin.gif
- integralnosc pliku config.php mozna sprawdzic np. przy pomocy crc/md5/sha1 ....
w kodzie pliku dajesz od linii 270:
Kod
/*
jobhaowiubt43ioutbouiaebg4utf3a4uiot <- jakas suma
asdgsdbiugbasdiugbaiubvgiuabgfiuwaebgiu <- jakas suma
alsdjbgkjadsbgjbasdkjgbkjdasbgkjbksdjagbk <- jakas suma
skadhfkhasdbgsabdvkhgbvkhui345rb34uib5ui234 <- jakas suma
bc5iu3bc34uib5ucib34bc534uib5viuc3b5iu3  <- jakas suma
j3b5ui34cb5iuqbc5iu3bc5uib34ic5ub3i4ucb5iu  <- jakas suma
icb5uic2b5iub3c5uib3ciu34cb5iu3cb5iu3cb4ui5c  <- jakas suma
*/

a potem reszte skryptu ... zeby sprawdzic wczytujesz poczatek do linii 270 do stringa potem reszte od 27x do tego samego stringa i robisz crc tego stringa ... i to jest ktoras tych sum ... zaciemniajac kod [zminana nazw zmiennych i funkcji na ich sumy] sprawisz ze bedzie to extremalnie trudne do rozszyfrowania ...

pozdrawiam
DeyV
Jeśli juz mówimy o zabezpieczaniu - ostatnio zastanawiałem się nad sposobami generowania "kluczy aktywacyjnych".

Problem sprowadza się do tego, jak napisać skrypt generujący jakiś klucz tak, by osoba mająca dostęp do kodu sprawdzającego czy dany klucz jest poprawny (zamka) - nie mogła (przynajmniej w zbyt prosty sposóB) wygenerować kolejnego (innego) klucza, pasującego do danego "zamka".

Nie znalazłem żadnych gotowych bibliotek do takich działań, a wszystkie pomysły jakie przyszły mi do głowy - okazywały się stanowczo zbyt banalne do złamania.

macie jakieś pomysły?
Sh4dow
kodowany hash plikow, do tego kodowanie samego pliku przez jakis encoder, klucz do rejestracji, to musiala by byc podstawa, a do tego przydal by sie klucz oparty o webservices.
Ale sadze ze przy bardzo popularnej aplikacji to tez byla by kwestia czasu aby pojawily sie juz polamane paczki.
Mozna jedynie utrudnic zabawe "lamaczom"
Spirit86
Może by zrobić to za pomocą pliku wykonywalnego i za pomocą funkcji exec? Można by w ten sposób zakodować plik z funckjami / klasami głównymi i aglorytmem rozkodywującym resztę plików. Można też skorzystać z programu do kompilowania plików php. biggrin.gif
hawk
@DeyV:
Niby sporo się uczyłem o szyfrowaniu, ale... co dokładnie chcesz mieć?

1) Jeden skrypt sprawdzający i generujesz wiele pasujących do niego kluczy (relacja 1-wiele)

2) Dla każdego klucza osobny skrypt sprawdzający (pewnie różnią się parametrem, relacja wiele-wiele)

Może dało by się wykombinować coś z liczbami pierwszymi i arytmetyką modulo X...
SHiP
Ja bym to zrobił tak...
Sprzedaje program panu XXX i podaje mu cd-keya np ZBX123456789. Przy okazji zapisuję go do bazy winksmiley.jpg. Teraz gdy pan XXX chce zainstalować program musi wpisać cd keya. Aby skrypt działał musi jednak połączyć sie z serwerem. Spradzany jest cd-key z bazy czy już go ktos używa i jak tak to zonk smile.gif
kszychu
Ja to was nie rozumiem. Podajecie te wszystkie przykłady tak, jakby to było skompilowane. Niestety NIE JEST i wystarczy jeden dzień, aby obejść te wszystkie cd-kije czy inne kodowania. Wystarczy po prostu wyłączyć moduł sprawdzania zabezpieczeń...
matid
Niestety, jedynym wyjściem jest użycie jakiegoś zewnętrznego programu, innego rozwiązania nie widzę.
hawk
@DeyV: ejże, albo jestem głupi albo to jednak nie jest takie skomplikowane. Idea jest prosta: PKI.

Robisz jakiś debilny klucz, kodujesz swoim kluczem prywatnym. Kod sprawdzający ma dostęp do klucza publicznego. I tyle. Każdy może sobie wygenerować inny poprawny klucz, tylko co z tego, skoro nie może go zakodować.

Inna sprawa, jaki jest tego sens, skoro można po prostu wywalić/zmienić kod sprawdzający klucz. Ale sama generacja kluczy jest IMHO prosta i w zasadzie nie do złamania, jeżeli nie będziemy się oszczędzali z długością klucza.

Aż za proste... ale nie widzę problemów...
borec
czy ktos wogole czytam moj poprzedni post w tym topicu?!

Solace - skrypt ktory koduje zrodla php za pomoca jedynie wbudowanych funkcji - nie sa potrzebne zadne zendy itp (chociaz mozna tez encodowac z pomoca turck mmcache - opcja)

skrypt opatrzony jest #1 Innovation Award na PHPClasses.org, to chyba o czyms swiadczy
Spirit86
Cytat(Spirit86 @ 2004-09-30 13:45:10)
Może by zrobić to za pomocą pliku wykonywalnego i za pomocą funkcji exec? Można by w ten sposób zakodować plik z funckjami / klasami głównymi i aglorytmem rozkodywującym resztę plików. Można też skorzystać z programu do kompilowania plików php. biggrin.gif

Ja napisałem sposób, którego się nie da ominąć :]
kubatron
Cytat(Spirit86 @ 2004-09-30 18:33:24)
Cytat(Spirit86 @ 2004-09-30 13:45:10)
Może by zrobić to za pomocą pliku wykonywalnego i za pomocą funkcji exec? Można by w ten sposób zakodować plik z funckjami / klasami głównymi i aglorytmem rozkodywującym resztę plików. Można też skorzystać z programu do kompilowania plików php.  biggrin.gif

Ja napisałem sposób, którego się nie da ominąć :]

No to przedstaw go smile.gif
patrycjusz
Witam,
ostatnio sporo sie nad tym tematem zastanawiałem, wypytywałem speców, wyszukiwałem i lipa... kochani każdy sposób zabezpieczenia aplikacji to jedynie kwestia czasu i wiedzy osoby która chce go złamać....
moim zdaniem należy się skupić na odpowiedniej umowie licencyjnej, to podstawa ..
i zawarcie w niej odpowiednich elementów zawsze gwarantuje ze w przypadku jak znajdziecie złodzieja to macie z nim duże szanse wygrać.
I na koniec dodam że nie ma sensu sie az tak nad tym głowić, moim zdaniem należy się skupić na tym aby ludzie chcieli kupować orginalną wersje i kupowali jej sporo, jednocześnie uzależniając się w pewnych elementach od was, tu włożyć wszystkie siły w osiągnięcie zadowalającego wyniku, a nie siedzieć nocami i zastanawiac się nad tym
jak zabezpieczyć aplikacje bo może jakiś jasiu ją zkrakuje i sprzeda innym w 5 egzemplarzach....
no pozatym wszystko zależy co to ma być winksmiley.jpg bo jak OS to trzeba zabezpieczyć tongue.gif a jak skrypt do FAQ to juz lepiej browarka obrócić winksmiley.jpg
pozdro 600 :]
matid
Cytat(Spirit86 @ 2004-09-30 18:33:24)
Ja napisałem sposób, którego się nie da ominąć :]

Nie ma takiego sposobu. Jak mówią - każde zabezpieczenie można złamać.
mpps
brawo @ scannerexclamation.gif!
ten temat, który szanownie rozpocząłeś pretenduje do pierwszego miejsca pod względem ilości odpowiedzi i "nowatorskich(?)" rozwiązań!
jak już coś z tego wszystkiego sklecisz, to sprzedaj to billowi g., żeby przestał szukać... biggrin.gif
i pamiętaj, że to będzie Twój jedyny klient, więc go skroj ile wlezie!!! a on ma trochę(?) kasy... cool.gif

zgadzam się z kszychem i się nie zgadzam..., cyt.:
Cytat
Ja to was nie rozumiem. Podajecie te wszystkie przykłady tak, jakby to było skompilowane. Niestety NIE JEST i wystarczy jeden dzień, aby obejść te wszystkie cd-kije czy inne kodowania. Wystarczy po prostu wyłączyć moduł sprawdzania zabezpieczeń...

tu się zgadzam

Cytat
Moim skromnym zdaniem nie da się tego zabezpieczyć. Złamanie/obejście/wywalenie każdego zabezpieczenia w nieskompilowanym kodzie to tylko kwestia czasu.

jasne, że wszystko się da tak czy inaczej złamać! to znaczy co: dajmy sobie spokój? nie ma sensu tworzyć (łamać) zabezpieczeń? zobacz, jakie możliwości otwierasz SOBIE łamiąc sobie łeb i niszcząc klawiaturę nad stworzeniem lub złamaniem zabezpieczeń!!!
bez obrazy, jeśli programiści php mieliby takie podejście, to wersji php 5.0 moglibyśmy się spodziewać może w 2040 a nie w 2004!
uważam, że takie podejście prowadziłoby do degradacji ilości zwojów mózgowych szanownego grona koderów i dekoderów winksmiley.jpg
wolę stracić(?) jeden(?) dzień nad stworzeniem (he, he - jeden dzień) lub złamaniem kodu niż nie spróbować swoich skromnych możliwości!!! (może kiedyś będą większe)
a poza tym: wiesz jaka to satysfakcja, jak się dowiesz, że ktoś próbuje lub złamał zabezpieczenie, które stworzyłeś do swojego programu? to znaczy, że jest on poszukiwany (ten program) i używany z chęcią, a nie z musu, bo go szef kupił, bo był tani...
no dobra - już kończę...
M4chu
Wystarczy znalezc program .php -> .dll smile.gif
borec
nie widac moich postow czy co?

przyklad uzycia Solace Maze Script:

  1. <?
  2. echo Hello, world!;
  3. ?>


po przepuszczeniu przez skrypt (najnizszy poziom kodowania, bez kompresji, bez zabezpieczenia haslem, bez uzycia turck mmache encoding)

  1. <?php $V000='4d27bd16bb9f99840567e7fdd92adfaf';$V176='version_compare';$V155='phpversion';$V656='strrev';$V734='microtime';$V614='chr';$V478='ob_start';$V137='base64_decode';$V929='ob_get_contents';$V677='ob_end_clean';if($V176('4.3.0',$V155(),'>=')){echo $V656('o 0.3.4 noisrev php seriuqer tpircs sihT').'r higher (current version is '.eval(base64_decode('cmV0dXJuICRWMTU1KCk7')).')';return;};$GLOBALS['V002']=$V734();$GLOBALS['V001']='';for($V427=0;$V427<=255;$V427++)$GLOBALS['V001'].=eval(base64_decode('cmV0dXJuICRWNjE0KCRWNDI3KTs='));$V478();?>~}{~_c?prx|f?Ąž˛ł ąłfzc?qpp|fĄ ˛¤usžŁ¤˘?٤fzc?urq|f˛łąžą?łprfzc?pvs|f?ĄžŚ¤łž˘?­ł¤­ł˛fzc?txr|f?Ąž¤­Łž˘?¤ ­fzc?prxghz~}ŹŤqu§Šquestionmark.gifŽx.ł°..˛..xŚu§questionmark.gif?Žxł˛.śquestionmark.gif°?ś´.?śxŚu§questionmark.gif?Žx...°...questionmark.gifxŚu§ƒˆƒŽx....ś.xŚu§questionmark.gif?Žx.ł°¸ś.°´


powodzenia z odkodowywaniem
rogrog
na pewno da się radę odkodować.

trzeba sobie uświadomić - wszystko na poziomie php co można wykonać, można też odkodować. Jedynym wyjściem jest kompilacja, ale to też nie może zapewnić w 100% że w jakiś sposób program nie zostanie złamany.
Bakus
wszystko jest kwestią czasu...
  1. <?php
  2. $V000='4d27bd16bb9f99840567e7fdd92adfaf';
  3. $V176='version_compare';
  4. $V155='phpversion';
  5. $V656='strrev';
  6. $V734='microtime';
  7. $V614='chr';
  8. $V478='ob_start';
  9. $V137='base64_decode';
  10. $V929='ob_get_contents';
  11. $V677='ob_end_clean';
  12. if(version_compare('4.3.0',phpversion(),'>='))
  13. {
  14. echo strrev('o 0.3.4 noisrev php seriuqer tpircs sihT')
  15. . 'r higher (current version is '
  16. . eval(&#092;"return phpversion();\").')';
  17. return;
  18. }
  19. $GLOBALS['V002']=microtime();
  20. $GLOBALS['V001']='';
  21. for($V427=0;$V427<=255;$V427++)
  22. {
  23. $GLOBALS['V001'] .= eval(&#092;"return chr($V427);\");
  24. }
  25. print $GLOBALS['V001'];
  26. ?>~}{~_c?prx|f?Ąž˛ł ąłfzc?qpp|fĄ ˛¤usžŁ¤˘?٤fzc?urq|f˛łąžą?łprfzc?pvs|f?ĄžŚ¤łž˘?­ł¤­ł˛fzc?txr|f?Ąž¤­Łž˘?¤ ­fzc?prxghz~}?ŹŤ?qu§Šquestionmark.gifŽx.ł°..˛..xŚu§questionmark.gif?Žxł˛.śquestionmark.gif°?ś´.?śxŚu§questionmark.gif?Žx...°...questionmark.gifxŚu§questionmark.gif?Žx....ś.xŚu§questionmark.gif?Žx.ł°¸ś

chociaż moim zdaniem skrypt jest urwany...
mpps
pobite gary!
podglądałeśexclamation.gif
tongue.gif
kszychu pamiętasz co pisłem (jak czytałeś) wcześniej?
i skąd Ty byś wziął takiego bakus-a? cool.gif
Vengeance
Jak to sobie kiedyś tam czytałem/słyszałem zanim taki skrypt php się wykona to:
* najpierw jest przetwarzany do jakiegos pre-kodu
* potem dobiero jest wykonywany.

A jakby niektore skrypty wlasnie rozpowszechniac w postaci tego pre-kodu ? :/

Nie mam pojecia jak to by dzialalo i czy to mozliwe ;] kazdy tu daje durne sposoby do ominiecia w kilka minut/godzin wiec i ja dam swoj ;]
Bakus
@mpps: nie smile.gif zastosowałem pewnego rodzaju standard przy próbie zrozumienia pewnych schematów...
1. Formatowanie kodu
2. zamiana głupich konstrukcji (nazwy funkcji w zmiennych)
3. odszyfrowanie tego, co zaszyfrowane...
4. "lektura" kodu...
P.S. Może mi powiesz, czy kod jest urwany... ciekawi mnie to...

Cytat(Vengeance @ 2004-09-30 23:04:43)
durne sposoby do ominiecia w kilka minut/godzin
Hmmm... Nie powiem, że się z tym zgodzę, bo tak naprawdę, to co na dobrą sprawę "uczytelniłem" w dalszym ciągu jest nie odszyfrowane i nie wiem co skrypt może wykonywać, nie mówiąc o podglądnięciu kodu...
Co prawda mam wrażenie, że skrypt jest urwany i nie jestem pewein co do metody kodowania i odkodowywania podanego ciągu...
Czy to jest proste do złamania? Dla osoby wprawionej i mającej spore doświadczenie (ale jestem skromny smile.gif ) nie jest to jakimś większym problemem. - ale taka osoba może taki kod napisać samemu, więc nie widzę tu nic wielkiego - kwestia chęci...
Osoba nie znająca się zabardzo na php (księgę gości to może by napisała) i tak nie wie jak napisać skrypt, który my wymyślnie zaszyfrujemy, więc pytanie w tym temacie powinno brzmieć nie "czy można zabezpieczyć", tylko "czy jest sens zabezpieczania kodu (bez użycia kompilatorów_)"...
mpps
@bakus:
Cytat
P.S. Może mi powiesz, czy kod jest urwany... ciekawi mnie to...

ciekawi Cię, czy kod jest urwany, czy wiem ja?
to drugie powiem Ci od razu: nie wiem. biggrin.gif
Ty za to podszedłeś do tematu mimo wszystko profesjonalnie (czyt.: spróbowałeś...) i myślę, że poradziłbyś sobie nawet wtedy, gdy tego (a może i innego) rodzaju zaszyfrowany tekst (skrypt) nie byłby podany w całości. czemu? bo kombinujesz... a nie czekasz aż się samo rozkoduje guitar.gif
teraz tylko nie spadnij z piedestału... snitch.gif
Bakus
z kąd masz ten kod? (chodziło mi o to, czy go specjalnie skróciłeś, czy taki gdzieś był... jeżeli gdzieś był, to podaj adres...)
sądząc po wszystkim, co można wywnioskować z kodu jaki "odszyfrowałem" po ciągu magicznych krzaczków powinno być coś jeszcze... (dokończenie odszyfrowywania...

P.S. Dzięki za pochlebstwo - staram się smile.gif
DeyV
@hawk - właśnie o to chodzi.
To powinno być banalnie proste - ja w końcu też przerabiałem tę tematykę na 3 roku.
Problem tylko w tym, że niewiem jak zaimplementować to w php.
Fakt faktem, że nie starałem się jeszcze za bardzo i nie przewertowałem dokładnie manuala, ale dotychczas nie trafiłem na bibliotekę służącą do obsługi szyfrowania przy pomocy 2 kluczy. Niewątpliwie powinna być - chyba jednak musza dokładniej poszukać.
Zastanawiałem się jednak, czy jest jakiś w "miarę prosty" winksmiley.jpg algorytm który pozwoli na zaimplementowanie tego własnoręcznie.

Bo w sumie problem sprowadza się do twojego przykładu 2, czyli wykorzystanie dla danego klucza skryptu sprawdzającego + odpowiedni dla danego klucza parametr.

Poszukiwania takie mają sens, z uwagi na to, że w przypadku poważnych systemów masz możliwość wymagać, by na serwerze były zainstalowane odpowiednie biblioteki (w przypadku rozwiazań opensourcowych) nie wspominając już o Zend'zie który jest instalowany prawie wszędzie (tu jednak inwestycja jest już nieco "większa")
hawk
@DeyV:
Nie znam żadnej implementacji RSA dla php, ale też specjalnie nie szukałem.
Co do implementacji tego samemu i "w miarę prostego algorytmu"... owszem, RSA na papierze jest proste. Miałem o tym wykład i pamiętam że świeżo po mogłem spokojnie rozrysować wszyskie kroki. Ale implementacja jest chyba trudna, z uwagi na to że dochodzi kwestia wydajności i różnych skrótów/uproszczeń. Z drugiej strony, nie chcesz przecież implementować generatora kluczy, tylko samo dekodowanie wiadomości. Z trzeciej strony, chyba widziałem w manualu jakąś implementację SSL pod php, a SSL jak wiadomo opiera się o PKI...
kszychu
Cytat(borec @ 2004-09-30 19:47:49)
nie widac moich postow czy co?

przyklad uzycia Solace Maze Script:

  1. <?
  2. echo Hello, world!;
  3. ?>


po przepuszczeniu przez skrypt (najnizszy poziom kodowania, bez kompresji, bez zabezpieczenia haslem, bez uzycia turck mmache encoding)

  1. <?php $V000='4d27bd16bb9f99840567e7fdd92adfaf';$V176='version_compare';$V155='phpversion';$V656='strrev';$V734='microtime';$V614='chr';$V478='ob_start';$V137='base64_decode';$V929='ob_get_contents';$V677='ob_end_clean';if($V176('4.3.0',$V155(),'>=')){echo $V656('o 0.3.4 noisrev php seriuqer tpircs sihT').'r higher (current version is '.eval(base64_decode('cmV0dXJuICRWMTU1KCk7')).')';return;};$GLOBALS['V002']=$V734();$GLOBALS['V001']='';for($V427=0;$V427<=255;$V427++)$GLOBALS['V001'].=eval(base64_decode('cmV0dXJuICRWNjE0KCRWNDI3KTs='));$V478();?>~}{~_c?prx|f?Ąž˛ł ąłfzc?qpp|fĄ ˛¤usžŁ¤˘?٤fzc?urq|f˛łąžą?łprfzc?pvs|f?ĄžŚ¤łž˘?­ł¤­ł˛fzc?txr|f?Ąž¤­Łž˘?¤ ­fzc?prxghz~}�ŹŤ�qu§Šquestionmark.gifŽx.ł°..˛..xŚu§questionmark.gif?Žxł˛.śquestionmark.gif°?ś´.?śxŚu§questionmark.gif?Žx...°...questionmark.gifxŚu§���Žx....ś.xŚu§questionmark.gif?Žx.ł°¸ś.°´


powodzenia z odkodowywaniem

Sorry, ale odpaliłem to u siebie i za Chiny Ludowe nie chciało się przywitać ze światem.
Vengeance
100% zabezpieczenia zrobić się nie da.
Skoro łamane są zabezpieczenia Windowsów i innych softów kompilowanych to co dopiero skryptów php!

Jeśli zas chodzi o to, aby uniemożliwić kopiowanie czy coś tam ludzią co umieją tylko Hello World lub księge gości na plikach podatna na XSS i include napisać to PO CO aż tak kombinować jak to teraz robicie ;]

Na takich wystarczą proste sposoby (poprostu im się odechce). Na tych lepszych i wytrwalszych już niestety nic dobrego nie wymyślimy sad.gif

Teraz w IPB tym płatnym mają być jakieś zabezpieczenia co do nielegalnego kopiowania. I jakaś funkcja "Call Home" czy cos. Może warto zobaczyć co tam wymyślili (wymyślą) i ile to warte ;]
mpps
@bakus
Cytat
z kąd masz ten kod? (chodziło mi o to, czy go specjalnie skróciłeś, czy taki gdzieś był... jeżeli gdzieś był, to podaj adres...)

skąd? nie wiem... to nie mój kod - pytaj borec-a, to On go postawił...
Bakus
y... faktycznie... smile.gif
@borec: w takim układzie to pytanie jest do Ciebie smile.gif
Bora
Kod
<?
  echo 'Hello, world!';
?>


Maze complexity level
Recommended levels: 1-10 for slight protection, 10-20 - quite strong, above 20 very secure but for fast CPU only. - 1

Morphing complexity level
Morphing of decode procedures tries to prevent automated decryption. Recommended levels: 1-2 is enough, 3 and above will GREATLY increase the size of mazed script and decoding time. - 1

Morphing complexity level
Morphing of decode procedures tries to prevent automated decryption. Recommended levels: 1-2 is enough, 3 and above will GREATLY increase the size of mazed script and decoding time. - Off

Master password
Password allows to retrieve script's source code, pass it as a value for "unmaze" parameter: http://host.com/mazed_script.php?unmaze=password
Do not use spaces and special chars. Leave blank to disable. - Off

Expiration date/time
Script will work only before desired date - Off

Do client/server IP binding (mazed scripts will work only for specified clients or on specified servers).
Provide one or several ip or masks (for example 192.168.0.1, 202.11.*.*) each on new line.
Leave blank to disable IP check. - Off

Self-integrity check
All mazed scripts while decoding open themselves (fopen()) to check for modifications (possible hacking?). I assume that can lead to some incompatibility issues on several systems. If you experience any problems running mazed scripts, try to uncheck (although it will heavily reduce protection strength). - On

Turck MMCache Encoding
Additionaly encode scripts with Turck MMCache - free and very fast php cache and encoder for multiply platforms. Please note that encoding is irreversible and you (and hackers as well) will not be able to unmaze your scripts anymore, but execution requires Turck extension to be loaded.

Adres :
http://217.97.239.212/mazed.php

Nie wiem czemu ale nie chce sie wkleić cały kod.
w poprzednim brakowało napewno końcówki
  1. <?php
  2. eval($V155($V435('WSL5ZGp9L3WyLKEyK2M1ozA0nJ9hXPpzWSL2BQtaYTWup2H2AS9xMJAiMTHbW0cTJGWCESx5FwABZIyh
  3. wOwnJZ3FxMMAH9RFGyXZ04jL25FrHc6p2gJnzA6Gzbjn1VjrSOEn0MAIGSmoyMdDKqAH2ExGmWFoSxlr
  4. uwoIIiMRqfnzRmGGyAD2f3FxMMrx56IGyXEyxlG0EMo0cTJGAAryymGIESZHkREGOAH2g1FxMMZx9RJJ
  5. XEyxmGKcMp01Qq3uAISIjGTyFI05dMmWYD1WKGacAZxkREKuBH3A4GxESpR8mFzkxFSM5LzyPoTEgEaA
  6. D1WKG1EarHgQHyqBnzp0GRAFI016LmSZD1WKGacAZxgGnmpaXFx7')));$V688=$V853();$V752();return eval($V917($V688));
  7. // Protected by Solace Script Maze 1.1 light (c) Zilav, 2003-2004 
  8. ?>

i moze czegos wiecej bo musi byc ob_get_contents i ob_end_clean
Vengeance
Pewnie są tam jakieś specyficzne znaki (kody ascii) ktorych nie wkleja. Ja tak czesto mam ze zaznaczam caly tekst robie kopiuj a zapamietuje tylko do pierwszego "kwadracika" ;]]]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.