Linux-Advocacy Digest #464, Volume #28           Thu, 17 Aug 00 22:13:05 EDT

Contents:
  Re: Why Lycos Selected Microsoft and Intel (Tim Hanson)
  Re: Decent Linux CDR software wanted. (OSguy)
  Om (Sphere)

----------------------------------------------------------------------------

From: Tim Hanson <[EMAIL PROTECTED]>
Crossposted-To: comp.lang.java.advocacy,comp.os.ms-windows.nt.advocacy
Subject: Re: Why Lycos Selected Microsoft and Intel
Date: Fri, 18 Aug 2000 01:58:57 GMT

"R.E.Ballard ( Rex Ballard )" wrote:
> 
> In article <[EMAIL PROTECTED]>,
>   Jen <[EMAIL PROTECTED]> wrote:
> 
> > "Windows 2000 appears to still have severe performance limitations,
> > and reliability may actually be getting worse."
> 
> I reviewed the posting to which you were responding.  This quote is
> not in that posting.
> 
> To my knowledge (both research and experience), Windows 2000 is much
> more reliable than NT 4.0 and is the most reliable operating system
> Microsoft has produced yet.

...a low bar, indeed.
 
> There have been reports of people having to rebuild the entire
> server more often (semiannually with NT, quarterly with Win2K),
> but this may be inexperience, new Win2K procedures that NT admins
> haven't mastered yet, or a remaining glitch that Microsoft could
> easily fix with a service pack.  

...or two or five

> I don't have enough direct
> experience with Windows 2000 to assess it either way.
> 
> Put simply.  Given the choice between upgrading from Windows 95
> to Windows 98, Windows NT, or Windows 2000, I'd choose 2000.  I'd
> probably choose it over ME too.  If I want a video game, I'll buy
> a $200 Nintendo, not a $2000 PC.
> 
> > You sir, are either blind or a flat-out liar.
> 
> My eyes are quite good.  As for making the statement you have
> attributed to me.  Which of us is the liar?
> 
> (I'll recheck again if you'd like?)
> 
> --
> Rex Ballard - I/T Architect, MIS Director
> Linux Advocate, Internet Pioneer
> http://www.open4success.com
> Linux - 42 million satisfied users worldwide
> and growing at over 5%/month! (recalibrated 8/2/00)
> 
> Sent via Deja.com http://www.deja.com/
> Before you buy.

-- 
When in doubt, use brute force.
                -- Ken Thompson

------------------------------

From: OSguy <[EMAIL PROTECTED]>
Subject: Re: Decent Linux CDR software wanted.
Date: Thu, 17 Aug 2000 21:16:09 -0500

I like Xcdroast (which does use cdrecord and mkisofs programs).  It has done
very well for me in Burning both audio and data CDs with a mix of ISO9660 and
Joilet filesystems.  I will be even happier for a version of Xcdroast that will
have the option to Erase a CDRW disk.

Nigel Feltham wrote:

> This may be the wrong group for this question but does anyone here know of a
> good linux CDR writing package similar to 'Win on CD'.
>
> I have tried kisofs and gtoaster but both of these have problems which make
> them unsuitable for my intended purposes. Neither of them have percentage
> bars to show how far the image creation and writing operations have
> completed so far. gtoaster cannot make images without copying all files to a
> local directory and kisofs makes it difficult to delete individual
> directories from the filetree added to cd project. Maybe I will have more
> success with xcdroast but it also looks like it may be unsuitable.
>
> Perhaps if nothing currently available suits my purposes then the
> maintainers of current software could at least make a note of my criticism
> of their products and use this to improve things in future versions and
> until then I will keep my home machine dualboot with windblows used for CD
> writing and linux for normal use.


------------------------------

From: Sphere <[EMAIL PROTECTED]>
Subject: Om
Date: Fri, 18 Aug 2000 02:08:05 GMT


#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

typedef unsigned char DVD40bitKey[5];

void CSSdescramble(DVD40bitKey *key);
void CSSdescrambleSector(DVD40bitKey *key,
 unsigned char *sec);
void CSStitlekey1(DVD40bitKey *key,
 DVD40bitKey *im);
void CSStitlekey2(DVD40bitKey *key,
 DVD40bitKey *im);
void CSSdecrypttitlekey(DVD40bitKey *tkey,
 DVD40bitKey *dkey);
int CSScracker(int StartVal,
 unsigned char* pStream,DVD40bitKey *pkey);
