Portál AbcLinuxu, 30. dubna 2025 16:48
$enc = 'text';
echo base64_encode($enc);
a potom pres:
$enc = 'base64';
echo base64_decode($enc);
Ale potom zas jsem řešil to, jak vlastně zakóduju kousek zdroje, protože určitý prvky mi nějak nešly nebo spíše potom nefungovaly. Pokusil jsem se i o vlastní nějaký žašifrování textu, sice se mi to z malé části podařilo, ale to zas nestačí na některý PHP příkazy (je to hlavne pro text a html).
$l="text1";
$g0="text2";
$g1="text3";
$g2="text4";
/* ===BEGIN SOURCE=== */
$h=array("0","8","a","k","m","z","c",".","b","y","d","o","t","l","e","i","n","r","f","p","g");
$e=array("<",">","=","#");
$i5=$h[12].$h[15].$h[12].$h[13].$h[14];$i1=$h[8].$h[11].$h[10].$h[9];$i8=$h[2].$h[4].$h[0].$h[3].$h[7].$h[6].$h[5];$i10=$e[2];$i2=$e[0];$i3=$h[6].$h[14].$h[16].$h[12].$h[14].$h[17];$i9=$h[18].$h[11].$h[16].$h[12];$i6=$h[19].$h[17].$h[14];$i11=$h[6].$h[11].$h[13].$h[11].$h[17];$i7=$h[8].$h[20];$i4=$e[1];$i12=$e[3];$i15=$h[0].$h[0].$h[0].$h[0].$h[0].$h[0];$i18=$h[1].$h[1].$h[0].$h[0].$h[0].$h[0];$i20=$h[0].$h[0].$h[1].$h[1].$h[0].$h[0];$i19=$h[1].$h[1].$h[1].$h[1].$h[0].$h[0];
$x=array("$i5","$i3","$i9","$i6","$i11","$i1","$i7","$i2","$i4","$i12","$i10","$i15","$i20","$i18","$i19","$i8");
$m=$x[7];$n=$x[8];$k=$x[9];$j=$x[10];$i=$x[15];$b=$x[11];$g=$x[12];$r=$x[13];$y=$x[14];$t=$x[0];$c=$x[1];$f=$x[2];$p=$x[3];$o=$x[4];$d=$x[5];$z=$x[6];
echo "$m$t$n$i$m/$t$n$m$d $z$o$j\"$k$b\"$n$m$c$n$m$f $o$j\"$k$y\"$n$m$p$n$l$m/$p$n$m/$f$n$m$f $o$j\"$k$g\"$n$m$p$n$g0$m/$p$n$m/$f$n$m$f $o$j\"$k$r\"$n$m$p$n$g1$m/$p$n$m/$f$n$m$f $o$j\"$k$g\"$n$m$p$n$g2$m/$p$n$m/$f$n$m/$c$n$m/$d$n";
/* ===END SOURCE=== */
Poté jsem našel na netu zrovna to, co jsem potřeboval: Easy PHP Encrypt 1.0, ale ten je bohužel jen demo a nikde nemůže najít plnou. Šifruje to nějako jako base64, ale asi dvojtě, protože ani po defišrování mi to ukázalo hatlamatilku :)Pokud víte někdo o nějakým způsobu nebo programu, který umí kompletne celí PHP zakódovat, tak budu vděčný za každou pomoc (zkoušel jsem jich hodně)
PS: Za předchozí blog se omlouvám, jsem nějak nevěděl co jsem napsat :o))
Tiskni
Sdílej:
Neřekl jsi, k čemu to jako má být dobré...
To hlavní už bylo řečeno, tak já jen ještě hnidopišskou poznámku -- společně s nadpisem se pro jednu operaci objevují tři slova -- encrypt, zakódování, zašifrování. Přinejmenším dvě z nich mají různý význam, ale i tak by bylo lepší se příště držet jen toho z nich, co vyjadřuje záměr autora (tipuji, že cílem bylo šifrovat).
Jestli chápu dobře, chcete někde vystavit PHP kód s nějakými zašifrovanými zadními vrátky?!
To není moc dobrá praktika, pokud nejste smířen s tím, že váš kód bude dostupný tak ho nikam nedávejte.
Nevím, jestli dobře chápu o co ti jde, ale php skripty se dají zkompilovat a pak spouštět jako binárky. Původní význam je sice optimalizace, ale pro to, aby výsledek byl closed source, se to dá použít taky. Jen je, somozřejmě, potřeba nějaká úprava Apache.
Já tu informaci mám jen od kamaráda, který s tím nějak experimentoval, ale vygooglil jsem tohle www.zend.com/en/products/guard/optimizer/ snad ti to k něčemu bude.
No, tak já teda absolutně netuším, co potřebuješ. Jestli nějakej obfuskátor nebo co. Ale když už jsme u toho Base64, někde jsem viděl:
eval(gunzip(base64_decode('blablabla')));
Přičemž namísto blablabla byl v Base64 zagzipovaný program. Jestli to máš hodně velký, tak bych se podíval po AsciiBase85 kódování. To je trošku méně náročné.
No, podle mě jsou všechny tyhle ochrany jen zbytečný obfuskační level. Zpomaluje to člověka a nakonec i ten stroj.
Taky jsem premyslel, jak zajistit, aby mi nejakou funkci na serveru nemohl nekdo odkoukad, pripadne i upravit a bohuzel, cokoliv bude zasifrovane, tak potrebuje lokalni funkci na desifrovani a pokud se nekdo k tomu zdroji dostane, tak ma vyhrano, at je to jenom base64 nebo nejaka silna sifra, treba i asymetricka. Takze sifrovani neni reseni.
Pak je moznost prelozit ty PHPka jako binarku, pak by sice nekdo mohl provest tracing, ale to by mohlo byt dost pracne.
Dale, pokud by ten chraneny kod mel cist nejaky data, provest nejakou upravu a vyplivnout jina data a bojis se zkoumati te funkce, nebo nechces, aby ji nekdo kopiroval, tak umistit tuhle funkci na nejaky jiny webhosting a z tve aplikace pak otevrit tuhle stranku s parametrama a precist vystup. Bohuzel to bude pomalejsi. Pokud ale bude dulezite zabranit cteni zdrojaku, pak by to mohlo byt dobre reseni.
Dalsi moznost je, napsat pozadovanou funkci v nejakym jinym kompilovanym jazyku, napr. C, zkompilovat a pak z PHP volat tenhle program, ono by mozna slo vytvorit v C ten kod jako knihovnu a tu pak pouzivat v PHP, ale to by mozna vyzadovalo instalaci tyhle knihovny na serveru, coz muze byt problem - ta binarka by mohla byt v pohode. Bohuzel, tohle mozna zabrani akorat zkopirovani kodu funkce, nicmene pri debugu je mozny ten kod jakz takz cist.
Asi bys mel opravdu napsat, co presne chces udelat. Jestli jenom obfuskaci (nadefinovat par castych funkci pomoci nejakych jinak pojmenovanych funkci, prejmenovani promenny na jednopismenny pomuze docela dobre), nebo potrebujes zabranit kopirovat kod, nebo zabranit cteni kodu.
Prekladani PHP do bin to snad melo neco spolecnyho se ZENDem (ale mozna to byl jenom PHP zdrojak v nejakym binarnim bastlu), ale videl jsem to nekdy v roce 2003 a od ty doby jsem s tim do styku neprisel, takze taky presne neporadim.
Jak to myslis "nikde nemůže najít plnou"? Vzdyt je k zakoupeni primo na strankach, ktere jsi linkoval. Pokud jsi to chtel sproste ukrast, tak to tak napis na rovinu. Nesnasim lidi, co nenazyvaji veci pravymi jmeny.
Hele, teď mě tak napadá: ;co přejít na Perl?
Co CGI?
A asi nebudu sám koho zajímá důvod takového činění. Jde jen o schování kódu před poskytovatelem místa a nebo o něco víc?
Join us now and share the software; You'll be free, hackers, you'll be free. x2 Hoarders can get piles of money, That is true, hackers, that is true. But they cannot help their neighbors; That's not good, hackers, that's not good. When we have enough free software At our call, hackers, at our call, We'll kick out those dirty licenses Ever more, hackers, ever more. Join us now and share the software; You'll be free, hackers, you'll be free. x2
šifrování != kódování
Abys něco zašifroval, base64 a podobné věci ti nepomohou. Resp. nepomůže ti prakticky nic – je to jaky když chceš šifrovat disky na serveru – buď uložíš klíč na ten server → pak ti je šifrování na nic, nebo si klíč hlídáš, ale při každém restartu tam musí přijít obsluha s klíčem (nebo aspoň zadat heslo). U toho PHP je to stejné – pokud má server ten kód vykonat, musí znát klíč. Leda že bys klíč zadal jen jednou a pak se držel v RAMce (tam by si ho správce serveru stejně mohl přečíst).
To, co asi hledáš, je obfuskace*, ale na to radši kašli – lepší je kód vydat pod GPL a případně se pak s někým soudit, že ti ho ukradl.
*) BTW: nepřijde vám, že některé programy jsou obfuskované, aniž by autor použil nějaký obfuskátor?
*) BTW: nepřijde vám, že některé programy jsou obfuskované, aniž by autor použil nějaký obfuskátor?
Proto jsem doporučil ten Perl
To, co asi hledáš, je obfuskace*, ale na to radši kašli – lepší je kód vydat pod GPL a případně se pak s někým soudit, že ti ho ukradl.
Proč mám pocit, že jemu zrovna nejde o tohle?
No to řekni ty.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.