Behind DRM encryption schemas

On-line version

Difficulty level
Information for
                 
 
surfer
"John Doe"layman
expert
 
web-master

[ Language ] :: [ Main Index ] :: [ Site Navigation ] :: [ Tutorials ] :: [ Downloads ] :: [ Contact ]

 

Is DRM ver. 2 systems really unbreakable? Well at least should be. If they can be cracked, it is not a fault of system or its design. It is a human fault. Companies must count with fact, that user can be as fool as only want to. In this article, we will focus on principles - without no futher details - on individual encryption schemas.

 


I am strongly supposse to read this article from beginning to end. At least for the first time.

There is no technical details, no links to crack tools and no step-by-step guides.

Please read a DRM chapter of my "Streaming Media Principles" tutorial prior this one: skip to included resumé.


Content

General info: Web-designer specified:
Background & Connections Present &Future Protection
Cipher Algorithms Steganography
Secure Internet Communication  
Breakthrough External links:
  Hunting for URLs
DRM clips (resumé) Hunting for Batch Job parameters

 

 

Background & Connections

The first generation of DRM is based on flags. Simply, somewhere in the file is some bit which is set (has value 1) and clip is protected in some way. It cannot be saved by encoders, or Pro version of players, it is not playable unless there is some page displayed etc. This technique has been in use long before any media overhelm internet.

The most famous case has been concerned on TrueType TTF fonts and PostScript. When Adobe Acrobat ver. 4 has been released (more-less 1993), suddenly a lot of fonts cannot be embeded. Even they cannot be printed on the newest model with PostScript ver. 3. The reason was that those fonts has a wrong value of copyright byte (it has been set to value 1 which is not defined at all at specification) because various font-editors application mistake. Consequently, rip engine suppossed that fonts is fully protected and cannot be embeded - just for explain, by this way you can get a copy of font for later reusing without buying it. Even now, this pre-press nightmare still resists and adds its own problems to another nightmare called code-pages.

One of these flag can also mean that clip needs a password to be playable, ev. another password to be editable. Clip can be also crypted in some way. For example, Macromedia Flash files use these flags. We will return to its cipher algorithms common principle later.

But for now, it is surely obvious to you that breaking this kind of protection is poetically as hard as seal broken pin at video-cassettes. You even need not to crack something - usually it is enough to use some non-standard player which will ignore all of flags.

The second generation of DRM are a part of long-term project called XML. Technologies like Cascade Styles (CSS), XHTML, Standard Multimedia Integration Language (SMIL), media-reference tickets (TIX, QTL) are all just a particullar pieces of one big puzzle. General contures gave ISO with standards MPEG-4 (media compression and transportation), MPEG-7 (authors, genre and content chunks and description) and finally MPEG-21 (full chain of all elements and their roles).

Owner's exclussive content protection techniques are described at MPEG-21 and they are really just a techniques to assert authors they can do with its product whatever they want to. Maybe you remember, that Michael Jackson prohibits for two years before its album Dangerous to play all of his songs anywhere on the world. Amok like this, can be done through MPEG-21 much-more easier. Maybe you are curious why media formats - well, allmost all civil technologies can develop only because they are used in some way at entertaiment. If it is sport, game, or pornography - you can left a lot of matter out of your head.

The works over DRM2 has been accelerated thanks to MP3 and causa-causalis called DeCSS. Entertaiment industry finally comes to conclussion that none fix encrypion schema is unbreakable for a long term. The only way - at 1998 - has been using assymetric ciphers, which has been legal at Europe. So, concerning on one-time passwords.

The first generation of DRM are still far used than the second. The reason is, that all encryption schemas has been successfuly cracked meanwhile. For example, DivXPro even do not try to hide something - they publish it and make it so cheap, that no one will try to steal it. But it is not a problem of insufficient algorithms - it is a problem of customers. Distributor must count with this, that there is always someone which is stupid far beyond ussual. Worse, he can be stupid as he only wants to. And the rights will be on his side. The second generation DRM costs are incomparable, so it is fair to except than whole system will be unbreakable. But, as for now it can not be. They must wait until the third generation or look after some other way. Like reborned Java-based-videos.

[ Contents ]

 

Cipher Algorithms

Among various classification of cipher algorithms, the most important for us is their separation into symetrical (with secret key) and assymetrical (with pair of private key and public key). The key, to be strict the transfer of the key, is the essential problem of whole ciphering.

