Exactly. The digital media or data that apps/games use will continue to grow.
For example: I really enjoy playing around with flight simulators. It is the terrain/ground that really chews up hard-drive space. The default FS2002 install takes 2 GB for terrain. I could imagine that some next-gen flight-sim could use the USGS 10m (30 feet) elevation data for the entire world; assuming a compression ratio of 10:1, this would take up 1000 GB!
I've got a copy of the code on my web page at:
computers.html
I've also got the song version there. It may be inaccessible, since the university DNS server is down though.
Quite a while back someone posted the decss source code as a story (don't recall who wrote it). Here it is:(sorry about the poor formatting)
*******************
NOTE: This story is licenced under the GPL version 2.
It is a dark and stormy night in a dark and stormy town. Tonight we find
ourselves looking apon Dick and Jane, two programmers bundled up by the fire
discussing current events:
"So, Jane, how was your day?" says Dick.
"Oh, fine. You know, I just heard about this interesting program that is
creating quite a fuss." says Jane, "It is called 'css_descramble.c'.".
"Wow," Dick enthused, "I have heard of it. My buddy kept talking about it.
He couldn't stop mentioning how it was...how did he put it? Ah yes, 'Released
under the version 2 of the GPL and Copyright 1999 Derek Fawcus'".
Jane jumped with joy. "I am so glad you have heard of it. I happen to have
a copy. Here, look. The very first thing it does is '#include <stdio.h>' then
it has '#include <string.h>'."
"You are right, but you forgot '#include "css-descramble.h"'" Dick
admonished.
Jane blushed, "Silly me. Well, we should have a look at the code. It
seems to start with 'typedef unsigned char byte;'. Then it moves right along
to an array. What is that? Oh, 'static byte csstab1[256]={'"
"I know!" Dick blurted, "lets play a number game! I will say a bunch of
numbers, then you can repeat the numbers. Ready? '0x33,0x73,0x3b,0x26,0x63,0x23,0x6b,0x76,0x3e,0x7e ,0x36,0x2b,0x6e,0x2e,0x66,0x7b,'"
"Hmmm...that is one long list of numbers...let me see. Was it, ' 0xd3,0x93,0xdb,0x06,0x43,0x03,0x4b,0x96,0xde,0x9e, 0xd6,0x0b,0x4e,0
x0e,0x46,0x9b,'?"
Dick frowned, "That is completely wrong! Well, let me try again, '0x57,0x17,0x5f,0x82,0xc7,0x87,0xcf,0x12,0x5a,0x1a ,0x52,0x8f,0xca,0x8
a,0xc2,0x1f,'"
Jane furrowed her brow, "I think I can do this one, '0xd9,0x99,0xd1,0x00,0x49,0x09,0x41,0x90,0xd8,0x98 ,0xd0,0x01,0x48,0x08,0x40,0x91,'?
"
"Wow!" dick exclamed, "You suck! Third time is the charm: '0x3d,0x7d,0x35,0x24,0x6d,0x2d,0x65,0x74,0x3c,0x7c ,0x34,0x25,0x6c,0x2c,0x64,
0x75,'. Got it?
"I think so," Jane said, "Is it '0xdd,0x9d,0xd5,0x04,0x4d,0x0d,0x45,0x94,0xdc,0x9c ,0xd4,0x05,0x4c,0x0c,0x44,0x95,'?"
Dick scowled, "No, no, no! It is, '0x59,0x19,0x51,0x80,0xc9,0x89,0xc1,0x10,0x58,0x18 ,0x50,0x81,0xc8,0x88,0xc0,0x11,' or is it, '0xd7,0
x97,0xdf,0x02,0x47,0x07,0x4f,0x92,0xda,0x9a,0xd2,0 x0f,0x4a,0x0a,0x42,0x9f,'? That is not right. It could have been, '0x53,0x13,0x5b,0x86,0xc3,0x83,0xcb,0x16,0x5e,0x1e,0x56,0x8b,0xce,0x8e ,0xc6,0x1b,0xb3,0xf3,0xbb,0xa6,0xe3,0xa3,0xeb,0xf6,0xbe,0xfe,0xb6,0xab,0xee,0xae,0xe6,0x
fb,0x37,0x77,0x3f,0x22,0x67,0x27,0x6f,0x72,0x3a,0x 7a,0x32,0x2f,0x6a,0x2a,0x62,0x7f,'. No that is too many letters...."
"I remember!" Jane interupted "It is '0xb9,0xf9,0xb1,0xa0,0xe9,0xa9,0xe1,0xf0,0xb8,0xf8 ,0xb0,0xa1,0xe8,0xa8,0xe0,0xf1,0x5d,0x1d,0x55,0x
84,0xcd,0x8d,0xc5,0x14,0x5c,0x1c,0x54,0x85,0xcc,0x 8c,0xc4,0x15,'. Well, either that or '0xbd,0xfd,0xb5,0xa4,0xed,0xad,0xe5,0xf4,0xbc,0xfc,0xb4,0xa5,0xec,0xac,0xe4,0xf5,0x39,0x79,0x31,0x20 ,0x69,0x29,0x61,0x70,0x38,0x78,0x30,0x21,0x68,0x28,0x60,0x71,0xb7,0xf7,0xbf,0xa2,0xe7,0x
a7,0xef,0xf2,0xba,0xfa,0xb2,0xaf,0xea,0xaa,0xe2,0x ff'"
"Boy, that was harder than I thought." Dick sighed. Where were we in the
code? Ah yes, '};static byte lfsr1_bits0[256]={'".
"You skipped a bunch" said Jane, "Besides, I am still not ready to look at
that again. I feel like counting. In hex! '0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x09,0x08 ,0x0b,0x0a,0x0d,0x0c,0x0f,0x0e,0x12,0x13,0x1
0,0x11,0x16,0x17,0x14,0x15,0x1b,0x1a,0x19,0x18,0x1 f,0x1e,0x1d,0x1c,0x24,0x25,0x26,0x27,0x2 0,0x21,0x22,0x23,0x2d,0x2c,0x2f,0x2e,0x29,0x28,0
x2b,0x2a,0x36,0x37,0x34,0x35,0x32,0x33,0x30,0x31,0 x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0 x49,0x48,0x4b,0x4a,0x4d,0x4c,0x4f,0x4e,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x5b,0x5a,0x59,0x58 ,0x5f,0x5e,0x5d,0x5c,0x52,0x53,0x50,0x51,0x56,0x57,0x54,0x55,0x6d,0x6c,0x6f,0x6e,0x69,0x
68,0x6b,0x6a,0x64,0x65,0x66,0x67,0x60,0x61,0x62,0x 63,0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x 78,0x76,0x77,0x74,0x75,0x72,0x73,0x70,0x71,0x92,
0x93,0x90,0x91,0x96,0x97,0x94,0x95,0x9b,0x9a,0x99, 0x98,0x9f,0x9e,0x9d,0x9c,0x80,0x81,0x82, 0x83,0x84,0x85,0x86,0x87,0x89,0x88,0x8b,0x8a,0x8
d,0x8c,0x8f,0x8e,0xb6,0xb7,0xb4,0xb5,0xb2,0xb3,0xb 0,0xb1,0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb 9,0xb8,0xa4,0xa5,0xa6,0xa7,0xa0,0xa1,0xa2,0xa3,0
xad,0xac,0xaf,0xae,0xa9,0xa8,0xab,0xaa,0xdb,0xda,0 xd9,0xd8,0xdf,0xde,0xdd,0xdc,0xd2,0xd3,0 xd0,0xd1,0xd6,0xd7,0xd4,0xd5,0xc9,0xc8,0xcb,0xca,0xcd,0xcc,0xcf,0xce,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5 ,0xc6,0xc7,0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf6,0xf7,0xf4,0xf5,0xf2,0xf3,0xf0,0x
f1,0xed,0xec,0xef,0xee,0xe9,0xe8,0xeb,0xea,0xe4,0x e5,0xe6,0xe7,0xe0,0xe1,0xe2,0xe3'"
When jane finished she looked exausted. As she collapsed, she uttered the
cryptic phrase, '};static byte lfsr1_bits1[512]={'.
Dick slapped Jane back to consciousness. "You counted wrong. You are
delerious. Repeat these numbers until you feel better, '0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24 ,0x49,0x6d,0x92,0xb6,0xdb,0xff,'
"
Jane smiled, "Numbers always make me feel better. I will repeat those
numbers, '0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24 ,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x2
4,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6 d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6 d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0
xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0 xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0 xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49 ,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x
92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0x db,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0x db,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,
0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24, 0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24, 0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6
d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb 6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb 6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0
xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0 x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0 x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92 ,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0x
db,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x 00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x 00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,
0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d, 0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d, 0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb
6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xf f,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xf f,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0
x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0 x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0 x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb ,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x
00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x 49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x 49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,
0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6, 0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6, 0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xf
f,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x2 4,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x2 4,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0
x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0 xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0 xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff'"
"'};static byte bit_reverse[256]={'," Dick swore. "That gave me a headache."
But Jane still continued to repeat the numbers, So Dick was forced to drown Jane out with his own numbers, "Two can play at that game,
'0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x90 ,0x50,0xd0,0x30,0xb0,0x70,0xf0,0x08,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,0x18,0x98,0x58,0x
d8,0x38,0xb8,0x78,0xf8,0x04,0x84,0x44,0xc4,0x24,0x a4,0x64,0xe4,0x14,0x94,0x54,0xd4,0x34,0x b4,0x74,0xf4,0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,
0xec,0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,0x02, 0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12, 0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,0x0a,0x8a,0x4
a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3 a,0xba,0x7a,0xfa,0x06,0x86,0x46,0xc6,0x2 6,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0
x76,0xf6,0x0e,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0 x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,0 x01,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1,0x09,0x89,0x49,0xc9 ,0x29,0xa9,0x69,0xe9,0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9,0x05,0x85,0x45,0xc5,0x25,0x
a5,0x65,0xe5,0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0x f5,0x0d,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0x ed,0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,0x03,
0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,0x13,0x93,0x53, 0xd3,0x33,0xb3,0x73,0xf3,0x0b,0x8b,0x4b, 0xcb,0x2b,0xab,0x6b,0xeb,0x1b,0x9b,0x5b,0xdb,0x3
b,0xbb,0x7b,0xfb,0x07,0x87,0x47,0xc7,0x27,0xa7,0x6 7,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x7 7,0xf7,0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0
x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff'"
At this, Jane opened her eyes wide, she began shaking and speaking in
tounges. "Bloogle said, '};static void css_titlekey(byte *key, byte *im, byte invert){unsigned int lfsr1_lo,lfsr1_hi,lfsr0,combined;byte o
_lfsr0, o_lfsr1;byte k[5];int i;lfsr1_lo = im[0] | 0x100;lfsr1_hi = im[1];lfsr0 = ((im[4] >8)&0xff] >16)&0xff]>24)&0xff];'" Jane said as she rolled her eyes. "Lograth
told Jane, 'combined = 0;for (i = 0; i >1;lfsr1_lo = ((lfsr1_lo&1)>8)^lfsr0)>>1)^lfsr0
)>>3)^lfsr0)>>7);lfsr0 = (lfsr0>>8)|(o_lfsr0
Dick looked concerned. He tried to calm her by reciting her favorite code
segment, 'combined += (o_lfsr0 ^ invert) + o_lfsr1;k[i] = combined & 0xff;combined >>= 8;}'" His voice cresendoed as he reached the heigh
t of the epic
function, 'key[4]=k[4]^csstab1[key[4]]^key[3];key[3]=k[3]^cs stab1[key[3]]^key[2];key[2]=k[2]^csstab1 [key[2]]^key[1];key[1]=k[1]^csstab1[ke
y[1]]^key[0];key[0]=k[0]^csstab1[key[0]]^key[4];ke y[4]=k[4]^csstab1[key[4]]^key[3];key[3]= k[3]^csstab1[key[3]]^key[2];key[2]=k[2]^csstab1[
key[2]]^key[1];key[1]=k[1]^csstab1[key[1]]^key[0]; key[0]=k[0]^csstab1[key[0]];}'"
Jane relaxed vissibly. At that point there was a knock at the door. Dick
got up to answer it.
"Oh dear," said Dick. Jane rushed to see the problem.
At the door was a a robot gone awry. "Illegal function." It said in monotone, 'int css_decrypttitlekey(byte *tkey, byte *dkey, struct pl
aykey **pkey){byte test[5], pretkey[5];int i = 0;for (; *pkey; ++pkey, ++i) {memcpy(pretkey, dkey + (*pkey)->offset, 5);css_titlekey(pretk
ey, (*pkey)->key, 0);' Illegal function,
'memcpy(test, dkey, 5);css_titlekey(test, pretkey, 0);if (memcmp(test, pretkey, 5) == 0) {fprintf(stderr, "Using Key %d\n", i+1);break;}}i
f (!*pkey) {fprintf(stderr, "Shit - Need Key %d\n", i+1);return 0;}css_titlekey(tkey, pretkey, 0xff);return 1;}' violates rules. Illegal
function."
"Illegal function. What do you suppose it means?" wondered Jane.
"Hmm..." said Dick. "Lets see if we can fix the robot with some new
instructions."
"Robot, enter command mode" Ordered Dick.
"By using this robot you agree not to reverse engineer, distribute, rent,
or use this robot for purposes not explicitly..."
"Whatever," Dick interupted as he pressed the glowing accept button on the
torso of the robot, "Robot, enter command mode."
"Ready for commands"
"Command: 'void css_descramble(byte *sec,byte *key){unsigned int lfsr1_lo,lfsr1_hi,lfsr0,combined;unsigned char o_lfsr0, o_lfsr1;unsigne
d char *end = sec + 0x800;#define SALTED(i) (key[i] ^ sec[0x54 + (i)])'" Dick paused for a breath, "'lfsr1_lo = SALTED(0) | 0x100;lfsr1_hi
= SALTED(1);lfsr0 = ((SALTED(4) >8)&0xff] >16)&0xff]>24)&0xff];sec+=0x80;combined = 0;while (se
c != end) {o_lfsr1 = lfsr1_bits0[lfsr1_hi] ^ lfsr1_bits1[lfsr1_lo];lfsr1_hi = lfsr1_lo>>1;lfsr1_lo = ((lfsr1_lo&1)
"Illegal command," the robot repeated. "Error code: 'o_lfsr0 = (((((((lfsr0>>8)^lfsr0)>>1)^lfsr0)>>3)^lfsr0)>>7); lfsr0 = (lfsr0>>8)|(o_l
fsr0
"Hmm," said Jane. "Let me try. Robot, enter command mode"
"Ready for commands" droned the robot.
"Command: '*sec++ = csstab1[*sec] ^ (combined&0xff);combined >>= 8;}}' End
command."
At this point the robot did something very frightening. It blew up. Dick
and Jane shielded thier eyes. When they were finally able to see again, they
were shocked by what lay before their eyes. When the robot exploded, it
released thousands of fliers. The fliers flew for miles around. On each flyer
the reader was greeted with the source code for a program. The program was
DeCSS.
For a fresh new start -
go to slash as sysadmin,
and use unlink star.
Just in - SCO owns Perl,
so says Darl "Cowboy" McBride.
Buy a license now.
Exactly. The digital media or data that apps/games use will continue to grow.
For example: I really enjoy playing around with flight simulators. It is the terrain/ground that really chews up hard-drive space. The default FS2002 install takes 2 GB for terrain. I could imagine that some next-gen flight-sim could use the USGS 10m (30 feet) elevation data for the entire world; assuming a compression ratio of 10:1, this would take up 1000 GB!
I've got a copy of the code on my web page at: computers.html
e ,0x36,0x2b,0x6e,0x2e,0x66,0x7b,'", 0xd6,0x0b,0x4e,0
x0e,0x46,0x9b,'?"a ,0x52,0x8f,0xca,0x8
a,0xc2,0x1f,'"8 ,0xd0,0x01,0x48,0x08,0x40,0x91,'?
"c ,0x34,0x25,0x6c,0x2c,0x64,
0x75,'. Got it?c ,0xd4,0x05,0x4c,0x0c,0x44,0x95,'?"8 ,0x50,0x81,0xc8,0x88,0xc0,0x11,' or is it, '0xd7,0
x97,0xdf,0x02,0x47,0x07,0x4f,0x92,0xda,0x9a,0xd2,0 x0f,0x4a,0x0a,0x42,0x9f,'? That is not right. It could have been, '0x53,0x13,0x5b,0x86 ,0xc3,0x83,0xcb,0x16,0x5e,0x1e,0x56,0x8b,0xce,0x8e ,0xc6,0x1b,0xb3,0xf3,0xbb,0xa6,0xe3,0xa3 ,0xeb,0xf6,0xbe,0xfe,0xb6,0xab,0xee,0xae,0xe6,0x
fb,0x37,0x77,0x3f,0x22,0x67,0x27,0x6f,0x72,0x3a,0x 7a,0x32,0x2f,0x6a,0x2a,0x62,0x7f,'. No that is too many letters...."8 ,0xb0,0xa1,0xe8,0xa8,0xe0,0xf1,0x5d,0x1d ,0x55,0x
84,0xcd,0x8d,0xc5,0x14,0x5c,0x1c,0x54,0x85,0xcc,0x 8c,0xc4,0x15,'. Well, either that or '0xbd,0xfd,0xb5,0xa4,0xed,0xad,0xe5,0xf4,0xbc,0xfc ,0xb4,0xa5,0xec,0xac,0xe4,0xf5,0x39,0x79,0x31,0x20 ,0x69,0x29,0x61,0x70,0x38,0x78,0x30,0x21 ,0x68,0x28,0x60,0x71,0xb7,0xf7,0xbf,0xa2,0xe7,0x
a7,0xef,0xf2,0xba,0xfa,0xb2,0xaf,0xea,0xaa,0xe2,0x ff'"8 ,0x0b,0x0a,0x0d,0x0c,0x0f,0x0e,0x12,0x13 ,0x1
0,0x11,0x16,0x17,0x14,0x15,0x1b,0x1a,0x19,0x18,0x1 f,0x1e,0x1d,0x1c,0x24,0x25,0x26,0x27,0x2 0,0x21,0x22,0x23,0x2d,0x2c,0x2f,0x2e,0x29,0x28,0
x2b,0x2a,0x36,0x37,0x34,0x35,0x32,0x33,0x30,0x31,0 x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0 x49,0x48,0x4b,0x4a,0x4d,0x4c,0x4f,0x4e,0x40,0x41 ,0x42,0x43,0x44,0x45,0x46,0x47,0x5b,0x5a,0x59,0x58 ,0x5f,0x5e,0x5d,0x5c,0x52,0x53,0x50,0x51 ,0x56,0x57,0x54,0x55,0x6d,0x6c,0x6f,0x6e,0x69,0x
68,0x6b,0x6a,0x64,0x65,0x66,0x67,0x60,0x61,0x62,0x 63,0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x 78,0x76,0x77,0x74,0x75,0x72,0x73,0x70,0x71,0x92,
0x93,0x90,0x91,0x96,0x97,0x94,0x95,0x9b,0x9a,0x99, 0x98,0x9f,0x9e,0x9d,0x9c,0x80,0x81,0x82, 0x83,0x84,0x85,0x86,0x87,0x89,0x88,0x8b,0x8a,0x8
d,0x8c,0x8f,0x8e,0xb6,0xb7,0xb4,0xb5,0xb2,0xb3,0xb 0,0xb1,0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb 9,0xb8,0xa4,0xa5,0xa6,0xa7,0xa0,0xa1,0xa2,0xa3,0
xad,0xac,0xaf,0xae,0xa9,0xa8,0xab,0xaa,0xdb,0xda,0 xd9,0xd8,0xdf,0xde,0xdd,0xdc,0xd2,0xd3,0 xd0,0xd1,0xd6,0xd7,0xd4,0xd5,0xc9,0xc8,0xcb,0xca ,0xcd,0xcc,0xcf,0xce,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5 ,0xc6,0xc7,0xff,0xfe,0xfd,0xfc,0xfb,0xfa ,0xf9,0xf8,0xf6,0xf7,0xf4,0xf5,0xf2,0xf3,0xf0,0x
f1,0xed,0xec,0xef,0xee,0xe9,0xe8,0xeb,0xea,0xe4,0x e5,0xe6,0xe7,0xe0,0xe1,0xe2,0xe3'"4 ,0x49,0x6d,0x92,0xb6,0xdb,0xff,'
"4 ,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24 ,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x2
4,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6 d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6 d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0
xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0 xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0 xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00 ,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49 ,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49 ,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x
92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0x db,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0x db,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,
0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24, 0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24, 0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6
d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb 6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb 6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0
xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0 x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0 x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49 ,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92 ,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92 ,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0x
db,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x 00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x 00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,
0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d, 0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d, 0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb
6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xf f,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xf f,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0
x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0 x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0 x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92 ,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb ,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb ,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x
00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x 49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x 49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,
0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6, 0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6, 0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xf
f,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x2 4,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x2 4,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0
x6d,0x92,0xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0 xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0 xb6,0xdb,0xff,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb ,0xff'"0 ,0x50,0xd0,0x30,0xb0,0x70,0xf0,0x08,0x88 ,0x48,0xc8,0x28,0xa8,0x68,0xe8,0x18,0x98,0x58,0x
d8,0x38,0xb8,0x78,0xf8,0x04,0x84,0x44,0xc4,0x24,0x a4,0x64,0xe4,0x14,0x94,0x54,0xd4,0x34,0x b4,0x74,0xf4,0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,
0xec,0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,0x02, 0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12, 0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,0x0a,0x8a,0x4
a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3 a,0xba,0x7a,0xfa,0x06,0x86,0x46,0xc6,0x2 6,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0
x76,0xf6,0x0e,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0 x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,0 x01,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,0x11,0x91 ,0x51,0xd1,0x31,0xb1,0x71,0xf1,0x09,0x89,0x49,0xc9 ,0x29,0xa9,0x69,0xe9,0x19,0x99,0x59,0xd9 ,0x39,0xb9,0x79,0xf9,0x05,0x85,0x45,0xc5,0x25,0x
a5,0x65,0xe5,0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0x f5,0x0d,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0x ed,0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,0x03,
0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,0x13,0x93,0x53, 0xd3,0x33,0xb3,0x73,0xf3,0x0b,0x8b,0x4b, 0xcb,0x2b,0xab,0x6b,0xeb,0x1b,0x9b,0x5b,0xdb,0x3
b,0xbb,0x7b,0xfb,0x07,0x87,0x47,0xc7,0x27,0xa7,0x6 7,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x7 7,0xf7,0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0
x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff'"s stab1[key[3]]^key[2];key[2]=k[2]^csstab1 [key[2]]^key[1];key[1]=k[1]^csstab1[ke
y[1]]^key[0];key[0]=k[0]^csstab1[key[0]]^key[4];ke y[4]=k[4]^csstab1[key[4]]^key[3];key[3]= k[3]^csstab1[key[3]]^key[2];key[2]=k[2]^csstab1[
key[2]]^key[1];key[1]=k[1]^csstab1[key[1]]^key[0]; key[0]=k[0]^csstab1[key[0]];}'"; lfsr0 = (lfsr0>>8)|(o_l
fsr0
"Hmm," said Jane. "Let me try. Robot, enter command mode"
I've also got the song version there. It may be inaccessible, since the university DNS server is down though.
Quite a while back someone posted the decss source code as a story (don't recall who wrote it). Here it is:(sorry about the poor formatting)
*******************
NOTE: This story is licenced under the GPL version 2.
It is a dark and stormy night in a dark and stormy town. Tonight we find ourselves looking apon Dick and Jane, two programmers bundled up by the fire discussing current events:
"So, Jane, how was your day?" says Dick.
"Oh, fine. You know, I just heard about this interesting program that is creating quite a fuss." says Jane, "It is called 'css_descramble.c'.".
"Wow," Dick enthused, "I have heard of it. My buddy kept talking about it. He couldn't stop mentioning how it was...how did he put it? Ah yes, 'Released under the version 2 of the GPL and Copyright 1999 Derek Fawcus'".
Jane jumped with joy. "I am so glad you have heard of it. I happen to have a copy. Here, look. The very first thing it does is '#include <stdio.h>' then it has '#include <string.h>'."
"You are right, but you forgot '#include "css-descramble.h"'" Dick admonished.
Jane blushed, "Silly me. Well, we should have a look at the code. It seems to start with 'typedef unsigned char byte;'. Then it moves right along to an array. What is that? Oh, 'static byte csstab1[256]={'"
"I know!" Dick blurted, "lets play a number game! I will say a bunch of numbers, then you can repeat the numbers. Ready? '0x33,0x73,0x3b,0x26,0x63,0x23,0x6b,0x76,0x3e,0x7
"Hmmm...that is one long list of numbers...let me see. Was it, ' 0xd3,0x93,0xdb,0x06,0x43,0x03,0x4b,0x96,0xde,0x9e
Dick frowned, "That is completely wrong! Well, let me try again, '0x57,0x17,0x5f,0x82,0xc7,0x87,0xcf,0x12,0x5a,0x1
Jane furrowed her brow, "I think I can do this one, '0xd9,0x99,0xd1,0x00,0x49,0x09,0x41,0x90,0xd8,0x9
"Wow!" dick exclamed, "You suck! Third time is the charm: '0x3d,0x7d,0x35,0x24,0x6d,0x2d,0x65,0x74,0x3c,0x7
"I think so," Jane said, "Is it '0xdd,0x9d,0xd5,0x04,0x4d,0x0d,0x45,0x94,0xdc,0x9
Dick scowled, "No, no, no! It is, '0x59,0x19,0x51,0x80,0xc9,0x89,0xc1,0x10,0x58,0x1
"I remember!" Jane interupted "It is '0xb9,0xf9,0xb1,0xa0,0xe9,0xa9,0xe1,0xf0,0xb8,0xf
"Boy, that was harder than I thought." Dick sighed. Where were we in the code? Ah yes, '};static byte lfsr1_bits0[256]={'".
"You skipped a bunch" said Jane, "Besides, I am still not ready to look at that again. I feel like counting. In hex! '0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x09,0x0
When jane finished she looked exausted. As she collapsed, she uttered the cryptic phrase, '};static byte lfsr1_bits1[512]={'.
Dick slapped Jane back to consciousness. "You counted wrong. You are delerious. Repeat these numbers until you feel better, '0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x2
Jane smiled, "Numbers always make me feel better. I will repeat those numbers, '0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff,0x00,0x2
"'};static byte bit_reverse[256]={'," Dick swore. "That gave me a headache."
But Jane still continued to repeat the numbers, So Dick was forced to drown Jane out with his own numbers, "Two can play at that game, '0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x9
At this, Jane opened her eyes wide, she began shaking and speaking in tounges. "Bloogle said, '};static void css_titlekey(byte *key, byte *im, byte invert){unsigned int lfsr1_lo,lfsr1_hi,lfsr0,combined;byte o _lfsr0, o_lfsr1;byte k[5];int i;lfsr1_lo = im[0] | 0x100;lfsr1_hi = im[1];lfsr0 = ((im[4] >8)&0xff] >16)&0xff]>24)&0xff];'" Jane said as she rolled her eyes. "Lograth told Jane, 'combined = 0;for (i = 0; i >1;lfsr1_lo = ((lfsr1_lo&1)>8)^lfsr0)>>1)^lfsr0 )>>3)^lfsr0)>>7);lfsr0 = (lfsr0>>8)|(o_lfsr0 Dick looked concerned. He tried to calm her by reciting her favorite code segment, 'combined += (o_lfsr0 ^ invert) + o_lfsr1;k[i] = combined & 0xff;combined >>= 8;}'" His voice cresendoed as he reached the heigh t of the epic function, 'key[4]=k[4]^csstab1[key[4]]^key[3];key[3]=k[3]^c
Jane relaxed vissibly. At that point there was a knock at the door. Dick got up to answer it.
"Oh dear," said Dick. Jane rushed to see the problem.
At the door was a a robot gone awry. "Illegal function." It said in monotone, 'int css_decrypttitlekey(byte *tkey, byte *dkey, struct pl aykey **pkey){byte test[5], pretkey[5];int i = 0;for (; *pkey; ++pkey, ++i) {memcpy(pretkey, dkey + (*pkey)->offset, 5);css_titlekey(pretk ey, (*pkey)->key, 0);' Illegal function, 'memcpy(test, dkey, 5);css_titlekey(test, pretkey, 0);if (memcmp(test, pretkey, 5) == 0) {fprintf(stderr, "Using Key %d\n", i+1);break;}}i f (!*pkey) {fprintf(stderr, "Shit - Need Key %d\n", i+1);return 0;}css_titlekey(tkey, pretkey, 0xff);return 1;}' violates rules. Illegal function."
"Illegal function. What do you suppose it means?" wondered Jane.
"Hmm..." said Dick. "Lets see if we can fix the robot with some new instructions."
"Robot, enter command mode" Ordered Dick.
"By using this robot you agree not to reverse engineer, distribute, rent, or use this robot for purposes not explicitly..."
"Whatever," Dick interupted as he pressed the glowing accept button on the torso of the robot, "Robot, enter command mode."
"Ready for commands"
"Command: 'void css_descramble(byte *sec,byte *key){unsigned int lfsr1_lo,lfsr1_hi,lfsr0,combined;unsigned char o_lfsr0, o_lfsr1;unsigne d char *end = sec + 0x800;#define SALTED(i) (key[i] ^ sec[0x54 + (i)])'" Dick paused for a breath, "'lfsr1_lo = SALTED(0) | 0x100;lfsr1_hi = SALTED(1);lfsr0 = ((SALTED(4) >8)&0xff] >16)&0xff]>24)&0xff];sec+=0x80;combined = 0;while (se c != end) {o_lfsr1 = lfsr1_bits0[lfsr1_hi] ^ lfsr1_bits1[lfsr1_lo];lfsr1_hi = lfsr1_lo>>1;lfsr1_lo = ((lfsr1_lo&1) "Illegal command," the robot repeated. "Error code: 'o_lfsr0 = (((((((lfsr0>>8)^lfsr0)>>1)^lfsr0)>>3)^lfsr0)>>7)
"Ready for commands" droned the robot.
"Command: '*sec++ = csstab1[*sec] ^ (combined&0xff);combined >>= 8;}}' End command."
At this point the robot did something very frightening. It blew up. Dick and Jane shielded thier eyes. When they were finally able to see again, they were shocked by what lay before their eyes. When the robot exploded, it released thousands of fliers. The fliers flew for miles around. On each flyer the reader was greeted with the source code for a program. The program was DeCSS.
***********