Autor Zpráva
kulich
Profil *
Zdravím a prosím o radu:
potřebuju u jedné webové aplikace část php kódu zakódovat - zná někdo spolehlivou metodu, program, čím to zašifrovat, aby se to nedalo jednoduše prolomit?
díky
Lokutus7323
Profil *
Jak to myslíš zašifrovat?
Alphard
Profil
Vy asi myslíte obfuscator. Zkušenosti nemám, nepoužívám, ale hledejte to klíčové slovo.
Keeehi
Profil
Řekl bych, že má na mysli něco takového:
eval(base64_decode("ZWNobyAiVGFqbsOpIjs="));

Ovšem ještě jsem nenarazil na způsob, který bych nezvládl rozšifrovat dejme tomu do hodiny.


Dříve jsem někde narazil na článek, podle kterého šlo chránit přístupové údaje k databázi i v době, kdy má útoční přístup k souborům např. v případě nezabezpečeného uploadu. Nějak to využívalo přeložených souborů PHP či něco takového. Bohužel v té době mě to vůbec nezajímalo, takže jsem to netestoval a později už se mi to nepodařilo dohledat. Takže vlastně ani nevím, jestli by to bylo možné nebo použitelné.
kulich
Profil *
Keeehi:
Nejedná se o "prosté" eval... i když se to tak navenek tváří. Zkoušel jsem program EasyPHPEncrypt, který by vyhovoval a jen bych chtěl vědět jak moc rychle by to bylo možné rozšifrovat. Tady je příklad zakódované části PHP scriptu:
eval(base64_decode("JHZfM1N2bmNVaG9vdD0iSkhaZlk...

Moderátor Davex: Nesmyslné 24 KB výstupy sem nepatří, zkráceno. Použít kratší příklad na jeden řádek by stačilo.
Someone
Profil
Mmmyslim, že je to tu napsané dvakrát za sebou a zaslouží upravit.
Keeehi
Profil
kulich:
Tak jsem zkusil ten ukázkový script z EasyPHPEncrypt. Za 30 minut jsem měl hotovo a zpětně musím říct, že jsem se zdržoval zbytečnostmi.

Popis dešifrování

1. Provedeme dekódován dlouhého řetězce.
- v proměnné a je kód funkce y. Tato funkce dešifruje zprávu za pomoci klíče. Jinak jde o Vigenèrovu šifru.
- v proměnné $u je klíč, který použijeme k dešifrování
- v proměnné $p je šifra
2. S proměnnou $p si musíme ještě lehce pohrát. Vezmeme vždy dva znaky a ty jsou jedno hexadecimální číslo. Toto číslo je hodnota znaku z kterých poskládáme celý řetězec, který vstupuje do funkce y.
3. Dešifrujeme text. Jelikož známe klíč, není to žádný problém. Od hodnoty prvního znaku šifry odečteme hodnotu prvního znaku klíče a dostaneme hodnotu prvního znaku dešifrované zprávy. Takto pracujeme i s druhým znakem i dalšími. Když dojedeme na konec klíče, začneme od začátku.
4. Máme dešifrovaný php kód

<- tyto 4 kroky samozřejmě neděláme ručně. Stačí vždy využít toho, co se nám vyloupne po dekódování. Tu analýzu, co jsem dělal, tak ta je zbytečná. Celý postup dešifrování kódů se dá shrnout do pár řádků:

1. všechny výskyty funkce eval nahraď za echo;
2. spusť script
3. zobrazil se ti tebou chtěný kód
3a. ANO -> konec
3b. NE -> skok na bod 1

-není to úplně přesné, ale z větší části to tak jde.
kulich
Profil *
Díky za popis, jen by mne ještě zajímalo, jaký byl přesný výsledek tohoto dekódování. Zkoušel jsem to podle tohoto postupu a nějak se mi nevedlo.

Info pro moderátora: Abych mohl požádat někoho o dešifrování musel jsem vložit CELÝ zašifrovaný řetězec a přesto, že se jednalo o zašifrování pouze jednoho řádku řetězec byl tak dlouhý jak byl.
Keeehi
Profil
kulich:
jaký byl přesný výsledek tohoto dekódování
no nic hezkého to nebylo

echo "Thanks for trying this sample<br><br>If you see this than your encrypted code will work on your server.
Go a head and download the demo and give it a whirl<br><a href=\"http://www.easynicheshop.com/easyphpencrypt/download/setup.exe\"><img src=\"http://www.easynicheshop.com/easyphpencrypt/css/downloadnow5.gif\" border=\"0\"/></a>";
$varslist = "airelsacnlsirnclijfwoewqmoimpocmcieasjdaniqwjnci";
$r = rand(0,strlen($varslist)-2);
$secpopup = substr($varslist,$r,1).md5(substr($varslist,$r,1).rand());
$r = rand(0,strlen($varslist)-2);
$shadowpop = substr($varslist,$r,1).md5(substr($varslist,$r,1).rand());
$r = rand(0,strlen($varslist)-2);
$graybg = substr($varslist,$r,1).md5(substr($varslist,$r,1).rand());
$_VQa0k01U = "";
$_VQa0k01U .= "<style type=text/css>";
$_VQa0k01U .= "#".$secpopup." {";
$_VQa0k01U .= "position: absolute;";
$_VQa0k01U .= "left:150px;";
$_VQa0k01U .= "top:100px;"

//zkráceno

$_VQa0k01U .= "";
$_VQa0k01U .= "<div style=\"font-size:12px;text-align:center;\">Powered By:<a href=\"http://www.easynicheshop.com/easyphpencrypt/?ref=C9CBE5ABD1D8D2D4A5DAD5D0D9D18FD6E8DB\" target=\"_blank\">Easy PHP Encrypt</a></div>";
$_VQa0k01U .= "";
$_VQa0k01U .= "</div>";
echo $_VQa0k01U;

$_VQa0k01U="";$secpopup="";$varlist="";$shadowpop="";$graybg="";$r="";
kulich
Profil *
Díky za radu a pomoc. Jen bych se přeci jen ještě zeptal zda nevíš, jak to provést, aby alespoň část PHP kódu nebyla čitelná pro toho, komu jej předám? Asi to není jednoduché, ale pomohla by mi i třeba rada zda to je či není možné. Díky.
Ugo
Profil
a co kompilátor? nikdy jsem s tím nedělal (i když mě to asi čeká zanedlouho-kvůli rychlosti), ale letmo dám třeba starší odkaz - http://myego.cz/item/bcompiler-kompilace-a-ochrana-php-kodu-zdarma

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: