How to decrypt a DVD: in haiku form. (Thanks, Prof. D. S. T.)

by Seth David Schoen

(I abandon my

exclusive rights to make or

perform copies of

this work, U. S. Code

Title Seventeen, section

One Hundred and Six.)

Muse! When we learned to

count, little did we know all

the things we could do

some day by shuffling

those numbers: Pythagoras

said "All is number"

long before he saw

computers and their effects,

or what they could do

by computation,

naive and mechanical

fast arithmetic.

It changed the world, it

changed our consciousness and lives

to have such fast math

available to

us and anyone who cared

to learn programming.

Now help me, Muse, for

I wish to tell a piece of

controversial math,

for which the lawyers

of DVD CCA

don't forbear to sue:

that they alone should

know or have the right to teach

these skills and these rules.

(Do they understand

the content, or is it just

the effects they see?)

And all mathematics

is full of stories (just read

Eric Temple Bell);

and CSS is

no exception to this rule.

Sing, Muse, decryption

once secret, as all

knowledge, once unknown: how to

decrypt DVDs.

Arrays' elements

start with zero and count up

from there, don't forget!

Integers are four

bytes long, or thirty-two bits,

which is the same thing.

To decode these discs,

you need a master key, as

hardware vendors get.

(This is a "player

key" and some folks other than

vendors know them now.

If they didn't, there

is also a way not to

need one, to start off.)

You'll read a "disk key"

from the disc, and decrypt it

with that player key.

You'll read a "title

key" for the video file

that you want to play.

With the disk key, you

can decrypt the title key;

that decrypts the show.

Here's a description

of how a player key will

decrypt a disk key.

You need two things here:

An encrypted disk key, which

is just six bytes long.

(Only five of those

are the _key itself_, because

"zero" marks the end.

So that's five real bytes,

and eight times five is forty;

in the ideal case,

forty bits will yield

just short of two trillion

possible choices!

Ian Goldberg once

recovered a key that long

in seven half-hours.

But his office-mate

David Wagner points out that

it's _impossible_

to achieve what the

DVD CCA seems

to want to achieve,

even by making

the key some reasonable,

"adequate" key-length:

There's no way to write

a "secure" software player

which contains the key

and runs on PCs,

yet somehow prevents users

from extracting it.

If the player can

decrypt, Wagner has noted,

users can learn how.)

This is a pointer,

"KEY", to those bytes, and when we're

done, they'll be clear-text.

Oh, the other thing!

Called "im", a pointer to six

bytes: a player key.

(Now those six bytes, the

DVD CCA says

under penalty

of perjury, are

its trade secret, and you are

breaking the law if

you tell someone that,

for instance, the Xing player

used the following:

Eighty-one; and then

one hundred three -- two times; then

two hundred (less three);

two hundred twenty

four; and last (of course not least)

the humble zero.)

We will use these few

internal variables:

t1 through t6,

unsigned integers.

k, pointer to five unsigned

bytes. i, integer.

So here's how you do

it: first, take the first byte of

im -- that's byte zero;

OR that byte with the

number 0x100

(hexadecimal --

that's two hundred and

fifty-six to you if you

prefer decimal).

Store the result in

t1. Take byte one of im.

Store it in t2.

Take bytes two through five

of im; store them in t3.

Take its three low bits

(you can get them by

ANDing t3 with seven);

store this in t4.

Double t3, add

eight, subtract t4; store the

result in t3.

Make t5 zero.

Now we'll start a loop; set i

equal to zero.

i gets values from

zero up to four; each time,

do all of these steps:

Use t2 for an

index into Table Two:

find a byte b1.

Use t1 for an

index into Table Three:

find a byte b2.

Take exclusive OR

of b1 with b2 and

store this in t4.

Shift t1 right by

a single bit (like halving);

store this in t2.

Take the low bit of

t1 (so, AND it with one),

shift it left eight bits,

then take exclusive

OR of that with t4; store

this back in t1.

Use t4 for an

index into Table Four:

find a byte and store

