Eliminați restricțiile de la mobilecms și eliminați drepturile de autor

Recent, a început să scrie un serviciu wap-cms pentru mai mulți utilizatori, adică CMS sa concentrat pe crearea de site-uri mobile, dar nu necesită proprietarului nici o cunoaștere în programare. Această soluție este în afara casetei, de exemplu ca UCOZ chiar sub wap.







Bineînțeles, am decis să studiez în prealabil soluții gata făcute, căutam altceva decât toate motoarele cunoscute de rahat, wap-motor, johnCMS, DCMS. Am dat peste un astfel de proiect interesant și tânăr MobileCMS. Desigur, odată ce a fost interesant să se uite codul, cu atât mai mult că descrierile au fost promițătoare: codul bazat pe OEP HMVC, module de interfață web admin, modularitatea, instalare și gestionare din zona de administrare, open source.

O dată voi spune că la momentul acestei scrieri am studiat MobileCMS v1.5.
Ei bine, vom încerca să pună pe / localhost / și a vedea imediat eroarea: „Serverul nu este setat ionCube Loader, contactați asistența tehnică pentru furnizorul de servicii de găzduire pentru a instala modulul“

A terminat instalarea, fără probleme. Încercarea de a deschide site-ul și a vedea eroarea:
Eroare site-ului: fișier Q: acasă \ localhost \ \ www \ MobileCMS \ biblioteci \ template.php necesită ioncube_loader_win_5.2.dll ionCube PHP Loader pentru a fi instalate de către operatorul site-ului. Dacă sunteți operatorul site-ului web, vă rugăm să folosiți Expertul de încărcare ionCube pentru a vă ajuta cu instalarea.
Deci așa că .. acolo este nevoie de ionCube, fișierul "libraries / template.php" este codificat. După ce ați citit informațiile de pe site-ul dezvoltatorului, sa dovedit că sistemul are o licență plătită (99wmr :)) care permite eliminarea automată a drepturilor de autor MobileCMS din toate paginile site-ului. Și citirea informațiilor despre cumpărarea unei licențe a spus: "De ceva timp, drepturile de autor vor fi eliminate automat". Deci, sistemul va elimina automat drepturile de autor este înregistrată în motor, sau chiar mai rău, pot avea scripturi negru curs de dezvoltator, cu care se poate elimina de la distanță dreptul de autor (nu doar pentru fișierul template.php asa codificat).

Sparge toate sursele, și nu a găsit nimic în ele, care este asociat cu licența, precum și uita la șabloanele de cod footer.tpl nu am găsit în ele codul, în cazul în care s-ar putea lua linia „Powered by MobileCMS“, dar este încă acolo.

Ceea ce am întins narațiunea, mă duc direct la subiect. Pentru a rula CMS a trebuit să o punem încă pe server unde există ionCube și să vedem ce se va întâmpla după lansare.
1. Am observat apariția a 2 fișiere în folder / cache / file_cache /, aceasta
/ cache / file_cache / b / b81755a649ad357a44526821a64432a0
și
/ cache / file_cache / f / f7c69042a56ced3e29af3ce2a911d68a
Al doilea fișier a fost o matrice serializată normală cu memoria cache a șablonului de pagină principală. Dar primul dosar a fost foarte interesant. Vedeți ce este în el

Cel mai attentive've observat, probabil, deja că aici există o valoare [licențiat] => 0, si da, trebuie să spun, dacă înlocuiți „0“ la „1“ drepturile de autor dispar, dar nu întotdeauna, pentru că După un timp (10800 secunde = 3 ore), fișierul va fi restabilit din nou, iar drepturile de autor vor fi returnate site-ului. Să încercăm să rezolvăm această problemă.

Metoda # 2
Totul este exact la fel ca în metoda # 1, dar în loc de a seta CHMOD, putem modifica timpul de modificare a fișierului. Acest lucru se poate face prin intermediul funcției touch () PHP ca aceasta. Prin aceasta expunem timpul de modificare în viitorul îndepărtat, spunând că fișierul a fost editat ultima dată în 2099. De ce? Am spus că fișierul este restabilit la fiecare 3 ore? Deci 3:00, de data aceasta în fișierul cache de viață, și examinarea clasa sursă de cache, putem vedea că cache-ul este curățat pe baza mtime date (timpul de modificare) punerea că, în viitor, vom face un fișier veșnic viu în memoria cache.







returnează FALSE;
>
?>
Și apropo, deși template.php fișier este codificat, putem afla numele cheie pentru care o licență este în cache, această linie „license_data“, adică MD5 ( „license_data“) = b81755a649ad357a44526821a64432a0, astfel încât să putem pune handler, o excepție de la aceasta, mai degrabă decât MD5-string.

funcția parse ($ filename. $ params = array ())
dacă (! strstr ($ filename. 'tpl'))
$ nume fișier. = '.tpl';
>

