Zakódování zdrojového kódu HTML stránky

Kategorie: IT/Security | Zobrazen: 9541x Datum: 29.7.2006

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.

Stoyan's signature

Předcházející článek: Jak zjistit IP adresu

Následující článek: Jak používat Google?

Libí se vám tento článek? Zalinkujte ho: Linkuj tento článek

Přidej svůj komentář

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.*
Saruman
Saruman.White(zavinac)seznam.cz
Vladkof: Přepiš Stoyanův mustr-kód v C do PHP a máš to, ne? Jen dej bacha na to, aby ti někdo nemohl pomocí tvého php kodéru ukrást nějaké důležité soubory - otestuj si důkladně, zda cesta vstupního souboru opravdu ukazuje, kam má
24.5.2009 11:55:28
 
62.209.212.*
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.*
Nový komentář
Nick: 717" />

Smajlíci:

:-D :-) :-/ :-( ;-) :-P 8-) [b][/b] [i][/i] [url][/url]
Web:
Email:
Komentář:
Opište prosím číslo 717 (ochrana proti SPAMu)
 
       * Pole Komentář podporuje BBCode tagy
© Stoyan, 2006 - 2012