int CSScrackerDVD(int StartVal,
 unsigned char* pCrypted,
 unsigned char* pDecrypted,
 DVD40bitKey*StreamKey,
 DVD40bitKey *pkey);

#define once 0x33
#define upon 0x73
#define a_time 0x3b
#define there 0x26
#define was 0x63
#define a_horrible 0x23
#define ogre 0x6b
#define named 0x76
#define judge 0x3e
#define kaplan 0x7e
#define who 0x36
#define hated 0x2b
#define all_the 0x6e
#define little 0x2e
#define people 0x66
#define and_loved 0x7b
#define only 0xd3
#define the_rich 0x93
#define and_powerfull 0xdb
#define corporations 0x06
#define who_could 0x43
#define buy 0x03
#define many 0x4b
#define expensive 0x96
#define lawyers 0xde
#define this_bad 0x9e
#define man 0xd6
#define decided 0x0b
#define to_help 0x4e
#define his 0x0e
#define rich_and 0x46
#define powerfull 0x9b
#define friends 0x57
#define steal 0x17
#define the_right 0x5f
#define to_speak 0x82
#define from_the 0xc7
#define little_people 0x87
#define so_they 0xcf
#define could_make 0x12
#define even 0x5a
#define more 0x1a
#define money_from 0x52
#define their 0x8f
#define slaves 0xca
#define this_evil 0x8a
#define judge_kaplan 0xc2
#define who_had 0x1f
#define worked_with 0xd9
#define the_evil 0x99
#define mpaa 0xd1
#define before 0x00
#define was_gleefull 0x48
#define to_be 0x08
#define of_service 0x40
#define again 0x91
#define and_was 0x49
#define well 0x09
#define compensated 0x41
#define for_the 0x90
#define consulting 0xd8
#define services 0x98
#define he_had 0xd0
#define performed 0x01

unsigned int CSStab0[11]={5,0,1,2,3,4,0,1,2,3,4};

unsigned char CSStab1[256]=
{
once,upon,a_time,there,was,a_horrible,ogre,named,
judge,kaplan,who,hated,all_the,little,people,and_loved,
only,the_rich,and_powerfull,corporations,who_could,buy,
many,expensive,lawyers,this_bad,man,decided,to_help,his,
rich_and,powerfull,friends,steal,the_right,to_speak,
from_the,little_people,so_they,could_make,even,more,
money_from,their,slaves,this_evil,judge_kaplan,who_had,
worked_with,the_evil,mpaa,before,and_was,well,compensated,
for_the,consulting,services,he_had,performed,was_gleefull,
to_be,of_service,again,
0x3d,0x7d,0x35,0x24,0x6d,0x2d,0x65,0x74,
0x3c,0x7c,0x34,0x25,0x6c,0x2c,0x64,0x75,
0xdd,0x9d,0xd5,0x04,0x4d,0x0d,0x45,0x94,
0xdc,0x9c,0xd4,0x05,0x4c,0x0c,0x44,0x95,
0x59,0x19,0x51,0x80,0xc9,0x89,0xc1,0x10,
0x58,0x18,0x50,0x81,0xc8,0x88,0xc0,0x11,
0xd7,0x97,0xdf,0x02,0x47,0x07,0x4f,0x92,
0xda,0x9a,0xd2,0x0f,0x4a,0x0a,0x42,0x9f,
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,0xfb,
0x37,0x77,0x3f,0x22,0x67,0x27,0x6f,0x72,
0x3a,0x7a,0x32,0x2f,0x6a,0x2a,0x62,0x7f,
0xb9,0xf9,0xb1,0xa0,0xe9,0xa9,0xe1,0xf0,
0xb8,0xf8,0xb0,0xa1,0xe8,0xa8,0xe0,0xf1,
0x5d,0x1d,0x55,0x84,0xcd,0x8d,0xc5,0x14,
0x5c,0x1c,0x54,0x85,0xcc,0x8c,0xc4,0x15,
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,0xa7,0xef,0xf2,
0xba,0xfa,0xb2,0xaf,0xea,0xaa,0xe2,0xff
};