Symetrical ciphers take the content and hash it using some key (password). This hashed document is sent to customer. Customer has to use the same algorithm with same key to see the content. There is no problem at all with algorithms. They are quick, relativelly simply to be implement into chips on cards and all presently used algorithms are really strong enough, even when some restriction for key-length are in use.

Therefore the most of software has been made for a long time at USA, its administrative has been applicable. Since 1977, the sky is falling: key-length has been cutted to 40-bits. It means that only 40 / 8 = 5 characters can variable.Alorithm itself can work on 128-bit base, or even 512-bit base, but still only the first 5 characters needs to be identify. All others (11 or 59 from examples) are given as constant or generated from those five. The cipher is an arm (like gun or dynamit) - no matter that it cannot kill directly. It still can be used to make some damage on goodies.

Bill Clinton's administrative extend this limit to 56-bits and since 2000 there are no limits for particullar algorithms. They use up to 128-bits. Be as is, the most presently used software has been developed at times when 40-bit key-length limit has been applicable. At least for countries which signed the Wassenner Treat at Vienna, Austria (Nov. 1996)

The Europe did not have time to mature on this level of conservatism. And after Echelon afera (or here), even do not want to. If you want to know more about interception capabilities, please read as first Duncan Campbell’s article Interception Capabilities at http://duncan.gn.apc.org/stoa_cover.htm. Then continue with full reports for European Parliaments of its own Commitee Echelon at www.europarl.eu.int/committees/echelon_home.htm.

Supposingly, you have no idea how the password looks like. So you will try all the possibilities - it is called "brute-force attack". When you have the most weak 40-bit key you will have to check 2 powered to 40 combinations. It is 1099511627776 or 1 with twelwe zeros (mathematically 1E12). Using the hardware key for checking, it will take you more-less a four months. Using software-only solution it should take on ordinary computer no more than 10 months. If you have, say 100 computers and their computation power fully to your disposition, it will need adequate shorter time. But, beware: if the password contains only letters (capitalize and lowercase) and numbers, you will finish on single computer even with software-only after three weeks! When you have to check 128-bit key, you will have to check 2 powered 128, which is 3.4E38. It will take you longer than eternity: 2.2E26 years. According to thermodynamical models of our universe this its cycle cannot existed more than 8E10 years - our present time is the first quater of that period.

It is much enough, for ordinary person, but we are not live at world where is a problem to find something. Once the key is out, anyone can freely decrypt the content. My point is not an individual files of customer. My point are, e.g. satelite TV station or internet resealer. For them the key change could be a costly action because they must deliver it to all its customers.

This problem in Catch-22 style (a famous novell by Joseph Heller) has been a dogma since end of 20th century. When two people wants to share some secret (message), they must share another secret (password) already. This problem of key distribution has been solved based on genial idea. So simple and so elegant as every genius:

Supposse that I want to send you something privately. I put it into metal-box and close it with pad. Then, I send it to you, but I will keep the key for myself. You have not my key so you cannot open the box. Instead of destroying it by brute-force attack, you will add your own pad. Then you send me the box back. Now, I can remove my pad, because the box will still be secured with your pad. So I will send it to you once again. You finally get a metal-box locked only by your own pad. You can open it and discover what is inside. Simple isn't it?

And where is that genial idea? Please, try to figure it out for yourself. If you are not passionate with these stuffs, just continue with reading.

Is it a double ciphering? I can cipher it even five times with five different keys when necessary - so where is the point. True, you can cipher it even five times, but what you must to do when you want to decipher? You must do deciphering at exact reverse order. No, it is not a point, but you are close. When you read the story carefully, you realise, that the pads are not removed on the same order as are given! The keys could be applied in any order and it will work. And this is that genial idea.

The only "detail" which left is to find such mathemathic function which is not reversible: they are one way only like mixing of yellow and blue. You will get a green, but you cannot separate the source colours back. All of them wotk with modular mathematic over a very big prime numbers. Instead of going futher into mathematic details of presently used systems, I give another example:

Suppose that I tell you, that I multiplied 3 by 4, then divide with some number and get 2. You can find out without problems that number - it is 5, of course. This is simplyfyied principle how works any DRM2 player. When you want to crack the code, you know that two numbers have been multiplied - so you know algorithm, you also know that after their divission by 5 - you know the last used one-time key - you will get 2 - you know how the decrypted clip looks like. And now, try to figure out, what are those number used, if you want to replay the clip. You can spend a whole life with seeking them.

