Jednoduchý tip pro zabránění lehkého čtení zdrojového kódu php scriptu. Fce eval, base32, base64_encode, base64_decode, gzdeflate, gzinflate. Bezpečnost php kódu na prvním místě.
Celý článek je zveřejněn na mozektevidi.net/clanek/sifrovani-php-skriptu
blog.vyvojar.cz/bst Nevím, nakolik pomůže k utajení předat čtenáři šifrový text včetně přesného návodu k dešifrování. :-D
2.2.2007 Pá 13:21
mozektevidi.net
mozek007©seznam.czTO BST: Důležitý je ten závěr. Třeba když si někdo zobrazí tvůj php soubor kde bude eval('bW96ZWt0ZXZpZGkubmV0') a v tom je právě heslo k DB nebo nastavení db. Lepší než aby byl pouze v plain textu.
2.2.2007 Pá 14:35
speedygt.ic.cz To mnoho násobný zakodování různejma šiframa vypada bezpečně, utočník těžko bude po večerech testovat v čem to vlastně je:-D
3.2.2007 So 12:57
mozektevidi.net
mozek007©seznam.czTO SpeedyGT: Přesně tak. A nejlepší je, že se zašifruje i fce gzdeflate. Takže prakticky ve zdrojáku vidíš eval(bW96ZWt0ZXZpZGkubmV0). A v tom balastu může být zašifrováno třeba desetkrát gzdeflate. Nevíš kolikrát, nedá se svítit. Jediná valná nevýhoda je, že to solidně zatěžuje php servery. U mě na localhostu to není znát, savana se trochu zapotí a IC.CZ spadne :-D
3.2.2007 So 14:53
speedygt.ic.cz/ TO MzK: omg:-D. Prakticky by šel udělat programek kterej by hledal kombinace rozšifrování určitýho hesla, vypsalo by to vysledky a ten nejpravděpodobnější (ne haldu znaku) by to vyplivlo8-)
3.2.2007 So 15:02
mozektevidi.net
mozek007©seznam.czTO SpeedyGT: Napíšu možná někdy časem. Teď není čas a až bude tak bude dělat ten script na přihlašování a odhlašování do naší školy abychom se umístili do top žebříčku SMIL
3.2.2007 So 16:31
Vždyť "bW96ZWt0ZXZpZGkubmV0" není php kód, tak jak ho má eval() spustit?
19.4.2007 Čt 01:03
mozektevidi.net
mozek007©seznam.czTO etrix: Věř mi, že to funguje. Sám to používám. Skript se pouští takto: eval(gzinflate(base64_decode($kode)));
19.4.2007 Čt 08:18
TO MzK: Můžeš mi sem dát funkční příklad, ve kterém se zkódují i ty funkce? Ať zkouším co zkouším, tak to nedělá co bych čekal.
19.4.2007 Čt 12:40
Nebylo by jednodusi php zkompilovat a spoustet jako binarku? To ti pak nikdo php neprecte ani kdyby se tisickrat dostal na server :) Natoz aby z toho dostan nejake hesla pro mysql.
19.4.2007 Čt 12:48
mozektevidi.net
mozek007©seznam.czTO etrix: Dobře, zde je moje připojení (databaze.php) na localhost:
<?
eval(gzinflate(base64_decode('
DdLbcqIwAADQX+lb734DSFSDGdlOBENAQLlZ4GUHJMQLBEMQhK/ffsGDSG/
/fL//zkraceno!!
')));
?>
TO Nobelicek: I ze zkompilovaného PHP jde dostat část původního. Nemá to jenom výhody.
19.4.2007 Čt 13:12
Samozrejmne. Nejvetsi nevyhoda kompilovaneho php je ze kompiler je placeny :) nasel jsem i nejake free ale ty jsou celokem o nicem :) Ale kdyz uz chceme mit web jako binarku tak uz byh radsi pouzil c++ nebo perl.
19.4.2007 Čt 13:14
To MzK tvoje sifra je velmi rozumna, protoze sofrovani ktere si pouzil je sofrovany pomoci jedinecneho klice serveru :) Takze kdyz si to bude nekdo chtit rozsifrovat na jinem serveru dostane holy nesmysl :)
19.4.2007 Čt 13:15
mozektevidi.net
mozek007©seznam.czTO Nobelicek: Použil bych Javu. V tom je třeba abclinuxu.
TO Nobelicek2: Tím si nejsem jistý. Ten skript funguje na minimálně na 2 serverech. U mně doma na localhostu i na savaně. Normálně celý text převedu do base32 (to není šifra, jen nahrazení znaků!. Pak se to zagzipuje. a nakonec přes eval spustí.
19.4.2007 Čt 13:41
Jinak java c++ c cokoli je pouzitelne. Javu neumim tak bych ji nepouzil :)
19.4.2007 Čt 13:45
TO MzK: No to jsi mi moc nepomohl, když je to zkráceno, tak to fungovat nebude. Prosimtě zkus to ještě jednou a pak už dám pokoj :-)
Kompletní zdroják (včetně zakódování a dekódování), kde bude zakódováno třeba echo "ahoj";, nebo cokoli jinýho.
19.4.2007 Čt 13:47
mozektevidi.net
mozek007©seznam.czTO etrix: OK. Mohl bych být za to placenej, ne? :-D
$kod = "echo \"ahoj\";"; // co zakódujem (echo "ahoj";)
$sifra = gzdeflate($kod, 9); // kodování
$rozkodujem = gzinflate($sifra); // rozkoduji
eval($rozkodujem); //spustím napiše ahoj
19.4.2007 Čt 13:52
Jeste tajkova pozznamecka gzdeflate neni kodovani ani sifrovani ale komprimace gzipem :) A gzinflate je opet dekomprimace :) Tim padem mu to nemusi fungovat ze pokud na serveru na kterem to skousi spustit neni naisntalovany knihovny gzipu. At se podiva do phpinfo.
19.4.2007 Čt 14:02
mozektevidi.net
mozek007©seznam.czTO Nobelicek: Jj, výše jsem psal: Pak se to zagzipuje. a nakonec přes eval spustí.: Vím že to není kódování v tom php komentáři se mi to vecpalo ani nevám jak.
19.4.2007 Čt 14:12
TO MzK: Jenže v tomhle nekóduješ tu funkci gzdeflate. Myslel jsem si, že se zakóduje i ona a eval tu rozkódovanou funkci hned spustí. Myslel jsem to nějak takhle, jenže to nevypíše vůbec nic:
<?
$x = base64_encode('echo "ahoj";');
echo $x;
echo '<br>';
echo base64_decode($x);
echo '<br><br>';
$x = base64_encode('base64_decode("ZWNobyAiYWhvaiI7");');
echo $x;
echo '<br>';
echo base64_decode($x);
echo '<br><br>';
echo "<br>";
eval(base64_decode($x));
?>
Pokud do eval dosadím místo base64_decode($x) jen výstup z base64_decode($x), tak to funguje.
19.4.2007 Čt 14:48
Každopádně to je stejně jen ochráněný proti přímýmu přečtení, jinak si to může rozkódovat kdo chce kdy chce.
20.4.2007 Pá 12:37
mozektevidi.net
mozek007©seznam.czTO etrix: Přesně. Ale tento trik není moc rozšířený, takže ho málokdo zná. Je to vhodně, třeba kdyby si někdo pujčil můj notebook a myslel si, že si přečte heslo v plaintextu LOL
20.4.2007 Pá 17:17