it back in t4.

Shift t3 right by three bits,

take exclusive OR

of this with t3,

shift this right by one bit, and

take exclusive OR

of this with t3,

shift this right by eight bits, and

take exclusive OR

of this with t3,

shift this right by five bits, and

(No exclusive OR!

Orange you glad I

didn't say banana?) take

the low byte (by AND

with two hundred and

fifty-five); now store this

into t6. Phew!

Shift t3 left eight

bits, take OR with t6, and

store this in t3.

Use t6 for an

index into Table Four:

find a byte and store

it in t6. Add

t6, t5, t4; store

the sum in t5.

Take t5's low byte

(AND t5 with two hundred

fifty five) to put it

in the ith byte of

the vector called k. Now shift

t5 right eight bits;

store the result in

t5 again. Now that's the

last step in the loop.

No sooner have we

finished that loop than we'll start

another; no rest

for the wicked nor

those innocents whom lawyers

serve with paperwork.

Reader! Think not that

technical information

ought not be called speech;

think not diagrams,

schematics, tables, numbers,

formulae -- like the

terrifying and

uniquely moving, though cliche,

Einstein equation

"Energy is just

the same as matter, but for

a little factor,

speed of light by speed

of light, and we are ourselves

frozen energy."

Einstein's formula

to convert from joules into

kilogram-meters

squared per second squared,

for all its power, uses

just five characters.

But Einstein wrote to

physicists: formal, concise,

specific, detailed.

And sometimes we write

to machines to teach them how

tasks are carried out:

and sometimes we write

to our friends to show a way

tasks are carried out.

We write precisely

since such is our habit in

talking to machines;

we say exactly

how to do a thing or how

every detail works.

The poet has choice

of words and order, symbols,

imagery, and use

of metaphor. She

can allude, suggest, permit

ambiguities.

She need not say just

what she means, for readers can

always interpret.

Poets too, despite

their famous "license" sometimes

are constrained by rules:

How often have we

heard that some strange twist of plot

or phrase was simply

"Metri causa", for

the meter's sake, solely done

"to fit the meter"?

Programmers' art as

that of natural scientists

is to be precise,

complete in every

detail of description, not

leaving things to chance.

Reader, see how yet

technical communicants

deserve free speech rights;

see how numbers, rules,

patterns, languages you don't

yourself speak yet,

still should in law be

protected from suppression,

called valuable speech!

Ending my appeal

on that note, I will describe

the second loop. Store

nine in i; i gets

values from nine down to

naught. Each time, do this:

Use i+1 as

an index into Table

Zero: find a byte.

Call that byte p1.

Now use i for an index

in Table Zero:

find a byte and

call that byte p0. Now

use p1 as an

index into k

(a vector, remember?); thus

find a byte b1.

Use p1 as an

index into KEY, as well:

find a byte, use that

byte as an index

into Table One. Call the

byte you find b2.

Use p0 as

an index into KEY to

find a byte b3.

Take exclusive OR

of b1, b2, b3,

and store that in KEY

(not just anywhere,

though!). In KEY at the byte that's

indexed by p1.

That's it for that loop

and also for the task of

disk key decryption.

Title keys are next.

It isn't hard to decrypt

one. The rule's the same!

Well, there's one slight

change: where you use t6, it's

Table "Five", not "Four".

And this time im is

the decrypted disk key, and

KEY the title key.

How would you like to

hear how to decrypt _both_ the

disk and title keys?

All we'll need are the

encrypted versions and a

player key. No sweat!

We'll call the title

key TKEY, a pointer to

six bytes, encrypted.

We'll call the disk key

DKEY, a pointer to six

bytes, encrypted too.

We will use a few

internal variables,

once again: so i,

an integer, will

serve again as loop index.

im1 is six bytes,

im2 is six bytes.

Both vectors and the latter

holds our player key.

Now I told you once

about a player key I

think they gave to Xing --

I don't know this for

sure; DVD CCA

said so in court, though.

Otherwise I'd say

that this is just a "magic

number" from on high,

vouchsafed to mortals

from the mouths of the Muses

for our benefit.

In reality

I'm told it was discovered

by M.o.R.E.,

some Europeans

two-thirds of whom are today

still anonymous.

I don't want to make

a long excursus right now

on why that's not bad:

reverse engineers

in many fields are heroes

of technology,

for advancing the

knowledge of their colleagues or

of the public mind.

Yet in software the

recent trend has been to brand

tinkerers as thieves!

I urge you to read

the Crypto-gram newletter

on why that's not so.

Bruce can make the point

better there than I can here,

sticking to haiku.

So this number is,

once again, the player key:

(trade secret haiku?)

"Eighty-one; and then

one hundred three -- two times; then

two hundred (less three);

two hundred twenty

four; and last (of course not least)

the humble zero."

If you didn't know

a valid player key, then

you could find one out --

ask Frank Stevenson,

or his fellow programmer

wise Andreas Bogk.

All we have to do

is this: copy our DKEY

into im1,

use the rule above

that decrypts a disk key (with

im1 and its

friend im2 as

inputs) -- thus we decrypt the

disk key im1.

Use the rule above

that decrypts a title key.

TKEY and our new

disk key im1

are inputs now -- we decrypt

TKEY, and we're done.

That was straightforward.

Probably we didn't need

to explain this part,

but computers are

very literal, so we

might as well do so.

This part is really

exciting for movie fans:

decrypt DVDs!

Well, at least sectors

of DVDs, but they are

made up of sectors.

Sectors (of two to

the eleventh bytes) are the

encryption units.

Rejoice then, get some

popcorn out, and butter if

you aren't vegan.

Margarine works well

if you're vegan, or if you

are watching your weight.

I've heard you can put

tarragon on your popcorn.

I haven't tried it.

Why did I tell you

to rejoice? Because we are

about to watch a

movie, at least if

we have a good MPEG-2

player close at hand.

We need two things now,

though, beyond our MPEG-2

players and popcorn:

A vector "SEC" of

two thousand forty-eight bytes,

disk sector contents.

(These start off in their

encrypted form, but we will

leave them decrypted.)

And a vector KEY

of six bytes, the decrypted

title key we'll use.

We will use these few

internal variables:

t1 through t6,

unsigned integers.

Remember those from before?

END is a pointer

to the end of the

sector, which is SEC plus two

thousand forty-eight.

Take the first byte of

KEY (that's byte zero), perform

exclusive OR with

byte eighty-four of

SEC. Treating the result as

an integer, take

OR of that with two

hundred fifty-six. Store the

result in t1.

Take the next byte (which

is byte one) of KEY, perform

exclusive OR with

the next byte of SEC

(byte eighty-five, right?); store the

result in t2.

Take bytes two through five

of KEY and take exclusive

OR of these with their

counterparts abroad,

bytes eighty-six through eighty-nine

of our sector SEC.

Store this in t3.

(It will fit because it is

four bytes, like t3.)

I must quote myself

because we're going to do

some things once again:

(Above, in the first

part, we talked about t3:)

"Take its three low bits

(you can get them by

ANDing t3 with seven);

store this in t4.

Double t3, add

eight, subtract t4; store the

result in t3."

(Now increment SEC

by one hundred twenty-eight!)

"Make t5 zero."

Now start a loop, and

do these things as long as SEC

doesn't equal END:

Use t2 for an

index into Table Two:

find a byte b1.

Use t1 for an

index into Table Three:

find a byte b2.

Take exclusive OR

of b1 with b2 and

store this in t4.

Shift t1 right by

a single bit (like halving);

store this in t2.

Take the low bit of

t1 (so, AND it with one),

shift it left eight bits,

then take exclusive

OR of that with t4; store

this back in t1.

(The step that's coming

up is _slightly_ different from

the original.)

Use t4 for an

index into Table Five:

find a byte and store

it back in t4.

Shift t3 right by three bits,

take exclusive OR

of this with t3,

shift this right by one bit, and

take exclusive OR

of this with t3,

shift this right by eight bits, and

take exclusive OR

of this with t3,

shift this right by five bits, and

(No exclusive OR!

Orange you glad I

didn't say banana?) take

the low byte (by AND

with two hundred and

fifty-five); now store this

into t6. Phew!

Shift t3 left eight

bits, take OR with t6, and

store this in t3.

Use t6 for an

index into Table Four:

find a byte and store

it in t6. Add

t6, t5, t4; store

the sum in t5.

(Again, here's a change

from the original steps:

please don't get confused.)

In Table One use

the byte SEC points to as an

index, get a byte

there, take exclusive

OR of that byte with the low

byte of t5; store

the result where SEC

points, and increment SEC by

one. This is all that

has changed in these steps.

And we're almost done! Now shift

t5 right eight bits;

store the result in

t5 again. That is the

last step in the loop.

Now I want a drink

(mnemonics in crypto poems

are great!); exercise

from singing so long

makes me thirst for a glass of

soda, slice of pie.

For this is the end

of the decryption process;

you can now go home.

But wait! I hear a

voice entreating me to stay:

"O, the Tables tell!"

Alas, I have not

as yet declared to you the

CSS Tables.

This is a major

issue, in that I don't know

what these tables _mean_:

our noble guide has

told us in outline what they

are for, or something

of their structure. But

to me, a humble poet

of mathematics,

they are opaque, they

are certain combinations

of ancient, noble

Number. Their inner

logic, aitia, telos,

still unknown to me.

Herein a clear free

speech question: would courts see fit

to muzzle me, then,

from speaking numbers,

technical data, which I

did not make and more

cannot memorize,

cannot explain in detail,

cannot understand?

I have these numbers.

They have meaning, this is clear:

else why suppress them?

I wish to speak or

let the Muse announce through me

Tables of Numbers.

Professor Moglen!

Help defend my right to share

these numbers with you!

You called the right to

speak with PGP like that

to use Navaho.

Help me then in my

haiku quest to share these bits,

and not be censored.

Preserve my right to

speak here, in this extreme, these

mystery Tables

the products, pieces

of technique, which but a very

few will understand.

Mary Jo White, the

United States Attorney

for S.D.N.Y.,

your logic erodes

any meaningful power

Internet speakers

would retain against

state censorship. Do you care?

Have you any shame?

Fight, brave amici,

with effective, functional

argumentation.

I'll try to help by

singing these octets, until

court orders forbid.

(Sad to say, I have

removed hyphens in numbers:

poetic license.)

Table Zero is:

Five, zero, one, two, three, four,

oh, one, two, three, four.

Table One is long:

two to the eighth power bytes.

Ready? Here they are:

Fifty one; then one

hundred fifteen; fifty nine;

thirty eight; ninety

nine; thirty five; one

hundred seven; one hundred

eighteen; sixty two;

one hundred twenty

six; fifty four; forty three;

one hundred ten; then

forty six; then one

hundred two; one hundred and

twenty three; then two

hundred eleven;

one hundred forty seven;

two hundred nineteen;

six; sixty seven;

three; seventy five; then one

hundred fifty; two

hundred twenty two;

one hundred fifty eight; two

hundred fourteen; then

eleven; and then

seventy eight; fourteen; then

seventy; then one

hundred fifty five;

eighty seven; twenty three;

ninety five; then one

hundred thirty; one

hundred ninety nine; then one

hundred thirty five;

two hundred seven;

eighteen; ninety; twenty six;

eighty two; then one

hundred forty three;

two hundred two; one hundred

thirty eight; then one

hundred ninety four;

thirty one; two hundred and

seventeen; then one

hundred fifty three;

two hundred nine; zero; then

seventy three; nine;

sixty five; then one

hundred forty four; then two

hundred sixteen; one

hundred fifty two;

two hundred eight; one; and then

seventy two; eight;

sixty four; then one

hundred forty five; sixty

one; one hundred and

twenty five; fifty

three; thirty six; one hundred

nine; forty five; one

hundred one; then one

hundred sixteen; sixty; one

hundred twenty four;

fifty two; thirty

seven; one hundred eight; then

forty four; then one

hundred; one hundred

seventeen; two hundred and

twenty one; then one

hundred and fifty

seven; two hundred thirteen;

four; seventy plus

seven; thirteen; then

sixty nine; one hundred and

forty eight; then two

hundred twenty; one

hundred fifty six; then two

hundred twelve; five; then

seventy six; twelve;

sixty eight; one hundred and

forty nine; eighty

nine; twenty five; then

eighty one; one hundred and

twenty eight; then two

hundred one; then one

hundred thirty seven; one

hundred ninety three;

sixteen; eighty eight;

twenty four; eighty; then one

hundred twenty nine;

two hundred; then one

hundred thirty six; then one

hundred ninety two;

seventeen; then two

hundred fifteen; one hundred

fifty one; then two

hundred twenty three;

two; seventy one; seven;

seventy nine; one

hundred forty six;

two hundred eighteen; then one

hundred fifty four;

two hundred ten; then

fifteen; seventy four; ten;

sixty six; then one

hundred fifty nine;

eighty three; nineteen; ninety

one; one hundred and

thirty four; then one

hundred ninety five; then one

hundred thirty one;

two hundred three; then

twenty two; ninety four; then

thirty; eighty six;

one hundred thirty

nine; two hundred six; then one

hundred forty two;

one hundred ninety

eight; twenty seven; then one

hundred seventy

nine; two hundred and

forty three; one hundred and

eighty seven; one

hundred sixty six;

two hundred twenty seven;

one hundred sixty

three; two hundred and

thirty five; two hundred and

forty six; then one

hundred ninety; two

hundred fifty four; then one

hundred eighty two;

then one hundred and

seventy one; two hundred

thirty eight; then one

hundred seventy

four; two hundred thirty; two

hundred fifty one;

fifty five; then one

hundred nineteen; sixty three;

thirty four; then one

hundred three; thirty

nine; one hundred eleven;

one hundred fourteen;

fifty eight; then one

hundred twenty two; fifty;

forty seven; one

hundred six; forty

two; ninety eight; one hundred

twenty seven; one

hundred eighty five;

two hundred forty nine; one

hundred seventy

seven; one hundred

sixty; two hundred thirty

three; one hundred and

sixty nine; then two

hundred twenty five; then two

hundred forty; one

hundred eighty four;

two hundred forty eight; one

hundred seventy

six; one hundred and

sixty one; two hundred and

thirty two; then one

hundred sixty eight;

two hundred twenty four; two

hundred forty one;

ninety three; twenty

nine; eighty five; one hundred

thirty two; then two

hundred five; then one

hundred forty one; then one

hundred and ninety

seven; twenty; then

ninety two; twenty eight; then

eighty four; then one

hundred thirty three;

two hundred four; one hundred

forty; one hundred

ninety six; twenty

one; one hundred eighty nine;

two hundred fifty

three; one hundred and

eighty one; one hundred and

sixty four; then two

hundred and thirty

seven; then one hundred and

seventy three; two

hundred twenty nine;

two hundred forty four; one

hundred eighty eight;

two hundred fifty

two; one hundred eighty; one

hundred sixty five;

two hundred thirty

six; one hundred seventy

two; two hundred and

twenty eight; then two

hundred forty five; fifty

seven; one hundred

twenty one; forty

nine; thirty two; one hundred

five; forty one; then

ninety seven; one

hundred twelve; fifty six; one

hundred twenty; then

forty eight; thirty

three; one hundred four; forty;

ninety six; then one

hundred thirteen; one

hundred eighty three; then two

hundred and forty

seven; one hundred

ninety one; one hundred and

sixty two; then two

hundred thirty one;

one hundred sixty seven;

two hundred thirty

nine; two hundred and

forty two; one hundred and

eighty six; then two

hundred fifty; one

hundred seventy eight; one

hundred seventy

five; two hundred and

thirty four; one hundred and

seventy; then two

hundred twenty six;

two hundred fifty five.

That's the whole Table.

Just when you thought it

was safe, here is Table Two,

which has the same length:

Zero; one; two; three;

four; five; six; seven; nine; eight;

eleven; ten; then

thirteen; twelve; fifteen;

fourteen; eighteen; nineteen; then

sixteen; seventeen;

twenty two; twenty

three; twenty; twenty one; then

twenty seven; then

twenty six; twenty

five; twenty four; thirty one;

thirty; twenty nine;

twenty eight; thirty

six; thirty seven; thirty

eight; thirty nine; then

thirty two; thirty

three; thirty four; thirty five;

forty five; forty

four; forty seven;

forty six; forty one; then

forty; forty three;

forty two; fifty

four; fifty five; fifty two;

fifty three; fifty;

fifty one; forty

eight; forty nine; sixty three;

sixty two; sixty

one; sixty; fifty

nine; fifty eight; fifty plus

seven; fifty six;

seventy three; then

seventy two; seventy

five; seventy four;

seventy seven;

seventy six; seventy

nine; seventy eight;

sixty four; sixty

five; sixty six; sixty plus

seven; sixty eight;

sixty nine; and then

seventy; seventy one;

ninety one; ninety;

eighty nine; eighty

eight; ninety five; ninety four;

ninety three; ninety

two; eighty two; then

eighty three; eighty; eighty

one; eighty six; then

eighty seven; then

eighty four; eighty five; one

hundred nine; then one

hundred eight; then one

hundred eleven; then one

hundred ten; then one

hundred five; then one

hundred four; one hundred and

seven; one hundred

six; one hundred; one

hundred one; one hundred two;

one hundred three; then

ninety six; ninety

seven; ninety eight; ninety

nine; one hundred and

twenty seven; one

hundred twenty six; then one

hundred twenty five;

one hundred twenty

four; one hundred twenty three;

one hundred twenty

two; one hundred and

twenty one; one hundred and

twenty; one hundred

eighteen; one hundred

nineteen; one hundred sixteen;

then one hundred and

seventeen; then one

hundred fourteen; one hundred

fifteen; one hundred

twelve; one hundred and

thirteen; one hundred forty

six; one hundred and

forty seven; one

hundred forty four; then one

hundred forty five;

one hundred fifty;

one hundred fifty one; one

hundred forty eight;

one hundred forty

nine; one hundred fifty five;

one hundred fifty

four; one hundred and

fifty three; one hundred and

fifty two; then one

hundred fifty nine;

one hundred fifty eight; one

hundred and fifty

seven; one hundred

fifty six; one hundred and

twenty eight; then one

hundred twenty nine;

one hundred thirty; then one

hundred thirty one;

one hundred thirty

two; one hundred thirty three;

one hundred thirty

four; one hundred and

thirty five; one hundred and

thirty seven; one

hundred thirty six;

one hundred thirty nine; one

hundred thirty eight;

one hundred forty

one; one hundred forty; one

hundred forty three;

one hundred forty

two; one hundred eighty two;

one hundred eighty

three; one hundred and

eighty; one hundred eighty

one; one hundred and

seventy eight; one

hundred seventy nine; one

hundred seventy

six; one hundred and

seventy seven; then one

hundred ninety one;

one hundred ninety;

one hundred eighty nine; one

hundred eighty eight;

one hundred eighty

seven; one hundred eighty

six; one hundred and

eighty five; then one

hundred eighty four; then one

hundred sixty four;

one hundred sixty

five; one hundred sixty six;

one hundred sixty

seven; one hundred

sixty; one hundred sixty

one; one hundred and

sixty two; then one

hundred sixty three; then one

hundred seventy

three; one hundred and

seventy two; one hundred

seventy five; one

hundred seventy

four; one hundred sixty nine;

one hundred sixty

eight; one hundred and

seventy one; one hundred

seventy; then two

hundred nineteen; two

hundred eighteen; two hundred

seventeen; then two

hundred sixteen; two

hundred twenty three; then two

hundred twenty two;

two hundred twenty

one; two hundred twenty; two

hundred ten; then two

hundred eleven;

two hundred eight; two hundred

nine; two hundred and

fourteen; two hundred

fifteen; two hundred twelve; two

hundred thirteen; two

hundred one; then two

hundred; two hundred three; two

hundred two; then two

hundred five; then two

hundred four; two hundred and

seven; two hundred

six; one hundred and

ninety two; one hundred and

ninety three; then one

hundred ninety four;

one hundred ninety five; one

hundred ninety six;

one hundred ninety

seven; one hundred ninety

eight; one hundred and

ninety nine; then two

hundred fifty five; then two

hundred fifty four;

two hundred fifty

three; two hundred fifty two;

two hundred fifty

one; two hundred and

fifty; two hundred forty

nine; two hundred and

forty eight; then two

hundred forty six; then two

hundred and forty

seven; two hundred

forty four; two hundred and

forty five; then two

hundred forty two;

two hundred forty three; two

hundred forty; two

hundred forty one;

two hundred thirty seven;

two hundred thirty

six; two hundred and

thirty nine; two hundred and

thirty eight; then two

hundred thirty three;

two hundred thirty two; two

hundred thirty five;

two hundred thirty

four; two hundred twenty eight;

two hundred twenty

nine; two hundred and

thirty; two hundred thirty

one; two hundred and

twenty four; then two

hundred twenty five; then two

hundred twenty six;

two hundred twenty

seven. That's the end of the

Table Two listing.

Table Three repeats

itself sixty-four times with

this eight-byte sequence:

Zero, thirty six,

seventy three, one hundred

nine, one hundred and

forty six, then one

hundred eighty two, and then

two hundred nineteen,

and last of all, two

to the eighth, less one (or two

hundred fifty five).

Dr. Touretzky

has a more concise account

of what Table Four

is for, and where it

comes from; but for now, I think

I will just list it:

Zero; one hundred

twenty eight; sixty four; one

hundred ninety two;

thirty two; then one

hundred sixty; ninety six;

two hundred twenty

four; sixteen; then one

hundred forty four; eighty;

two hundred eight; then

forty eight; then one

hundred seventy six; one

hundred twelve; then two

hundred forty; eight;

one hundred thirty six; then

seventy two; two

hundred; forty; one

hundred sixty eight; then one

hundred four; then two

hundred thirty two;

twenty four; one hundred and

fifty two; eighty

eight; two hundred and

sixteen; fifty six; then one

hundred eighty four;

one hundred twenty;

two hundred forty eight; four;

one hundred thirty

two; sixty eight; one

hundred ninety six; thirty

six; one hundred and

sixty four; then one

hundred; two hundred twenty

eight; twenty; then one

hundred forty eight;

eighty four; two hundred twelve;

fifty two; then one

hundred eighty; one

hundred sixteen; two hundred

forty four; twelve; one

hundred forty; then

seventy six; two hundred

four; forty four; one

hundred seventy

two; one hundred eight; then two

hundred thirty six;

twenty eight; then one

hundred fifty six; ninety

two; two hundred and

twenty; sixty; one

hundred eighty eight; then one

hundred twenty four;

two hundred fifty

two; two; one hundred thirty;

sixty six; then one

hundred ninety four;

thirty four; one hundred and

sixty two; ninety

eight; two hundred and

twenty six; eighteen; then one

hundred forty six;

eighty two; then two

hundred ten; fifty; then one

hundred seventy

eight; one hundred and

fourteen; two hundred forty

two; ten; one hundred

thirty eight; and then

seventy four; two hundred

two; forty two; one

hundred seventy;

one hundred six; two hundred

thirty four; twenty

six; one hundred and

fifty four; ninety; then two

hundred eighteen; then

fifty eight; then one

hundred eighty six; then one

hundred twenty two;

two hundred fifty;

six; one hundred thirty four;

seventy; then one

hundred ninety eight;

thirty eight; one hundred and

sixty six; then one

hundred two; then two

hundred thirty; twenty two;

one hundred fifty;

eighty six; then two

hundred fourteen; fifty four;

one hundred eighty

two; one hundred and

eighteen; two hundred forty

six; fourteen; then one

hundred forty two;

seventy eight; two hundred

six; forty six; one

hundred seventy

four; one hundred ten; then two

hundred thirty eight;

thirty; one hundred

fifty eight; ninety four; two

hundred twenty two;

sixty two; then one

hundred ninety; one hundred

twenty six; then two

hundred fifty four;

one; one hundred twenty nine;

sixty five; then one

hundred ninety three;

thirty three; one hundred and

sixty one; ninety

seven; two hundred

twenty five; seventeen; one

hundred forty five;

eighty one; then two

hundred nine; forty nine; one

hundred seventy

seven; one hundred

thirteen; two hundred forty

one; nine; one hundred

thirty seven; then

seventy three; two hundred

one; forty one; one

hundred sixty nine;

one hundred five; two hundred

thirty three; twenty

five; one hundred and

fifty three; eighty nine; two

hundred seventeen;

fifty seven; one

hundred eighty five; then one

hundred twenty one;

two hundred forty

nine; five; one hundred thirty

three; sixty nine; one

hundred and ninety

seven; thirty seven; one

hundred sixty five;

one hundred one; two

hundred twenty nine; twenty

one; one hundred and

forty nine; eighty

five; two hundred thirteen; then

fifty three; then one

hundred eighty one;

one hundred seventeen; two

hundred forty five;

thirteen; one hundred

forty one; seventy plus

seven; two hundred

five; forty five; one

hundred seventy three; one

hundred nine; then two

hundred and thirty

seven; twenty nine; then one

hundred and fifty

seven; ninety three;

two hundred twenty one; then

sixty one; then one

hundred eighty nine;

one hundred twenty five; two

hundred fifty three;

three; one hundred and

thirty one; sixty seven;

one hundred ninety

five; thirty five; one

hundred sixty three; ninety

nine; two hundred and

twenty seven; then

nineteen; one hundred forty

seven; eighty three;

then two hundred and

eleven; fifty one; one

hundred seventy

nine; one hundred and

fifteen; two hundred forty

three; eleven; one

hundred thirty nine;

seventy five; two hundred

three; forty three; one

hundred seventy

one; one hundred seven; two

hundred thirty five;

twenty seven; one

hundred fifty five; ninety

one; two hundred and

nineteen; fifty nine;

one hundred eighty seven;

one hundred twenty

three; two hundred and

fifty one; seven; then one

hundred thirty five;

seventy one; one

hundred ninety nine; thirty

nine; one hundred and

sixty seven; one

hundred three; two hundred and

thirty one; twenty

three; one hundred and

fifty one; eighty seven;

two hundred fifteen;

fifty five; then one

hundred eighty three; then one

hundred nineteen; two

hundred and forty

seven; fifteen; one hundred

forty three; and then

seventy nine; two

hundred seven; forty plus

seven; one hundred

seventy five; one

hundred eleven; then two

hundred thirty nine;

thirty one; then one

hundred fifty nine; ninety

five; two hundred and

twenty three; sixty

three; one hundred ninety one;

one hundred twenty

seven; two hundred

fifty five. And that's the end

of the fourth Table.

(You'll get Table Five

if you flip each bit in the

Table Four, supra.)

Have mercy on me,

Lord, and lesser judges, and

on Jon Johansen.

The DeCSS haiku was first posted on the Gallery of CSS Descramblers. The gallery is a compilation of different ways to describe the decryption of the CSS algorithm used to keep people from copying DVDs. Each example serves to illustrate how code is a form of speech that should be protected by the first amendment.

Seth Schoen wrote an essay on the history of the DeCSS haiku.

Mozilla, Safari, and Opera have decent support for standards, so they display this website correctly. Internet Explorer doesn't, so it doesn't. All browsers will display the content.