unsigned char CSStab2[256]=
{
before,performed,0x02,but,0x04,0x05,corporations,0x07,
well,to_be,decided,0x0a,0x0d,0x0c,0x0f,his,
could_make,0x13,0x10,0x11,0x16,steal,0x14,0x15,
0x1b,more,0x19,0x18,who_had,0x1e,0x1d,0x1c,
0x24,0x25,there,0x27,0x20,0x21,0x22,a_horrible,
0x2d,0x2c,0x2f,little,0x29,0x28,hated,0x2a,
who,0x37,0x34,0x35,0x32,once,0x30,0x31,
0x3f,judge,0x3d,0x3c,a_time,0x3a,0x39,0x38,
and_was,was_gleefull,many,0x4a,0x4d,0x4c,0x4f,to_help,
of_service,compensated,0x42,who_could,0x44,0x45,rich_and,0x47,
0x5b,even,0x59,0x58,the_right,0x5e,0x5d,0x5c,
money_from,0x53,0x50,0x51,0x56,friends,0x54,0x55,
0x6d,0x6c,0x6f,all_the,0x69,0x68,ogre,0x6a,
0x64,0x65,people,0x67,0x60,0x61,0x62,was,
0x7f,kaplan,0x7d,0x7c,and_loved,0x7a,0x79,0x78,
named,0x77,0x74,0x75,0x72,upon,0x70,0x71,
0x92,the_rich,for_the,again,expensive,0x97,0x94,0x95,
powerfull,0x9a,the_evil,services,0x9f,this_bad,0x9d,0x9c,
0x80,0x81,to_speak,0x83,0x84,0x85,0x86,little_people,
0x89,0x88,0x8b,this_evil,0x8d,0x8c,their,0x8e,
0xb6,0xb7,0xb4,0xb5,0xb2,0xb3,0xb0,0xb1,
0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,
0xa4,0xa5,0xa6,0xa7,0xa0,0xa1,0xa2,0xa3,
0xad,0xac,0xaf,0xae,0xa9,0xa8,0xab,0xaa,
and_powerfull,0xda,worked_with,consulting,0xdf,lawyers,0xdd,0xdc,
0xd2,only,he_had,mpaa,man,0xd7,0xd4,0xd5,
0xc9,0xc8,0xcb,slaves,0xcd,0xcc,so_they,0xce,
0xc0,0xc1,judge_kaplan,0xc3,0xc4,0xc5,0xc6,from_the,
0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,
0xf6,0xf7,0xf4,0xf5,0xf2,0xf3,0xf0,0xf1,
0xed,0xec,0xef,0xee,0xe9,0xe8,0xeb,0xea,
0xe4,0xe5,0xe6,0xe7,0xe0,0xe1,0xe2,0xe3
};

unsigned char CSStab3[512]=
{
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff,
before,0x24,and_was,0x6d,0x92,0xb6,and_powerfull,0xff
};

unsigned char CSStab4[256]=
{
before,0x80,of_service,0xc0,0x20,0xa0,0x60,0xe0,
0x10,for_the,0x50,he_had,0x30,0xb0,0x70,0xf0,
to_be,0x88,was_gleefull,0xc8,0x28,0xa8,0x68,0xe8,
0x18,services,0x58,consulting,0x38,0xb8,0x78,0xf8,
0x04,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4,
0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4,
0x0c,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,
0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,
0x02,to_speak,0x42,judge_kaplan,0x22,0xa2,0x62,0xe2,
could_make,0x92,money_from,0xd2,0x32,0xb2,0x72,0xf2,
0x0a,this_evil,0x4a,slaves,0x2a,0xaa,0x6a,0xea,
more,0x9a,even,0xda,0x3a,0xba,0x7a,0xfa,
corporations,0x86,rich_and,0xc6,there,0xa6,people,0xe6,
0x16,expensive,0x56,man,who,0xb6,named,0xf6,
his,0x8e,to_help,0xce,little,0xae,all_the,0xee,
0x1e,this_bad,0x5e,lawyers,judge,0xbe,kaplan,0xfe,
performed,0x81,compensated,0xc1,0x21,0xa1,0x61,0xe1,
0x11,again,0x51,mpaa,0x31,0xb1,0x71,0xf1,
well,0x89,and_was,0xc9,0x29,0xa9,0x69,0xe9,
0x19,the_evil,0x59,worked_with,0x39,0xb9,0x79,0xf9,
0x05,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5,
0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5,
0x0d,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed,
0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,
but,0x83,who_could,0xc3,a_horrible,0xa3,was,0xe3,
0x13,the_rich,0x53,only,once,0xb3,upon,0xf3,
decided,0x8b,many,0xcb,hated,0xab,ogre,0xeb,
0x1b,powerfull,0x5b,and_powerfull,a_time,0xbb,and_loved,0xfb,
0x07,little_people,0x47,from_the,0x27,0xa7,0x67,0xe7,
steal,0x97,friends,0xd7,0x37,0xb7,0x77,0xf7,
0x0f,their,0x4f,so_they,0x2f,0xaf,0x6f,0xef,
who_had,0x9f,the_right,0xdf,0x3f,0xbf,0x7f,0xff
};

