Pobierając motyw do WordPressa z podejrzanych źródeł powinniśmy liczyć się z niemiłymi niespodziankami. Jedną z nich może być zakodowany fragment kodu, który bez naszej wiedzy przekazuje dalej poufne dane. Warto wiedzieć jak zidentyfikować taki fragment, jak go rozkodować i wyplewić ewentualne chwasty.
Feralny motyw
Zgłosił się do mnie ostatnio jeden z czytelników strony wraz z prośbą o pomoc w odszukaniu pewnej frazy w motywie, którą chciał przetłumaczyć. Okazało się, że sam nie mógł tego znaleźć, ponieważ fragment, w którym się znajdowała był zakodowany.
Motywem był GamersCosmos, który został pobrany ze strony Free WordPress Theme Album (niestety pierwotna lokalizacja nie jest już dostępna).
Identyfikacja zakodowanego fragmentu
Osoby, które próbują ukryć część kodu, wykorzystują do tego najczęściej dwie funkcje PHP – base_64_decode oraz eval. Trzeba więc sprawdzić czy przypadkiem nie znajdują się one w plikach motywu. Można do tego użyć specjalnego programu, który wyszukuje dany ciąg znaków. Osobiście używam do tego typu czynności starego, dobrego Agenta Ransacka.
Program znalazł wywołanie obu wspomnianych funkcji w pliku footer.php:
$_F=__FILE__;$_X='Pz48ZDR2IDRkPSJiMnR0Mm0tYyI+PC9kNHY+PC9kNHY+PCEtLSAjYzJudDE0bjVyIC0tPg0KDQo8ZDR2IDRkPSJmMjJ0NXIiPjxkNHYgY2wxc3M9IndyMXAgY2w1MXJmNHgiPg0KCTxkNHYgY2wxc3M9ImJsMmNrIGY0cnN0IiA0ZD0icjVjNW50LTVudHI0NXMiPg0KCQk8aGEgY2wxc3M9ImJsMmNrLXQ0dGw1Ij5SNWM1bnQgUDJzdHM8L2hhPg0KCQk8M2w+DQoJCQk8P3BocCBtZHZfcjVjNW50X3Ayc3RzKGkpID8+DQoJCTwvM2w+DQoJPC9kNHY+DQoNCgk8ZDR2IGNsMXNzPSJibDJjayBsMXN0IiA0ZD0icjVjNW50LWMybW01bnRzIj4NCgkJPGhhIGNsMXNzPSJibDJjay10NHRsNSI+UjVjNW50IEMybW01bnRzPC9oYT4NCgkJPDNsPg0KCQkJPD9waHAgc3JjX3M0bXBsNV9yNWM1bnRfYzJtbTVudHMoaSkgPz4NCgkJPC8zbD4NCgk8L2Q0dj4NCg0KCTxkNHYgNGQ9ImYyMnQ1ci1sNG5rIj4NCgkJPHA+QzJweXI0Z2h0ICZjMnB5OyA8P3BocCA1Y2gyIGQxdDUoJ1knKTs/PiA8MSBocjVmPSI8P3BocA0KYmwyZzRuZjIoJ3M0dDUzcmwnKTsgPz4iIHQ0dGw1PSI8P3BocCBibDJnNG5mMignbjFtNScpOyA/PiI+PD9waHANCmJsMmc0bmYyKCduMW01Jyk7ID8+PC8xPiAtIDw/cGhwIGJsMmc0bmYyKCdkNXNjcjRwdDQybicpOyA/Pi48YnIvPg0KVzViIHM0dDUgcDJ3NXI1ZCBieSA8MSBocjVmPSJodHRwOi8vdzJyZHByNXNzLjJyZyI+VzJyZFByNXNzIENNUzwvMT4NCjFuZCAxIGZyNTUgdzJyZHByNXNzIHRoNW01IGQ1czRnbjVkIGJ5IDwxDQpocjVmPSJodHRwOi8vbW0yaDN0LmMybS9zMmM0MWwtZzFtNXMiPkYxYzViMjJrIEcxbTVzPC8xPi4NClNwMm5zMnI1ZCBieSA8MSBocjVmPSJodHRwOi8vbW0yaDN0LmMybS8iPk1NT1JQR3M8LzE+LCA8MQ0KaHI1Zj0iaHR0cDovL3d3dy5oMnN0di5jMm0iPlZQUyBIMnN0NG5nPC8xPiAxbmQgPDEgDQoNCmhyNWY9Imh0dHA6Ly93d3cuYzRydDV4aDJzdDRuZy5jMm0vIj5XNWJzNHQ1IEgyc3Q0bmc8LzE+PC9wPg0KCTwvZDR2PjwhLS0gL2YyMnQ1ci1sNG5rIC0tPg0KPC9kNHY+PC9kNHY+PCEtLSAjZjIydDVyIC0tPg0KPD9waHAgd3BfZjIydDVyKCk7ID8+DQo8L2IyZHk+DQo8L2h0bWw+';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));
Dekodowanie czyli co ktoś chciał przed nami ukryć
Po rozbiciu kodu na oddzielne wiersze otrzymamy:
$_F=__FILE__;
$_X='Pz48ZDR2IDRkPSJiMnR0Mm0tYyI+PC9kNHY+PC9kNHY+PCEtLSAjYzJudDE0bjVyIC0tPg0KDQo8ZDR2IDRkPSJmMjJ0NXIiPjxkNHYgY2wxc3M9IndyMXAgY2w1MXJmNHgiPg0KCTxkNHYgY2wxc3M9ImJsMmNrIGY0cnN0IiA0ZD0icjVjNW50LTVudHI0NXMiPg0KCQk8aGEgY2wxc3M9ImJsMmNrLXQ0dGw1Ij5SNWM1bnQgUDJzdHM8L2hhPg0KCQk8M2w+DQoJCQk8P3BocCBtZHZfcjVjNW50X3Ayc3RzKGkpID8+DQoJCTwvM2w+DQoJPC9kNHY+DQoNCgk8ZDR2IGNsMXNzPSJibDJjayBsMXN0IiA0ZD0icjVjNW50LWMybW01bnRzIj4NCgkJPGhhIGNsMXNzPSJibDJjay10NHRsNSI+UjVjNW50IEMybW01bnRzPC9oYT4NCgkJPDNsPg0KCQkJPD9waHAgc3JjX3M0bXBsNV9yNWM1bnRfYzJtbTVudHMoaSkgPz4NCgkJPC8zbD4NCgk8L2Q0dj4NCg0KCTxkNHYgNGQ9ImYyMnQ1ci1sNG5rIj4NCgkJPHA+QzJweXI0Z2h0ICZjMnB5OyA8P3BocCA1Y2gyIGQxdDUoJ1knKTs/PiA8MSBocjVmPSI8P3BocA0KYmwyZzRuZjIoJ3M0dDUzcmwnKTsgPz4iIHQ0dGw1PSI8P3BocCBibDJnNG5mMignbjFtNScpOyA/PiI+PD9waHANCmJsMmc0bmYyKCduMW01Jyk7ID8+PC8xPiAtIDw/cGhwIGJsMmc0bmYyKCdkNXNjcjRwdDQybicpOyA/Pi48YnIvPg0KVzViIHM0dDUgcDJ3NXI1ZCBieSA8MSBocjVmPSJodHRwOi8vdzJyZHByNXNzLjJyZyI+VzJyZFByNXNzIENNUzwvMT4NCjFuZCAxIGZyNTUgdzJyZHByNXNzIHRoNW01IGQ1czRnbjVkIGJ5IDwxDQpocjVmPSJodHRwOi8vbW0yaDN0LmMybS9zMmM0MWwtZzFtNXMiPkYxYzViMjJrIEcxbTVzPC8xPi4NClNwMm5zMnI1ZCBieSA8MSBocjVmPSJodHRwOi8vbW0yaDN0LmMybS8iPk1NT1JQR3M8LzE+LCA8MQ0KaHI1Zj0iaHR0cDovL3d3dy5oMnN0di5jMm0iPlZQUyBIMnN0NG5nPC8xPiAxbmQgPDEgDQoNCmhyNWY9Imh0dHA6Ly93d3cuYzRydDV4aDJzdDRuZy5jMm0vIj5XNWJzNHQ1IEgyc3Q0bmc8LzE+PC9wPg0KCTwvZDR2PjwhLS0gL2YyMnQ1ci1sNG5rIC0tPg0KPC9kNHY+PC9kNHY+PCEtLSAjZjIydDVyIC0tPg0KPD9waHAgd3BfZjIydDVyKCk7ID8+DQo8L2IyZHk+DQo8L2h0bWw+';
eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));
Uwagę skupimy na ostatnim wierszu. Ciąg znaków znajdujący się w cudzysłowie przerzucimy do narzędzia dekodującego. W rezultacie otrzymamy następujący kod:
$_X=base64_decode($_X);
$_X=strtr($_X,'123456aouie','aouie123456');
$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);
eval($_R);
$_R=0;
$_X=0;
Jak widać pierwszy wiersz to znowu dekodowanie:
?><d4v 4d="b2tt2m-c"></d4v></d4v><!-- #c2nt14n5r -->
<d4v 4d="f22t5r"><d4v cl1ss="wr1p cl51rf4x">
<d4v cl1ss="bl2ck f4rst" 4d="r5c5nt-5ntr45s">
<ha cl1ss="bl2ck-t4tl5">R5c5nt P2sts</ha>
<3l>
<?php mdv_r5c5nt_p2sts(i) ?>
</3l>
</d4v>
<d4v cl1ss="bl2ck l1st" 4d="r5c5nt-c2mm5nts">
<ha cl1ss="bl2ck-t4tl5">R5c5nt C2mm5nts</ha>
<3l>
<?php src_s4mpl5_r5c5nt_c2mm5nts(i) ?>
</3l>
</d4v>
<d4v 4d="f22t5r-l4nk">
<p>C2pyr4ght &c2py; <?php 5ch2 d1t5('Y');?> <1 hr5f="<?php
bl2g4nf2('s4t53rl'); ?>" t4tl5="<?php bl2g4nf2('n1m5'); ?>"><?php
bl2g4nf2('n1m5'); ?></1> - <?php bl2g4nf2('d5scr4pt42n'); ?>.<br/>
W5b s4t5 p2w5r5d by <1 hr5f="http://w2rdpr5ss.2rg">W2rdPr5ss CMS</1>
1nd 1 fr55 w2rdpr5ss th5m5 d5s4gn5d by <1
hr5f="http://mm2h3t.c2m/s2c41l-g1m5s">F1c5b22k G1m5s</1>.
Sp2ns2r5d by <1 hr5f="http://mm2h3t.c2m/">MMORPGs</1>, <1
hr5f="http://www.h2stv.c2m">VPS H2st4ng</1> 1nd <1
hr5f="http://www.c4rt5xh2st4ng.c2m/">W5bs4t5 H2st4ng</1></p>
</d4v><!-- /f22t5r-l4nk -->
</d4v></d4v><!-- #f22t5r -->
<?php wp_f22t5r(); ?>
</b2dy>
</html>
Natomiast drugi wiersz to podmiana znaków (w komentarzach znajduje się także obszerniejszy opis tego kroku):
?><div id="bottom-c"></div></div><!-- #container -->
<div id="footer"><div class="wrap clearfix">
<div class="block first" id="recent-entries">
<h2 class="block-title">Recent Posts</h2>
<ul>
<?php mdv_recent_posts(5) ?>
</ul>
</div>
<div class="block last" id="recent-comments">
<h2 class="block-title">Recent Comments</h2>
<ul>
<?php src_simple_recent_comments(5) ?>
</ul>
</div>
<div id="footer-link">
<p>Copyright © <?php echo date('Y');?> <a href="<?php
bloginfo('siteurl'); ?>" title="<?php bloginfo('name'); ?>"><?php
bloginfo('name'); ?></a> - <?php bloginfo('description'); ?>.<br/>
Web site powered by <a href="https://wordpress.org">WordPress CMS</a>
and a free wordpress theme designed by <a
href="http://mmohut.com/social-games">Facebook Games</a>.
Sponsored by <a href="http://mmohut.com/">MMORPGs</a>, <a
href="http://www.hostv.com">VPS Hosting</a> and <a
href="http://www.cirtexhosting.com/">Website Hosting</a></p>
</div><!-- /footer-link -->
</div></div><!-- #footer -->
<?php wp_footer(); ?>
</body>
</html>
Reszta kodu nie jest już istotna, ma na celu utrudnienie wyciągnięcia danych poza zakodowanym fragmentem.
Tym sposobem uzyskaliśmy czysty kod motywu. Widać jak na dłoni co ktoś chciał przed nami ukryć – kod HTML znajdujący się w bloku „footer-link” to po prostu spamerskie odnośniki do różnych stron internetowych. Wystarczy teraz usunąć zbędne odnośniki i zastąpić zakodowany fragment odkodowaną wersją.
Konkluzja czyli wnioski na przyszłość
Tym razem zagrożenie nie było duże, ale zakodowany fragment równie dobrze mógł wysyłać nasze hasło na ustalony adres e-mail. Dlatego też warto:
- Unikać podejrzanych stron udostępniających motywy. Najlepiej w nowe motywy zaopatrywać się z oficjalnego katalogu WordPressa lub bezpośrednio ze strony autora lub sklepu.
- Przed uruchomieniem motywu sprawdzić czy nie zawiera on podejrzanych rzeczy a w szczególności zakodowanych fragmentów. Warto też posłużyć się specjalnymi wtyczkami takimi jak Exploit Scanner.
- Nie skreślać motywu tylko dlatego, że posiada zakodowany fragment. W prosty sposób można go odkodować i usunąć niepotrzebne rzeczy. Nie ma też co obwiniać autora, bo to najczęściej dzieło osób trzecich.
- Standardowo – nie używać tego samego hasła do wielu kont tak aby w przypadku kradzieży ograniczyć ewentualne straty.
Czy Wam też zdarzyło się natrafić na motyw z zakodowanym fragmentem?
Komentarze
Ja kiedyś trafiłem na zakodowany fragment, ale siedział tam tylko link do strony autora skórki. Pewnie zakodował tylko po to, żeby nieuczciwi użytkownicy nie usuwali linka ze stopki :)
Ale sam byłem świadkiem tego, jak jedna koleżanka straciła swój cały blogowy dorobek przez taką skórkę. Oczywiście, jak to „blondynka”, przez kilka lat blogowania żadnego backupu nie robiła ;)
odpowiedzNo tak, warto też pamiętać o regularnie wykonywanej kopii bezpieczeństwa.
odpowiedzJa to zazwyczaj robiłem prościej, tj. lokalizowałem zakodowany element (praktycznie zawsze stopka), wyświetlałem szablon tak jak jest, kopiowałem gotowy kod HTML podmieniając nim zakodowane źródło w szablonie.
Taki kod mogę sobie już dowolnie edytować, choć oczywiście usuwać ze stopki autora itp. nie wypada :)
odpowiedzTak też można ale czasem (tak było w przypadku wspomnianego motywu) w zakodowanym fragmencie są też wywołania funkcji PHP (tutaj np. mdv_recent_posts i src_simple_recent_comments). Zwykły użytkownik raczej by nie doszedł do tego, że trzeba coś takiego akurat w danym miejscu wstawić więc musiałby się pogodzić z utratą części kodu lub funkcji.
odpowiedz@Kapsel,
Twój sposób jest chyba prostszy, sam go używam od dawna ;) Coś potrzebuje to nie muszę bawić się z PHP, bo w sumie tak czy tak będzie pokazywana stała treść i nic tutaj zmieniać się nie będzie, więc można bez problemów wklepać kod HTML. W Operze coś takiego jest wbudowane (PPM > Przegląd elementu), jak jest w innych to nie wiem (Chrome posiada coś takiego, ale trochę gorzej to wygląda moim zdaniem).
Co do tematu, to nigdy nie spotkałem czegoś takiego, ale z pewnością chciałbym coś takiego mieć w swojej skórce, jeśli będę ją kiedyś sprzedawał – umieściłbym tam jedynie link do mojej strony i nick autora :)
odpowiedzTemat rzeka, sama popełniłam podobny wpis jakiś czas temu.
Odnośnie licencji wymagającej pozostawienie linków w stopce, spotkałam się z opiniami, że taki zapis jest niezgodny z licencją jaką WordPress „narzuca” na szablony i wtyczki. Ale osobiście prawnikiem nie jestem, więc mogę tylko podpisać się pod radą, żeby darmowych szablonów szukać tylko w oficjalnym repozytorium.
@Kapsel
Metoda którą opisałeś jest w wielu przypadkach skuteczna, niemniej jednak można się na niej przejechać. Spotkałam kiedyś szablon, który po usunięciu spamerskich linków ze stopki wyświetlał odwiedzającym na stronie informację, że autor bloga ukradł szablon :)
Pozdrawiam!
odpowiedz@Ola – WordPress narzuca jedynie swoje zasady gry dla wtyczek i motywów wrzucanych do ich katalogu. Wątpię (pewności nie mam), czy WP może narzucać cokolwiek developerom, którzy umieszczają swoje dzieła na swoich stronach.
odpowiedzMoże :-).
odpowiedzSzymonie, zwróciłeś uwagę na kilka bardzo ważnych kwestii.
Jak można wywnioskować z Twojego tekstu – darmowe szablony, wcale nie są takie darmowe (zresztą jak cała masa pozornie darmowych towarów czy usług)
– ktoś powrzuca linki do swoich stron (autora akurat rozumiem i ten link powinno się zostawić),
– ktoś będzie chciał zaciągać dane ze strony
– a jeszcze zechce dostać się na Twój serwer i wykorzystać go w swoich celach.
Dlatego, moim zdaniem warto zainwestować we własny szablon – wbrew pozorom, nie są to duże pieniądze, a możne mieć własne logo, układ dopasowany do potrzeb i linki do tych osób, z którymi chcemy współpracować .
odpowiedzZgadzam się, że własny motyw to najlepsze rozwiązanie ale często brakuje czasu, chęci, wiedzy lub funduszy na takie działania.
odpowiedzWiększość darmowych ma takie kwiatki… trzeba uważać z jakiej strony ściąga się motywy, bo tak naprawdę bezpiecznych jest niewiele.
odpowiedzJa swój przeglądałem cały i nie ma tam niczego niepokojącego :) No, poza tym, że nadal nie ogarniam w pełni tak zaawansowanego PHP, jaki występuje w WordPressie i szablonach :( W wielu miejscach nie rozumiem połowy, ale są też momenty, gdzie wszystko jest dla mnie jasne – taki właśnie jest mój obecny styl (jedynie functions.php to dla mnie czarna magia O.o)
odpowiedzNiektóre szablony w licencji mają zastrzeżone, iż są udostępnione za darmo, a ceną tego jest pozostawienie linków w stopce.
Inna sprawa, sporo stron które udostępniają całą masę szablonów z themeforest, elegant themes, woo themes etc, doklejają do kody takie kwiatki, albo i nawet lepiej. Widziałem już kody które adresy email z komentarzy i z rejestracji użytkowników zbierały, lub też nawet były swoistym backdorem do konta admina. Nie spotkałem się z darmowymi szablonami które by miały syf, natomiast te płatne, zakupione i piracone – bardzo często mają dodatki. Takim osobom nie współczuję syfu, jak ktoś kradnie szablony zamiast zapłacić niemal że grosze w stosunku do otrzymanej pracy, to ma spore szanse że dosięgnie go sprawiedliwość :)
Osobiście uważam że rzadko kiedy zakodowane fragmenty są jakimś syfem, najczęściej jest to link do strony autora, lub dodatkowe linki – i to powinno zostać jeśli się chce używać szablon za darmo.
Sam wpis ciekawy, i w miarę dobrze wytłumaczone … lecz sposobów na skomplikowanie zakodowanego kodu jest masa, i bez podstaw php raczej mało użytkowników będzie w stanie wykorzystać ten poradnik dla ich zakodowanych fragmentów kodu, o ile nie będą one zapisane w podobny sposób – i szczerze powiem że mnie to trochę pociesza :)
odpowiedzMam pytanie. Nie rozumiem kwestii podmiany linków. O ile dostałem wynik z dekodowania ?>… to nie wiem jak to podmienić na właściwą składnię. Co należy powklejać na tej stronie PHP string functions? Z góry dzięki za sugestie.
odpowiedzDomyślam się, że chodzi o tą konkretną linijkę:
Funkcja strtr służy do podmiany znaków w dowolnym ciągu. Przyjmuje ona trzy argumenty, oddzielone od siebie przecinkami – pierwszy to ciąg, który będzie poddany obróbce, drugi to znaki źródłowe a trzeci to znaki docelowe.
Korzystając z narzędzia online trzeba więc uzupełnić pole $string o wartość zmiennej $X (to co wcześniej odkodowaliśmy), $from o 123456aouie a $to o aouie123456.
Czyli tak jak na poniższym zrzucie ekranowym:
odpowiedzhttps://wpninja.pl/media/2011/09/strtr.png
O… teraz wszystko jest dla mnie jasne. Dziękuję za wyjaśnienie i serdecznie pozdrawiam!
odpowiedz„Przed uruchomieniem motywu sprawdzić czy nie zawiera on podejrzanych rzeczy”
odpowiedzCo do tego, warto sprawdzić skórkę nie na żywym organizmie tylko najlepiej postawić kopie bloga na localhost dopiero wtedy odpalić wtyczkę.
Jakiś czas temu kupiłem template. Teraz pod wpływem artykułu przeskanowałem WP i otrzymałem wyniki, których sam nie potrafię zinterpretować.
Czy ktoś zechce mi pomóc?
odpowiedzMój adres: kamien8-małpka-poczta.onet.pl
Tego szukałem podczas przeczesywania plików szablonu LightWord. W stopce mam właśnie niechciane linki, do których przynajmniej chcę dać nofollow. Mam nadzieję, że z tym wpisem się uda ;)
odpowiedzPewnie kolejne kroki nie pokryją się w 100%, ale masz znajdziesz tu odnośniki do przydatnych narzędzi wraz z ogólną wskazówką „co i jak”. Powodzenia!
odpowiedzSprawa była prostsza niż myślałem. Syf w stopce został dodany poprzez pliki językowe
odpowiedzCzłowieku szukałem tego artukułu już chyba z mieśiąc i widzę że to on znalazł mnie ;) Zostałem przekierowany z jakiegoś innego blogu. (Dzięki Bogu że tutaj trafiłem) :)
odpowiedzDobra nie czaje tego, Nie wiem jak się obsłużyć tym programem do odkodowania
odpowiedzJeśli chodzi o http://base64-encoder-online.waraxe.us/ to nie ma tam raczej zbyt wielkiej filozofii – trzeba wkleić tam zakodowaną treść (np. V1BOaW5qYQ==) i kliknąć na „Decode data”.
odpowiedzDostałem od jednego z czytelników fragment zakodowanego kodu, który dodatkowo używał funkcji gzinflate (jeszcze bardziej utrudnia odczytanie). Poniżej przesyłam adres bardzo fajnej strony za pomocą, której można to „odkodować”: http://www.base64online.com/#decode_base64_gzinflate
odpowiedzMam pytanie o aspekt prawny usuwania linku do autora darmowego szablonu. Czy ktoś się orientuje, jak to wygląda od strony prawnej? Nie pytam o kwestie uprzejmości wobec autora, czy o dobre maniery, ale o fakty. Chodzi o to, co prawo mówi na temat licencja open source, na której oparty jest WordPress – z tego, co czytałam, to licencja GPL nie pozwala autorom szablonów zabraniania ludziom usuwania ich linku ze stopki – innymi słowy, usunięcie linku nie jest łamaniem prawa. Jeśli szablon jest dostępny na licencji GPL – a szablony WordPress muszą być na takiej licencji udostępniane – użytkownik może z nim robić, co mu się podoba, łącznie z usuwaniem linku do autora szablonu. Czy tak? Czytałam też, że open source oznacza brak zastrzegania produktów opartych o WordPress prawami autorskimi przez autorów.
Dlaczego pytam? Bo interesuje mnie ten aspekt prawny, a nie wiem, czy to, o czym piszę, a co znalazłam w internecie, jest wiarygodną informacją. Czy ktoś ma rzetelną wiedzę na ten temat? Byłabym wdzięczna za odpowiedź.
odpowiedzZ tego co wiem to jest tak jak piszesz – można usunąć odnośnik autora, który znajduje się np. w stopce, ale nie można tego samego zrobić z plikami źródłowymi (czyli w przypadku motywów – style.css).
odpowiedzA z tym usuwaniem ze stopki linków kierujących na stronę autora nie jest czasem tak, że skoro szablon jest udostępniony na licencji GNU, to możemy go autorsko zmieniać i dalej np. udostępniać na tej samej licencji, czy mylę się?
odpowiedzMój poprzedni komentarz nieaktualny, odpowiedź umknęła mojej uwadze :) Chyba, że jest jakaś różnice w sensie zabraniania usuwania linków ze stopki pomiędzy GNU 2 a 3?
odpowiedzNie jestem pewien, ale wątpię żeby coś w tej kwestii się zmieniło pomiędzy wersją 2 a 3.
odpowiedzA jak mam coś takiego?
http://wklej.org/id/959489/
odpowiedzRobisz tak:
1. Szukasz wystąpień „eval” i przenosisz je do oddzielnych wierszy.
odpowiedz2. Każdy z wierszy kopiujesz i wrzucasz do dekodera: http://matthewfl.com/unPacker.html
3. Sklejasz odkodowaną treść w całość:
http://wklej.org/id/959525/
Co mam usunąć żeby po usunięciu oryginalnego footera nie wyświetlało mi się „Please return the links to the footer!” ?
ściągnąłem darmowy styl, przerobiłem go w całości od A do Z, nie tylko od strony graficznej i został tylko ten nieszczęsny footer i krzyczy gdy coś z nim zrobię.
footer.php –> http://wklej.org/id/959670/
odpowiedzTen komunikat znajduje się w odkodowanym fragmencie :)
odpowiedzAaaa dziękiiiii właśnie zobaczyłem :) Pozdrawiam
odpowiedzCoś mi nie idzie, mój motyw to http://smthemes.com/demo/cookingbook/
odpowiedzJakieś rady?
Ale co konkretnie Ci nie idzie? Usunięcie komunikatu „Please return the links to the footer!”?
odpowiedzUsunąłem to z zakodowanego fragmentu, wkleiłem resztę co zostało do smthemes.js, usunąłem z stopki linki reklamujące i dalej mi wczytuje ten komunikat.
odpowiedzCzy po wprowadzeniu zmian przeczyściłeś pamięć podręczną w przeglądarce?
Ten motyw to ogólnie niezły kaszanka i takich „zabezpieczeń” jest takm chyba dużo więcej. Nie zastanawiałeś się nad przesiadką na coś innego?
odpowiedzPotwierdzam, SMThemes to generalnie od lat kaszana – lepiej unikać.
Kod marnej jakości, do tego masa kodowanych wstawek.
Zawierają też dodatkowe zabezpieczenia np. przed modyfikacją stopki zaszyte głębiej w plikach – zwykle również zakodowane. Jest to sprawdzenie rozmiaru pliku, ilości znaków, lub porównanie stringów etc. – zależy od konkretnego motywu i jego wersji.
Całkowite „odblokowanie” takiego motywu jest jak najbardziej możliwe, tylko ma mały sens. Lepiej poświęcić czas na poszukanie innego, lepszego.
odpowiedzCześć,
mam problem, którym nie mogę się od dawna uporać :( mianowicie moja strona w wersji mobilnej jest przekierowywana na stronę autora szablonu. Jeżeli na komórkach ustawię stronę taką jak na komputery to z kolei mam problem z wyjustowaniem tekstu :( Nie wiem już co robić i jak to usunąć :(
odpowiedzDodaj własny komentarz