Asymetric algorithms usually works with powering, so you are seeking in logarithms.

As its invertors are mentioned Whitfield Diffie, Martin Hellman and Ralph Merkle for key-distribution system and Ronald Rivest, Adi Shamir and Leonard Adleman for assymetric cryptography. British Secrets Service has declassified a few documents which prove, that Clifford Cocks with James Ellis and Malcolm Williamson have got the same idea before Americans. However, they all worked for British goverment at Goverment Comunication Headquaters (GCHQ) and they did not create something practical to use.
I personally think, that Americans solve key-distribution and assymetrical cryptography at means "for world". The same as Christopher Columbus discover the America. No matter if Vikings or Portugales have been there before. If they was there, the rest of world has no practical use of it.

Something simmilar can be said about SIM cards, credict cards or pay-TV cards. You can find out what is one of these numbers and you know algorithm. And it is everything. You do not know the result (mobile-phode identification, account number, or how decrypted signal shoud looks like) and you have no idea about PIN code. But checking a four numbers means 10000 possibilities, after all. But at pay-TV cards (the second generation) it is not so easy. None of their systems has been cracked and as we will see, it will not be. All what can be done is reprogramm an official card stollen to someone for your receiver.

Again, it depends, how big prime numbers you used. Asymetrical algorithms differs in their strength much-more than symmetrical. It is almost impossible to compare two assymetrical algorithm only based on used bit-length. Compare asymetrical and symetrical algorithm is very brave: the same comparision can be done with Formula - 1 monopost and civil airplane: both can transport a man quickly, isn't it?

[ Contents ]

 

Secure internet communication

In present time, there are a few systems in use. They differ with used algorithms and with details in implementation. They are all optimized for concrete task. But general layout stays the same. I decide to present you a basic schema with classic scenario: Alice wanna write to Bob. There is an (evil) Eve - somewhere out there. Eve is Bob's legal wife. Alice is (presently) more attractive to Bob. So communication between (secret) lovers must be secret.

She decide to use a Pretty Good Privacy mail client.

Picture 1: Schema of Typical Internet Communication: Layout for PrettyGoodPrivacy
Picture is on the edge of quality and readibility.
[ Full picture - on higher quality and resolution. Beware: 197 kBy! ]

Secure transfer protocol (HTTPS) and DRM2's player - server negotiation has simillar layout. There is also a S-MIME proposed and a few other complex systems for digital signaturing. Player's private key is unique player identification, public its serial number. The same on the server side. Therefore there are "different" copies of player on other computers, there are also a totally different private keys.

By the way, the hash-algorithms. It is an advanced CRC or cyclic redundand check method - it just checks the data integrity as it is done e.g. at any archiver application. They are complicated than CRC method, but they are error-proof ad absurdum. Imagine, you change a single cell in your body. They will discover it. But what is more important, it is that can work even on minimal legth of data. They will achieve their correctness even when they process two characters and not the billions. Please look also here for some more details about CRC.

Back to our DRM2. The very base of the second DRM generation are licences. It is a redirector - a XML entry in fact with some content clearly readable - which contains the clip and reseller address and conditions which must be asserted to play the clip. These conditions can be really miscellanous - classic validity time, number of playbacks, time interval to be played, and so on. Important is, that when licence expires or corrupts, no one will help you.

When you buy a music and they sent it to you in e.g. WMA format protected by DRM2, you can play it only by Microsoft Windows Media Player. If its licence is valid for say ten years, you will heard the song only for ten years. If you update your computer more than four times (see Microsoft Windows Media Player help files!), your licence will be automatically dissabled. If you reinstall Microsoft Windows and forget about licencies backup, you will probably discover a beast inside of you. Helples can drive a man to be mad as hell. And you are a legal owner!

To spare your time, all licencies holds time of the last access and sometimes also a time of the last computer shut-down (it must not be a precise time-stamp, say in tolerance of a few hours). So it will not help you to turn your system clock back.

[ Contents ]

 

Breakthrough

I believe, I can skip the paragraphs concerned on players identification, licencies and everythig I have wrote at "Streaming Media Priciples" tutorial. If you do not read it already, please skip here for a short resumé. Let's concern on breakthrough basics.

How it is possible that someone breaks this scheme? Let's take a closer look to keys. What happend if Alice loose her public key? Nothing, it is public so anyone who is concerned knows it. But what will happend, when Alice loose its private key? As you trace the schema more detailed, you must conclude that this is total dissaster. True full catastrophy. And we are on the beginning of article. Remember an example with two unknown numbers (X x Y / 5 gives Z rest 2) - we just discover the one of them.

And this is the (beginning of the) way, how is possible to generate a clip free of licencies. And also our finish - as I said: no futher details, no links for tools, no information how to discover the one-time key and no step-by-step descritption how to download and decode.

When you read full article, for sure you can guess if that decrypting can be done after licence expires (i.e. is not valid). If it can be processed on other computer than original one, which creates (downloaded) DRM2 protected clip. If it can be done on other type of operating system. If it is enough to have the clip and its licence for decryption. If it is unsecure to leave data at licencies clearly readable. And so on.

[ Contents ]

 

Present and Future Protection

It is hard to predict any future, when all investors just wait how the situation will looks like. And after all, how the computer and internet will work after a few years. As we know from the history, no algorithm - and a specially no fix protection method - will be safe against code breaker on long term. Pay-per-view on-line videos are just very attractive. DRM2 could be the right way, however its implementation as strong as is necessary can be done only at cards. Not on computer - its really strong implementation leads to absurdal situations.

Have you know, that there live only 4.7% of world population at United States of America, but there are also live and work more than 50% (!!!) of lawyers taken world-wide?

However, this method is really costly and out of reach for ordinary or small-scale firm with no funds to throw away. It will be cheaper for you if you take into consideration as the first possibility of masking links and using a some concrete players configurations.

As for links:

An image map is totally useless. It is nice but protects nothing.

The various JavaScript tricks which mask URLs in source code, block their display at status-bar, or simplify the browser windows, are not a serious barrier! Not if they are used alone.

I have described two possibilities at "E-mail box's hiding" tutorial. In concrete a document.write() and simple replacing with unicode characters codes. As you can see, it can stop the robot, however against a man which logged into page physsically, they are useless. A one can see clearly translated links and he can copy it directly from source-page. In case you use a document.write( ) function you will create a serious barrier for people from management, but not from a technical department. On the other side, it can cost you much: because not all browser can interpret this by default.

What about scripted gallery? A whole domain starts as training area. You can try to download at least gallery no. 4 and no. 5. And you can read a few tips how to figure-out a correct approach for their batch downloading.

No, JavaScripts alone is not enough. Because a lot of utilities can block them very effectivelly.

Macromedia Flash, for example, can assign a link as an action for a button. This technology plug-in is almost everywhere, so there is no reason to be so conservative and not to use it. I saw a few independed freeware project for creating a simple web-gallery with standard "player-like" button-bar. When you assign a web-space URL, (so image and/or clip is not a part of Macromedia Flash file), it can be unreacheable to catch the link. I believe there are some freeware applications which are able to generate a single flash-button with link.

PHP generation of (redirector) links for embeded players is also a nice possibility and very serious barrier.

As for media itself.

At first, demand on using embeded players configured by SMIL and CSS. It not only make a changes at design easier, but it will spare you a lot of time and financies when switching to some other technology.

Always identify a player - do not accept a "Mozilla/4.0" as user-agent. You can use a player cookies for this purposse.

Cloak a timer-port for RTSP protocol.Clip will not be playable after downloading.

Use Apple QuickTime video transported through RTSP. This technology is minor, but not because of lack at quality. Consequently, it is constantly overlooked by various individuals hidden after their nick-names.

Use a Java-based-videos. There are a free ready to use players and converters. It will be easy to download a file, but the one must construct a player also. At xDSL technologies you can achieve an accepteable quality.

There is no perfect way how to protect the content. Even when secure-path systems will be mounted at every hardware, still you can take a digital camera and film the movie from screen. In some way your content must arrive to human deceptors.

[ Contents ]

 

Steganography

Additionally you should use a steganography for all your content. I do not mean only authoring chunks or blocks which can be embed to every present file format. These information can be easily found and stripped (or rewritten). I also do not mean a watermark - it is vissible and can be automatically retouched. I mean a true steganography which can mask additional information into content in this way, that no one will even catch a suspission that there is something more inside of file.

When you heard this term for the first time, please surf to any of this archive (there is nothing original but commented bookmarks): Neil F. Johnson‘s Steganography Archive at http://isse.gmu.edu/~njohnson/Steganography/, and StegoArchive at http://www.stegoarchive.com/.

I wrote a special article about this techniques (75 sites and 5 MBy as PDF document at Slovak) and even programmed some utils for embeding an information into some kind of media. In concrete PNG (8-bit, 24-bit), JPEG, MP3, MPEG I-Frames and some AVI's codecs. However all ideas are "borrowed" from different sources - mostly a serious research - and the utils are rather toys, which I have to modify on fly prior of use. A quick preview, of how can it be used on images is at pic. 2 till pic. 5.

 

Steganography examples have almost 1 MBy of pictures, so I have decided to throw them away from on-line version.
Please download an archived site here (1071 kBy).

Images captions follows:

Picture 2: LSB method.
It can be used for loss-less compression images only! In this example bitmap is 24-bit PNG.
Upper row are original image and its lowest bit-layer of blue channel. Below is image with embeded information. The lowest bit of blue-colour and exclussion of the third layer of blue and the lowest of green ( ( 00000100b and rgbtBlue ) xor ( 00000001b and rgbtGreen ) ) contains embeded information - logo and "noise" with authoring information.

Picture 3: LSB method again.
This time for 8-bit version of image, but only 128 colour (for simplicity) can be given. The rest is computed. If you use a colour image the pallette will betray you. Consequently, or you randomize it - but this is meaning-less, because robot will sort it - or you will use a grayscale image. Black dots are pixels which differs from original.
There is an original image on the upper left with count of colours already reduced to 128 colors, below image with embeded information (256 colors).
The differencies between them are at second column. I mean differencies between original 256 which I have got via indexing local adaptive pallette from 24bpp image at picture 2 and embeded image.
Local pallette of embeded image is randomized - as you can check for yourself. However, after sort, you can got a suspission.

Picture 4: JPEG DCT (classical JFIF compliant, not JPEG2000) image watermarked by F5
My lovely hamster which company me when I finishing with work at night. It name is Pikachu.
Information is embeded using the Andreas Westfeld's F5 method directly onto JPEG coefficients. It resists until image is not re-converted.

Picture 5: JPEG DCT (classical JFIF compliant, not JPEG2000) image.
The same image. Information embeded into vector space of its blue channel after its Fourier transformation. The dotted circle on the up right is that info.
You can do almost anything with this image (adding noise, resize, rotate, changing colors or luminosity, re-convert it) and embeded information resist. As you can see at rows 2 till 4.

 

I personally like the most the F5 method of Andreas Westfeld for JPEG images. Its implementation is really quick. Checking for plagiats can be also proceed very fast (a few images per second). This method is not so persistent as Fourier-space-based but it's accepteable risk. You can read more and/or download an (compiled) applications at http://www.inf.tu-dresden.de/~aw4/. Fourier transformation is much slower - both in embeding and in checking - you need cca 5 second for single image. I am not quite sure, if there is any stand-alone application for Fourier-space-based steganography. There are a lot of Mathematica solutions. You can try to look at Derek Upham's JSteg library archive at ftp://ftp.funet.fi/pub/crypt/steganography/. I personally use my own application programmed on research of dr. Jessica Fridrich. Her personal archive is accessible at http://www.ssie.binghamton.edu/fridrich/. There are also a few research for JPEG2000's and videos.

Less-significant-bit-plane algorithm for lossless compressed images (BMP, GIF, PNG, TIFF) is trivial to implement. Its resistent is slightly over none. It is possible even to automate its removing with standard bitmap editors. I personally use my own application which is optimized and automated for BMP and PNG - both 8-bit and 24-bit. I have heard that there is one plug-in for GIMP which can embed an information, however I did not found it even on contributors page. The basic implementation is presented, e.g. by Romana Achado at http://www.fqa.com/romana/. Application can work also off-line.

For MP3 music files you can use Fabien A. P. Petitcolas application MP3Stego. It is downloadable from http://www.cl.cam.ac.uk/~fapp2/steganography/mp3stego/. Application is a few years old, but works fine. By the way, it use JSteg library and principles. I was playing with variation of echoes within 1/1000 sec limits as well as with variation of phases (you change the "colour" of sound), but I did not finish it. There has been no such accute needs.

