Myslíte si, že zašifrovat HTML kód a přesto ho ponechat čitelným pro prohlížeč je nemožné?
Říkáte si, že je to nemožné? HTML se přece šifrovat nemůže, protože pak by se stalo pro prohlížeč nečitelné, že ano? Ale napadl mě velmi jednoduchý způsob, jak toho přece jen docílit. Zdrojový kód bude šifrovaný, čili ho hned jen tak nějaká lama neokopíruje, ale přesto zůstane pro prohlížeč čitelný. Jak tedy na to?
Nejdříve se vysvětlíme princip, jak to vlastne bude fungovat. Jak už jsem říkal, je to velmi jednoduché. Vezmeme si soubor se zdrojovým kódem stránky (HTML), postupně čteme každý znak, ten převedeme do hexadecimální soustavy a uložíme do druhého souboru. Teď tedy máme v souboru kompletní zdroják převedený do šestnáctkové soustavy. Ten však pro prohlížeč čitelný není. K jeho přečtení nám poslouží JavaScript, konkrétně funkce unescape, která hexadecimální znaky převede zpět do ascii, což umožní prohlížeči zdrojový kód přečíst.
Teď se tedy vrhněme do realizace. Způsobů jak text převést do hexadecimální soustavy je více. Já jsem si naprogramoval jednoduchý prográmek v "céčku", který čte postupně všechny znaky ze souboru vstup.html a přepisuje je v hexadecimální podobě do souboru vystup.html, do kterého přidá i již zmíněnou funkci unescape. Výsledný soubor vystup.html tedy navenek vypadá naprosto stejně jako původní vstup.html, ale podívejte se na zdrojový kód. Celkem rozdíl co?:)
Tady uvedu příklad. Soubor vstup.html obsahoval tento jednoduchý html kód:
<h1 style="color:red">Nadpis</h1>
<p>Odstavec, bla bla bla ...</p>
A tady je zdroják výsledného souboru vystup.html:
<script language="JavaScript">
document.write(unescape("\x3c\x68\x31\x20\x73\x74\x79\x6c\x65\x3d\x22 \x63\x6f\x6c\x6f\x72\x3a\x72\x65\x64\x22\x3e\x4e\x61\x64\x70\x69\x73 \x3c\x2f\x68\x31\x3e\x0d\x0a\x3c\x70\x3e\x4f\x64\x73\x74\x61\x76\x65 \x63\x2c\x20 \x62\x6c\x61\x20\x62\x6c\x61\x20\x62\x6c\x61\x20\x2e \x2e\x2e\x3c\x2f\x70\x3e"))</script>
<noscript>Pro správné zobrazení této stránky si prosím povolte JavaSript ve svém prohlížeči!</noscript>
Zde ještě přidávám zdrojový kód programu na zašifrování zdrojáku. Program je psaný v jazyce C/C++ a myslím, že je snadno pochopitelný.
/*
* HTML Source Coder v1.00
* ---------------------------------------------------
* Programam "zasifruje" HTML kod
* ---------------------------------------------------
* Autor: Stoyan (stoyan@tiscali.cz)
* ---------------------------------------------------
* Datum: 29.7.2006
*/
#include <stdio.h>
#define HLAVICKA "+-----------------------------------+\n| HTML Source Coder v1.00 by Stoyan |\n+-----------------------------------+\n\n"
main()
{
FILE *vstup, *vystup;
int c;
if ((vstup = fopen("vstup.html", "r")) == NULL) {
printf("%s", HLAVICKA);
printf("Soubor vstup.html se nepodarilo otevrit!\n");
printf("Ujistite se, ze se soubor nachazi ve slozce s programem.\n\n");
printf("Stiskni ENTER pro ukonceni...\n");
getchar();
return 1;
}
vystup = fopen("vystup.html", "w"); //otevreni souboru vystup.html pro zapis
fprintf(vystup, "<script language=\"JavaScript\" type=\"text/javascript\">\n");
fprintf(vystup, "document.write(unescape(\"");
while ((c = getc(vstup)) != EOF) { //cte znaky ze souboru vstup.html dokud nedosahne konce souboru (EOF)
if (c==10) fprintf(vystup, "\\x0d\\x0a",c); //new line
else fprintf(vystup, "\\x%x",c); //prevod do hexadecimalni soustavy
}
fprintf(vystup, "\"))");
fprintf(vystup, "</script>");
fprintf(vystup, "<noscript>Pro správné zobrazení této stránky si prosím povolte JavaSript ve svém prohlížeči!</noscript>");
fclose(vstup); //zavreni souboru vstup.html
fclose(vystup); //zavreni souboru vvystup.html
printf("%s", HLAVICKA);
printf("Soubor vstup.html byl uspesne zasifrovan do souboru vystup.html!\n\n");
printf("Stiskni ENTER pro ukonceni...\n");
getchar();
return 0;
}
Již hotový program si máte možnost stáhnout v sekci Programy.
Poznámka: V průběhu testování jsem narazil na jeden bug a to, že české znaky (konkrétně "ě","š","č","ř","ž") se v zakódovavé verzi zdrojového kódu nesprávně zobrazují. Pokud by měl někdo řešení, byl bych velmi vděčný, kdyby se mi ozval na mail nebo ICQ.

Předcházející článek: Jak zjistit IP adresu
Následující článek: Jak používat Google?
| Ego | ||
| Helet...a cemu je to vlastne dobry?? | ||
3.9.2007 12:46:58 |
213.211.63.* |
|
| Hillx | Hillx(zavinac)seznam.cz |
|
| hele a nemoch by si napsat program kterej ten zdroják zase vrátí??? a druhá otázka - mužu kombinovat zašifrovanej a NEzašifrovanej zdroják do jednoho??? | ||
14.11.2007 20:04:33 |
90.176.150.* |
|
| BooNeeS | boonees(zavinac)boonees.com |
|
| nějak si nejsem jistý s použitím v praxi
-rychlost načítání stránky na pomalejších pc (popř, pomalejšího připojení, ptže je tam nejmíň 3x tolik toho kódu) -když má někdo vyplé js v prohlížeči, tak se mu to ani nezobrazí ...celkově zhodnoceno je to sice zajímavý nápad (je to spíše taková machrovinka), ale když to někdo bude chtít rozluštit, tak to rozluští, takže to podle mého názoru nemá cenu použít (je to něco, jako by jste si ve městě nechali kolo ovázené jenom provázkem a doufali, že se ho nikomu nebude chtít rozvázat ) |
||
30.11.2007 22:41:38 |
85.207.72.* |
|
| Mefisto | ||
| Dobrý nápad, ale s tou použitelností to trochu pokulhává hlavně z důvodu doby načítání stránky.
Jinak by jsi to určitě na těchto stránkách použil... |
||
27.9.2008 1:05:16 |
88.100.139.* |
|
| Vladkof | vladimir.faltus(zavinac)gmail.com |
|
| dá se toho zakódování nějak docílit pomocí php?? | ||
20.5.2009 21:06:37 |
88.81.74.* |
|
| ahasweb | ahasweb(zavinac)volny.cz |
|
| Může se to hodit pro vylepšení jednoduchého přístupu k webu přes heslo - viz
http://mycomp.webgarden.cz/vychytavky-na-stranku/zaheslovani-stranek-pomoci-2.html |
||
10.9.2011 23:59:31 |
78.24.8.* |
|