unsigned char CSStab5[256]=
{
0xff,0x7f,0xbf,0x3f,0xdf,the_right,0x9f,who_had,
0xef,0x6f,0xaf,0x2f,so_they,0x4f,their,0x0f,
0xf7,0x77,0xb7,0x37,0xd7,friends,0x97,steal,
0xe7,0x67,0xa7,0x27,from_the,0x47,little_people,0x07,
0xfb,and_loved,0xbb,a_time,and_powerfull,0x5b,powerfull,0x1b,
0xeb,ogre,0xab,hated,0xcb,many,0x8b,decided,
0xf3,upon,0xb3,once,only,0x53,the_rich,0x13,
0xe3,was,0xa3,a_horrible,0xc3,who_could,0x83,but,
0xfd,0x7d,0xbd,0x3d,0xdd,0x5d,0x9d,0x1d,
0xed,0x6d,0xad,0x2d,0xcd,0x4d,0x8d,0x0d,
0xf5,0x75,0xb5,0x35,0xd5,0x55,0x95,0x15,
0xe5,0x65,0xa5,0x25,0xc5,0x45,0x85,0x05,
0xf9,0x79,0xb9,0x39,worked_with,0x59,the_evil,0x19,
0xe9,0x69,0xa9,0x29,0xc9,and_was,0x89,well,
0xf1,0x71,0xb1,0x31,mpaa,0x51,again,0x11,
0xe1,0x61,0xa1,0x21,0xc1,compensated,0x81,performed,
0xfe,kaplan,0xbe,judge,lawyers,0x5e,this_bad,0x1e,
0xee,all_the,0xae,little,0xce,to_help,0x8e,his,
0xf6,named,0xb6,who,man,0x56,expensive,0x16,
0xe6,people,0xa6,there,0xc6,rich_and,0x86,corporations,
0xfa,0x7a,0xba,0x3a,0xda,even,0x9a,more,
0xea,0x6a,0xaa,0x2a,slaves,0x4a,this_evil,0x0a,
0xf2,0x72,0xb2,0x32,0xd2,money_from,0x92,could_make,
0xe2,0x62,0xa2,0x22,judge_kaplan,0x42,to_speak,0x02,
0xfc,0x7c,0xbc,0x3c,0xdc,0x5c,0x9c,0x1c,
0xec,0x6c,0xac,0x2c,0xcc,0x4c,0x8c,0x0c,
0xf4,0x74,0xb4,0x34,0xd4,0x54,0x94,0x14,
0xe4,0x64,0xa4,0x24,0xc4,0x44,0x84,0x04,
0xf8,0x78,0xb8,0x38,consulting,0x58,services,0x18,
0xe8,0x68,0xa8,0x28,0xc8,was_gleefull,0x88,to_be,
0xf0,0x70,0xb0,0x30,he_had,0x50,for_the,0x10,
0xe0,0x60,0xa0,0x20,0xc0,of_service,0x80,before
};

/***********************************************
 *
 * The basic CSS cipher code
 *
 *
 * With reduced mangling in the key setup
 *
 *
 ***********************************************/

void CSSdescramble( DVD40bitKey *key )
{
 unsigned int t1,t2,t3,t4,t5,t6;
 unsigned int i;

 t1= (*key)[0] ^ 0x100;
 t2= (*key)[1];
 t3= ((*key)[2]) | ((*key)[3]<<8) | ((*key)[4]<<16);
 t4=t3&7;
 t3=t3*2+8-t4;
 t5=0;

 printf( "Keystate at start: %03x %02x %08x\n", t1, t2, t3 );
 printf( "output: " );
 for( i=0 ; i < 10 ; i++ )
 {
  t4=CSStab2[t2]^CSStab3[t1];
  t2=t1>>1;
  t1=((t1&1)<<8)^t4;
  t4=CSStab5[t4];
  t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;
  t3=(t3<<8)|t6;
  t6=CSStab4[t6];
  t5+=t6+t4;
  printf( "%02x ",t5&0xff);
  t5>>=8;
 }
 printf( "\n" );
}