As for videos I have experiment with extracting I-frames and putting them back after embeding a watermark (according to used codec compression). Then reencoding and checking, if there are at least a few percent of embeded watermark left. Usually there left something. But it takes a lot of time to proceed it. I have some working fragments of codes, but they are all just one-purposse utils. It is, after all, just additional watermark.

There are a few other medias (e.g. PDF documents) which you can watermark additionally, however they all have a very good digital signature technologies implemented. Both on symetric ciphering level as well as on full authorization. And one last remark: none of mentioned method allows to throw away an information without traces. On other words, you must keep an unmodified original copy of file.

[ Contents ]

 


Here is the part about DRMs media from tutorial "Streaming Media Principles". It is just a copy: you will find here nothing new when you have read mentioned tutorial already.

Digital Rights Management clips

Digital Rights Management, the term is usually short-cutted to DRM or DMR, is general term for „owner exclussive content copy protection“ technologies. True is, that this technology is „copy prevention“ like. In present, they are applicable to DivX media, Real Media, Microsoft Windows Media. Except of DivX, there are two generation of DRM, refered as version 1 and version 2. As you can guess, all companies use their own variants of the same basic principle. For us, the details are irrelevant for now, so we will talk generally.

DRM allows servers identify concrete player on cocrete computer and provide clip for it. This is a reason, why there are an options which allows player identify uniquelly.

DRM1 is based on flags. These can configure players, to not play clip unless you are physically logged at concrete www-site. Simillar technique is used by fonts and PostScript users for sure know, what am I talking about – because their licence not allows embeding, substitions fonts is used during printing or exporting to PDF.

DRM2 is based on licences, which defines how many times within some time-interval, clip can be played. Players save this licences at special crypted file, or even at clip-file itself (RealMedia, DivX), together with last used date/time stamp (because of turning system clock back). We should back-up them (WMP :: Tools > Backup licences) before re-installing the system, and presently, even updating players and/or any manipulation with hardware.

Clip is crypted and server transmits all necessary hash-codes to decrypt it. If you have valid licence. Therefore there are other „copies“ of player on other computers, clip will not be playable on them. Therefore stream is decrypter at player, it is possible that – when you have „secure path“ hardware – it turns to be impossible to capture video through TV card.

So, the question is not: „May I download DRM files?“ but „Will I be able to play them?“

You will probably download the file – you can find out clip URL and, if the server will want to communicate with anonymous player (i.e. Net Transport) or will grab your player identifier itself, you can also download them. URL protocol will be probably HTTPS, because server send an encrypted data, so it must be error-free transmission.

If clip is protected by DRM1, non-standard players can play them, or there is a good chance that converter will ignore licence flags.

Worse, if clip is at DRM2. This has been broke at Windows Media (it works on WMA as well as WMV) at 2001 and it works perfectly, so it really can free clips from licences. However it is not an easy task, because you have to do a lot of things during very short time, to obtain and save hash-codes. DivX DRM system is – by producent own word – „so cheap, that no one will try to break it.“ They declare already, that they will realease source codes for Linux, so we will see. RealMedia will not be downloaded, because all „recorders“ are confused with crypted data and they suppose, it is not a RealAudio/RealMedia clip. Net Transport can download a raw stream, however it will not be playable, because it is crypted and without hash-codes. Apple QuickTime media can be decrypted when transported through HTTPS. It is a case of e.g. Apple iTunes. As far as I know, there is no possibility how to download Apple QuickTime movies transported through RTSP, except very rare cases when you use an official Apple QuickTime Pro and you just save independed movie or better export it converted.

When you are concerned on downloading, please see also my tutorial "Hunting for URLs" here, or surf to my "Download" page for download their off-line versions.

[ Top ] :: [ Section Breakthrough ] :: [ Contents ]


You can translate or link this tutorial under conditions written at this domain's "Legal Stuff" page and followed. If any doubts, please contact me.

Copyrights, trademarks and credits are collected here.

Marián Stach
Prešov, Slovakia Central Europe
2004-07-30

[ Contents ]

[ Language ] :: [ Main Index ] :: [ Site Navigation ] :: [ Tutorials ] :: [ Downloads ] :: [ Contact ]