Hur man knäcker Protware HTML Guardian

(2002-09-09)

Programmets funktioner

HTML Guardian har två nivåer av skydd. En "enklare" som fungerar i alla webbläsare som stöder javaskript och en mer avancerad som kräver Internet Explorer av version 5 eller nyare.

"The alternative encryption method for IE5+ is faster and more secure, it is practically impossible to be cracked."

"Practically impossible" blir översatt till ren svenska "cirka en minut". Vidare erbjuder HTML Guardian lösenordsskydd, dvs att du kan bestämma ett lösenord som besökaren måste ange för att få se sidan.

"Of course, this is not a PGP sort of protection :) , so don't use this feature to protect highly sensitive information.
However, it is practically impossible to extract the password from the encrypted file, "

Må så vara att man inte kan få ut lösenordet från hemsidan, men det känns som det kvittar när lösenordet inte behövs för att titta på sidan. Du läste rätt. Lösenordet har ingen inverkan på hur sidan "krypteras". Den kodas på samma sätt, lösenord eller ej.

"I lost my original files! Can you help me recover them?
Sorry, we can't do this. Please don't ask us."

Varför gör du detta?

För att jag är trött på företag som inte håller vad de lovar. Visst har programmet några användningsområden. Det kan göra så man inte kan länka utifrån till sidor på din webbplats och det kan göra så att traditionella program som söker igenom webbplatser inte kan hitta länkar och e-postadresser på dina sidor. Men det kan inte lösenordsskydda sidor och det kan inte hindra besökare från att se html-koden, hur mycket än Protware vill påskina det. Falsk marknadsföring skulle det kallas i Sverige, men nu verkar detta företag vara bulgariskt.

Jag vill med denna lilla genomgång bara visa att HTML Guardian inte skyddar html-koden mot den som vill titta på den. Notera att det inte rör sig om något säkerhetshål i programmet, utan det ska fungera precis så här. Men nog snackat. Över till mitt tillvägagångssätt:

Hur det gick till

Första steget är att spara ner en kopia av koden på hårddisken så vi har något att studera. Sidan jag använder för mitt experiment är demonstrationen på http://www.protware.com/. De har "spärrat" högra musknappen, så då går man enklast in på "Visa"-menyn i IE och väljer "Källa". Hade det av någon anledning också varit "spärrat" hade man fått använda wget.

När vi nu har koden kan vi börja leta efter intressanta saker i den. Det som är intressant är att det finns en sak som inte går att dölja, och det är den första <script>-taggen. Vi söker efter den och hittar följande:

<script>
var ie92 = 4108;
v3 = 109;
eval(unescape('%76%61%72%20%70%70%3D%66%75%6E
%63%74%69%6F%6E%28%75%29%7B%64%6F%63%75%6D
%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%73
%63%61%70%65%28%75%29%29%7D%3B'));

Alla dessa procenttecken med siffror ser intressanta ut. Det är ett väldigt enkelt sätt att koda text som kallas för url-kodning eftersom det används i url:er (webbadresser). Det används för att vissa tecken är förbjudna i webbadresser, och genom att koda om dem kan man skicka med dem ändå. Här finns det dock ingen annan anledning att ha det än att försöka dölja vad som egentligen sker.

Efter varje procenttecken kommer två hexadecimala siffror som tillsammans talar om ascii-värdet för tecknet. Om du är obekant med ascii kan du klicka här för att få upp en ascii-tabell där du kan se vilka tecken siffrorna motsvarar. Vi kan ju lite snabbt kolla upp värdena vi hittade i koden. %76%61%72 börjar det med. 76 är första värdet och vi letar upp det i kolumnen "Hex" och ser att tecknet är "v". Sedan kollar vi 61 och ser att det är "a". 72 motsvaras av "r" och %76%61%72 betyder alltså "var". Så här kan man hålla på om man vill, eller så kan man låta datorn översätta istället på min verktygssida. Klistra in texten, klicka i "URL-avkoda" och tryck "Omvandla". Då får vi fram följande:

var pp = function(u)
{
  document.write(unescape(u))
};

document.write är en annan intressant sak. Den skriver ut text på webbsidan utan att den skrivs ut i html-koden och det är förmodligen den Protwares program använder för att skriva ut sidans egentliga innehåll. Därför modifierar vi den lite så den skriver ut sidans innehåll i en textruta istället (för då tolkas inte html-koden). Den nya koden blir:

<script>
var ie92 = 4108;
v3 = 109;
var pp = function(u)
{
  document.write("<textarea>" + unescape(u))
};

HTML Guardian har som sagt två nivåer av "skydd". Första fungerar i alla webbläsare som stöder Javaskript och den andra fungerar bara i Internet Explorer version 5 eller nyare. Om sidan är skyddad med första nivån så räcker det vi gjort hittills. När man ersätter koden och laddar om sidan så får man då istället upp sidans html-kod i klartext. Allt som behövs för att ta sig runt det skyddet är alltså att lägga till ordet textarea i filen.

Protwares exempelfil har dock andra nivåns skydd och om vi tittar på hur sidan ser ut med den modifierade koden ser vi detta:

<script language = JScript.Encode>

JScript.Encode. Det är Microsofts Script Encoder de har använt. Och den har ingen säkerhet, vilket jag har visat tidigare. (Läs artikeln.) Det enklaste här är att använda ett färdigt program för att avkoda texten, men om du läser artikeln ser du att det inte är något problem att fixa det själv.

Vi avkodar texten och börjar titta igenom den. I början av den hittar vi lite javaskriptkod som verkar vara till för att lägga restriktioner på sidan, dvs att högra musknappen inte ska fungera och dylikt. Det behöver vi inte bry oss om utan vi fortsätter leta efter något intressant. En bit ner finns följande:

<html%3E<head%3E<link rel="stylesheet"

Om du minns ascii-tabellen ovan så kan du se att %3E motsvaras av tecknet >. Det som står är alltså <html><head> vilket låter precis som början på själva html-koden. Vi tar alltså och markerar texten därifrån ända ner till <%2Fhtml%3E vilket är slutet på html-koden (2F betyder /). Sedan klistrar vi in den på min verktygssida och väljer "URL-avkoda", och vips har vi fått sidans html-kod!

Länkar:

Protware - Företaget som säljer HTML Guardian som påstås skydda html-kod.
wget - Program för att hämta filer över internet.
Ascii-tabell - Förteckning över vilka tal som tecken motsvaras av.
Tydals verktygssida - Omvandlar text från och till olika kodningar.
Microsoft Script Encoder - Microsofts program för att försöka skydda kod som inte kan skyddas.
Script decoder - Hur Microsofts Script Encoder verkligen fungerar.