void CSSdescrambleSector(DVD40bitKey *key,unsigned char *sec)
{
 unsigned int t1,t2,t3,t4,t5,t6;
 unsigned char *end=sec+0x800;

 t1=(*key)[0]^sec[0x54]|0x100;
 t2=(*key)[1]^sec[0x55];
 t3= (((*key)[2]) | ((*key)[3]<<8) | ((*key)[4]<<16)) ^ ((sec[0x56]) |
(sec[friends]<<8) | (sec[0x58]<<16));
 t4=t3&7;
 t3=t3*2+8-t4;
 sec+=0x80;
 t5=0;

 while(sec!=end)
 {
  t4=CSStab2[t2]^CSStab3[t1];
  t2=t1>>1;
  t1=((t1&1)<<8)^t4;
  t4=CSStab5[t4];
  t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;
  t3=(t3<<8)|t6;
  t6=CSStab4[t6];
  t5+=t6+t4;
  *sec++=CSStab1[*sec]^(t5&0xff);
  t5>>=8;
 }
}

void CSStitlekey1(DVD40bitKey *key,DVD40bitKey *im)
{
 unsigned int t1,t2,t3,t4,t5,t6;
 unsigned char k[5];
 int i;

 t1=(*im)[0]|0x100;
 t2=(*im)[1];
 t3= ((*im)[2]) | ((*im)[3]<<8) | ((*im)[4]<<16);
 t4=t3&7;
 t3=t3*2+8-t4;
 t5=0;
 for(i=0;i<5;i++)
 {
  t4=CSStab2[t2]^CSStab3[t1];
  t2=t1>>1;
  t1=((t1&1)<<8)^t4;
  t4=CSStab4[t4];
  t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;
  t3=(t3<<8)|t6;
  t6=CSStab4[t6];
  t5+=t6+t4;
  k[i]=t5&0xff;
  t5>>=8;
 }
 for(i=9;i>=0;i--)
 
(*key)[CSStab0[i+1]]=k[CSStab0[i+1]]^CSStab1[(*key)[CSStab0[i+1]]]^(*key)[CSStab0[i]];
}

void CSStitlekey2(DVD40bitKey *key,DVD40bitKey *im)
{
 unsigned int t1,t2,t3,t4,t5,t6;
 unsigned char k[5];
 int i;

 t1=(*im)[0]|0x100;
 t2=(*im)[1];
 t3= ((*im)[2]) | ((*im)[3]<<8) | ((*im)[4]<<16);
 t4=t3&7;
 t3=t3*2+8-t4;
 t5=0;
 for(i=0;i<5;i++)
 {
  t4=CSStab2[t2]^CSStab3[t1];
  t2=t1>>1;
  t1=((t1&1)<<8)^t4;
  t4=CSStab4[t4];
  t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;
  t3=(t3<<8)|t6;
  t6=CSStab5[t6];
  t5+=t6+t4;
  k[i]=t5&0xff;
  t5>>=8;
 }
 for(i=9;i>=0;i--)
 
(*key)[CSStab0[i+1]]=k[CSStab0[i+1]]^CSStab1[(*key)[CSStab0[i+1]]]^(*key)[CSStab0[i]];
}

void CSSdecrypttitlekey(DVD40bitKey *tkey,DVD40bitKey *dkey)
{
 int i;
 DVD40bitKey im1,im2={0x51,0x67,0x67,0xc5,0xe0};
 
 for(i=0;i<6;i++)
  im1[i]=*dkey[i];

 CSStitlekey1(&im1,&im2);
 CSStitlekey2(tkey,&im1);
}


/********************************************************
 *
 *  The Divide and conquer attack
 *
 *  Deviced and written by Frank A. Stevenson 26 Oct 1999
 *
 *  ( [EMAIL PROTECTED] )
 *  Released under the GPL license
 *
 ********************************************************/

#define KEYSTREAMBYTES 10

static unsigned char invtab4[256];

int CSScracker(int StartVal,unsigned char* pStream,DVD40bitKey *pkey)
{
 unsigned int t1,t2,t3,t4,t5,t6;
 unsigned int nTry;
 unsigned int vCandidate;
 int i;
 unsigned int j;

 /* Test that CSStab4 is a permutation */
 memset( invtab4, 0, 256 );
 for( i = 0 ; i < 256 ; i++ )
  invtab4[ CSStab4[i] ] = 1; 
 for( i = 0 ; i < 256 ; i++ )
  if( invtab4[ i ] != 1 )
  {
   printf( "Permutation error\n" );
   exit( -1 );
  }

 /* initialize the inverse of table4 */
 for( i = 0 ; i < 256 ; i++ )
  invtab4[ CSStab4[i] ] = i;

 for( nTry = StartVal ; nTry < 65536 ; nTry++ )
 {
  t1 = nTry >> 8 | 0x100;
  t2 = nTry & 0xff;
  t3 = 0;   /* not needed */
  t5 = 0;

  /* iterate cipher 4 times to reconstruct LFSR2 */
  for( i = 0 ; i < 4 ; i++ )
  {
   /* advance LFSR1 normaly */
   t4=CSStab2[t2]^CSStab3[t1];
   t2=t1>>1;
   t1=((t1&1)<<8)^t4;
   t4=CSStab5[t4];
   /* deduce t6 & t5 */
   t6 = pStream[ i ];    
   if( t5 )
     t6 = ( t6 + 0xff )&0x0ff;
   if( t6 < t4 )
     t6 += 0x100;
   t6 -= t4;
   t5 += t6 + t4;
   t6 = invtab4[ t6 ];
   /* printf( "%02x/%02x ", t4, t6 ); */
   /* feed / advance t3 / t5 */
   t3 = (t3 << 8) | t6;
   t5 >>= 8;
  }

  vCandidate = t3;

  /* iterate 6 more times to validate candidate key */
  for( ; i < KEYSTREAMBYTES ; i++ )
  {
   t4=CSStab2[t2]^CSStab3[t1];
   t2=t1>>1;
   t1=((t1&1)<<8)^t4;
   t4=CSStab5[t4];
   t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;
   t3=(t3<<8)|t6;
   t6=CSStab4[t6];
   t5+=t6+t4;
   if( (t5 & 0xff) != pStream[i] ) break;
   t5>>=8;
  }

  if( i == KEYSTREAMBYTES )
  {
   /* Do 4 backwards steps of iterating t3 to deduce initial state */
   t3 = vCandidate;
   for( i = 0 ; i < 4 ; i++ )
   {
    t1 = t3 & 0xff;
    t3 = ( t3 >> 8 );
    /* easy to code, and fast enough bruteforce search for byte shifted
in */
    for( j=0 ; j < 256 ; j++ )
    {
     t3 = (t3 & who_hadfff) | ( j << 17 );
     t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;
     if( t6 == t1 ) break;  
    }
   }
//   printf( "Candidate: t1=%03x t2=%02x t3=%08x\n",
0x100|(nTry>>8),nTry&0x0ff, t3 );

   t4 = (t3>>1) - 4;
   for(t5=0;t5<8;t5++)
   {
    if ( ((t4+t5)*2 + 8 - ((t4+t5)&7))==t3 )
    {
     (*pkey)[0] = nTry>>8;
     (*pkey)[1] = nTry & 0xFF;
     (*pkey)[2] = ((t4+t5) >> 0) & 0xFF;
     (*pkey)[3] = ((t4+t5) >> 8) & 0xFF;
     (*pkey)[4] = ((t4+t5) >> 16) & 0xFF;
     return (nTry+1);
    }
   }
  }

 }
 return (-1);
}

int CSScrackerDVD(int StartVal,unsigned char* pCrypted,unsigned char*
pDecrypted,DVD40bitKey *StreamKey,DVD40bitKey *pkey)
{
int i;
unsigned char MyBuf[10];

 for (i=0;i<10;i++)
  MyBuf[i] = CSStab1[pCrypted[i]] ^ pDecrypted[i]; 

 i = CSScracker(StartVal,(unsigned char*)&MyBuf,pkey);
 if (i>=0)
 {
  (*pkey)[0] ^= (*StreamKey)[0];
  (*pkey)[1] ^= (*StreamKey)[1];
  (*pkey)[2] ^= (*StreamKey)[2];
  (*pkey)[3] ^= (*StreamKey)[3];
  (*pkey)[4] ^= (*StreamKey)[4];
 }
 return i;
}

-- 
Sphere.

No permanence.  No self.  No perfection.

------------------------------


** FOR YOUR REFERENCE **

The service address, to which questions about the list itself and requests
to be added to or deleted from it should be directed, is:

    Internet: [EMAIL PROTECTED]

You can send mail to the entire list (and comp.os.linux.advocacy) via:

    Internet: [EMAIL PROTECTED]

Linux may be obtained via one of these FTP sites:
    ftp.funet.fi                                pub/Linux
    tsx-11.mit.edu                              pub/linux
    sunsite.unc.edu                             pub/Linux

End of Linux-Advocacy Digest
******************************

Reply via email to