Velikonoční vajíčka v Open Source programech?

Nečekané vylepšení PHP Programy v rámci Open Source jsou vždy dostupné i se zdrojovými texty. Položme si otázku, zd...


Nečekané vylepšení PHP
Programy v rámci Open Source jsou vždy dostupné i se zdrojovými texty. Položme
si otázku, zda je možné v dostupných zdrojových textech ukrýt nějaké
"velikonoční vajíčko", tedy vývojářský šprým. Programátoři jsou někdy veselé
kopy a když je například přestane bavit psát tabulkový procesor, doprogramují
do něj Doom. Když je nebaví psát webový prohlížeč, doplní jej o animaci loga
nebo citát z bible. Je vcelku zřejmé, že v uzavřených programech (tedy bez
dostupných zdrojových textů) je možné skrýt téměř cokoli. Je to ale možné i v
Open Source?
Poslední, spíše žertovný příklad to jenom potvrzuje. Ale začněme od začátku.
Každý jistě zná skriptovací jazyk PHP (http:// www.php.net/), který je nyní
dostupný ve verzi 4. Je to jazyk používaný na velmi mnoho webových serverech v
Internetu viz např. pravidelné statistiky společnosti NetCraft
(http://www.netcraft.com/).
Malý úvod do PHP
Program v jazyce PHP je přímo vkládán do zdrojového textu HTML stránky a je
interpretován na straně serveru. Příkladem jednoduché stránky je následující
text, který zobrazí aktuální datum:
Dnes je: <? echo Date("d-m-Y");?>
Webový server podle své konfigurace zjistí, že se v souboru s touto HTML
stránkou nachází ještě kód v jazyce PHP, který musí před odesláním klientovi
provést, a tak zavolá interní funkci Date (http://www.php.net/manual/
function.date.php) a její výsledek pomocí příkazu echo (http://
www.php.net/manual/function.echo.php) pošle klientovi. V našem prohlížeči potom
může stránka vypadat následovně:
Dnes je: 18-06-2000
Vlastní vajíčka
Nyní již víme, co to PHP je, a teď se podívejme na zoubek velikonočnímu
vajíčku, které mělo být pozorováno až prvního dubna příštího roku.
Jazyk PHP obsahuje funkci phpinfo popis je na (http://www.php.
net/manual/function.phpinfo.php), která zobrazuje informace o verzi jazyka PHP,
o systému, na kterém webový server běží, o konfiguraci samotného PHP, o
podporovaných vlastnostech, licenci a autorech serveru. Pokud je funkce
zavolána speciálním způsobem, produkuje dokonce i loga jazyka PHP a Zend.
Oba tyto obrázky si můžete jednoduše zobrazit, pokud si vytvoříme soubor s
následujícím obsahem:
<? phpinfo(); ?>
a uložíme jej např. pod názvem phpinfo.php do kořenového adresáře s dokumenty
webového serveru, který PHP podporuje. Pokud nyní spustíme webový prohlížeč a
do okénka URL napíšeme např. http://localhost/phpinfo.php, kde localhost je
jméno počítače, na kterém webový server běží, uvidíme stránku plnou informací o
PHP a webovém serveru. Jsou na ní i oba zmiňované obrázky. Ve zdrojovém textu
stránky jsou reprezentovány těmito dvěma adresami:
http://localhost/phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001A CF42
http://localhost/phpinfo.php?=PHPE9568F35-D428-11d2-A769-00AA001A CF42
Další možnosti
Obě adresy jsou nápadně stejné. Jednoho Australana napadlo se podívat, jak je
tento kód ošetřen uvnitř PHP a přišel na další zajímavou adresu:
http://localhost/phpinfo.php?=PHPE9568F36-D428-11d2-A769-00AA001A CF42
Opravdu zajímavý obrázek Thiese C. Arntzena, který k tomu všemu podal v
konferenci o jazyku PHP vysvětlení. Doufal, že se tento obrázek objeví až 1.
dubna roku 2001, protože ve zdrojových textech PHP je v souboru
ext/standard/info.c v definici funkce php_ print_info() použita následující
podmínka:
the_time = time(NULL);
ta = php_localtime_r(&the_time, &tmbuf);
[...]
if ((ta->tm_mon==3) && (ta->tm_mday==1)) {
PUTS("?=PHPE9568F36-D428-11d2-A769-00AA001ACF42" border=0 align ="right"></
a>");
} else {
PUTS("?=PHPE9568F34-D428-11d2-A769-00AA001ACF42" border =0
align="right"></a>");
}
v místě, kde je zobrazeno logo PHP. Tento kód testuje, zda je číslo měsíce
rovno 3 (leden má číslo 0) a den má číslo 1.
Jak jednoduché a účinné. V tomto případě bylo toto velikonoční vajíčko odhaleno
studiem zdrojových textů. Jak jsou asi odhalována vajíčka v komerčních
produktech bez zdrojových textů? Jsou tam vůbec vajíčka? A jsou stejně jako
toto vajíčko legrační nebo mohou činit i nekalé věci? Nebo to již snad činí
aniž o tom cokoli víme nebo tušíme?
Přeji vám příjemný zbytek dne při hledání dalších vajíček v dalších Open Source
programech a modlení se za to, aby v programech, od kterých zdrojové texty
nemáte, tato vajíčka nebyla.
0 2116 / alsn









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.