foreach ($ params ca $ var => $ var_value)
$ this -> var [$ var] = $ var_value;
>

dacă (strpos ($ this -> theme, 'admin') === 0)
$ alternative_theme = 'admin';
>
altfel
$ alternative_theme = 'implicit';
>

în cazul în care (.... file_exists ( 'module /' ROOT ROUTE_MODULE '/ opinii /' $ acest lucru - ..> tema '/' $ filename))
$ this -> template_file = ROOT. "module /". ROUTE_MODULE. '/ views /'. $ this -> temă. '/'. nume fișier;
>
altfel
dacă (fișier_există (ROOT. 'modules /' ROUTE_MODULE. '/ views /'. $ alternative_theme. '/'. $ filename))
$ this -> template_file = ROOT. "module /". ROUTE_MODULE. '/ views /'. $ alternative_theme. '/'. nume fișier;
>
altfel
dacă (fișier_există (ROOT. '/ views /'. $ this -> theme. '/'. $ filename))
$ this -> template_file = ROOT. '/ views /'. $ this -> temă. '/'. nume fișier;
>
altfel
ieșire ("Fișier “. $ filename. ' nu este un șablon sau nu a fost găsit. " );
>
>
>

extract ($ this -> vars, EXTR_REFS);
ob_start ();
include $ this -> template_file;
$ page_content = $ acest -> add_code (ob_get_clean ());
returnați $ page_content;
>

Afișare funcție ($ numele fișierului $ params = array ())
echo $ this -> parsează (numele fișierului $ params);
>

atribuirea funcției ($ param1, $ param2 = NULL)
dacă ((! $ param2 ȘI is_array ($ param1)))
foreach ($ param1 ca $ cheie => valoarea $)
$ this -> vars [$ cheie] = valoarea $;
>

dacă ($ param2)
$ this -> var [$ param1] = $ param2;
returnează TRUE;
>

funcția add_code (bufferul $)
dacă ((! $ this -> code_added și strpos ($ this -> theme, 'admin')! == 0))
dacă (! class_exists ('File_Cache'))
a_import ('libraries / file_cache');
>

dacă (gol ($ license_data))
$ license_data = array ('licențiat' => 0. 'template' => ''. 'license_place' =>“. 'license_code' => '');
$ license_data = serialize ($ licență_dată);
>

fișierul $ file_cache -> set ($ cache_key. $ license_data);
$ license_data = neserializează ($ license_data);
>

dacă (! $ license_data ['licensed'])
dacă (strstr ($ buffer. $ license_data ['license_place'])))
$ replace = str_replace (''. $ licență_data ['license_code'], $ license_data ['template']);
$ replace = str_replace (''. $ licență_data ['license_place'], $ replace);
$ buffer = str_ireplace ($ license_data ['license_place'], $ înlocuire $ buffer. $ count_added);
dacă (0 <$count_added )
$ this -> code_added = 1;
>
>
>
altfel
$ this -> code_added = 1;
>
>

Modul de eliminare a drepturilor de autor este simplu și este de a edita metoda add_code (). dar nu voi da instrucțiuni cu privire la această operație, pentru că nu este greu de înțeles și pe tine însuți.

Actualizat. Reflecții.
Poate că sunt cu siguranță paranoic și ceea ce scriu mai jos este o prostie, dar nu pot să spun faptele. Dacă încercați să analizați sistemul de licențiere al acestui CMS, se pare că dezvoltatorul poate încorpora orice cod în toate paginile site-ului care o utilizează. Ce ar putea fi asta?

În primul rând. puteți construi un script malware Java, există un zbor foarte mare pentru fantezie (redirector, cookie sniffer, trojan-loader).

1. Mulți controlori vor fi închise pentru a îmbunătăți protecția? Protecție Zend sau ionCube care este decodificat în 15 secunde din orice număr de fișiere. Este dovedit pe un exemplu template.php
2. Site-urile vor fi șterse pentru încălcarea licenței. Da, punctul 7 din auto-eliminarea drepturilor de autor spargem, care nu e doar cuvântul în sine mobilecms orice acord, nu au forță juridică, având în vedere că nicăieri nu am luat acorduri. Și cu excepția cazului în care hosterul cel mai stupid elimină site-ul (care îi aduce bani (hoster)) doar pentru că dezvoltatorul de telefoane mobile a strigat că cineva a luat drepturi de autor = D. Și noi nu patch-uri nimic și nu schimba codul sursă al scenariului, puneți CHMOD unde aveți nevoie și este în pălărie;)
3. Amenințări personale pentru mine? Sunt flatat)), puteți începe să mișcați blob-urile mele și mă angajez să public aici toate versiunile decodate ale MobileCMS începând de la 1.5.







Trimiteți-le prietenilor: