29 December 1999

For worldwide DVD CSS sources see:

http://cryptome.org/dvd-v-500.htm

DVD CSS source code:

http://cryptome.org/css-tar.gz

http://cryptome.org/dvd-css.htm

EFF to Oppose DVD Complaint:

http://cryptome.org/eff-v-dvd.htm

http://www.eff.org/pub/EFF/Newsletters/EFFector/current.html

13 November 1999

A compilation of messages on DVD/CSS sent or forwarded to us.


Resent-Date: 04 Nov 1999 21:17:34 +0100

Date: Mon, 25 Oct 1999 07:01:58 +0200 (CEST)
Message-Id: <199910250501.HAA19966@sofuku.monster.org>
From: Anonymous <nobody@replay.com>
Comments: This message did not originate from the Sender address above.
	It was remailed automatically by anonymizing remailer software.
	Please report problems or inappropriate use to the
	remailer administrator at <abuse@replay.com>.
To: livid-dev@livid.on.openprojects.net
Subject: [Livid-dev] css
Original-Sender: livid-dev-admin@livid.on.openprojects.net
Errors-To: livid-dev-admin@livid.on.openprojects.net
X-Mailman-Version: 1.0rc2
Precedence: bulk
List-Id:  <livid-dev.livid.on.openprojects.net>
X-BeenThere: livid-dev@livid.on.openprojects.net
Lines: 347

begin 664 css.tar.gz
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
K[.3X2:FX0E!E:=7)21FTE(Z<9OO77.%W][O[W?WN?M6__P5O7*7R`/``````
`
end


_______________________________________________
Livid-dev maillist  -  Livid-dev@livid.on.openprojects.net

http://livid.on.openprojects.net/mailman/listinfo/livid-dev


Resent-Date: 04 Nov 1999 21:17:34 +0100 Date: Tue, 26 Oct 1999 20:59:14 -0700 From: Aaron Holtzman <aholtzma@ess4.engr.UVic.CA> To: livid-dev@livid.on.openprojects.net Message-ID: <19991026205914.E29794@ess.engr.uvic.ca> Mail-Followup-To: livid-dev@livid.on.openprojects.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0pre3i Subject: [Livid-dev] CSS key generation analysis Original-Sender: livid-dev-admin@livid.on.openprojects.net Errors-To: livid-dev-admin@livid.on.openprojects.net X-Mailman-Version: 1.0rc2 Precedence: bulk List-Id: <livid-dev.livid.on.openprojects.net> X-BeenThere: livid-dev@livid.on.openprojects.net Lines: 69 Since the css code is publically available, I'm going to make use of my right to free speech in my country. It's amazing the amount of fear that large multinational corporations can put into the hearts of hackers :p The first step of key generation does very little to protect the integrity of the player keys. In fact, if you have one legit key, you are just one forty bit hash function away from getting a new player key. First, some definitions and background. I'm going to focus on the first stage of key generation (which is all that matters). D[]     - The disc key sector containing 409 five bit 'slots' d       - A plain text disc key that can be used in key generation step 2 d'      - An encrypted disc key taken from D[] which corresponds to p p       - A plain text player key as it exists in the player code p'      - An encrypted player key generated as part of key generation step 1 The first stage key generation looks like this p' = crypt_a(p);           //This is the for(i=[0..5]){ k += LSFR + CRAP} loop d  = one_way_hash(d',p');  You would then use the resulting d to decrypt the title key in stage two and carry on your merry way. There are two interesting remarks to make at this point. One is that d is constant for a particular disc, regardless of which player key you're using. Two, the generation is p' is completely pointless. Since p' only depends on p, having p' is just as good as having p for our purposes. Now if we have p_5 for example (where _N means corresponding to disc key offset N), we could run through the process using d_5' and p_5' and get d (which is again the same for all player keys). All we need to do to get p_X' (where X is any old offset from 0x05-0xA0 (1)(2)) is find an input to the one_way_hash function that along with d_X' provides the output d. There are 2^40 possibile combinations of inputs, and I have code that trys 17e6 potential hashes/second on a Celeron 366. This gives a max search time of ~17 hours. There is one caveat. The one way hash function is not a bijection. This means there may be many potential hash inputs that produce that right output. Only one is p_X', and to test the potential keys you need to use a different disc. Code to perform this task is left as an exercise to the reader. Have fun. cheers, aaron (1) I contend that there are only 32 player keys that are repeated up to thirteen times in random slots (but the slots are the same between discs). Slots 0x05-0xA0 are unrepeated, consecutive disc keys. On _some_ discs, some of the repeat slots are filled with noise. If you don't believe me take a look at the distribution of the disk key sector and decide for yourself. (2) There is also the matter of the special 0x00 slot magic disc key. This key plays a part in determining which player key to use (if a player has more than one p). I haven't looked too closely at the math behind this key, but I suspect that there are even more flaws to exploit here. _______________________________________________ Livid-dev maillist  -  Livid-dev@livid.on.openprojects.net http://livid.on.openprojects.net/mailman/listinfo/livid-dev
Resent-Date: 04 Nov 1999 21:17:34 +0100; also posted to the Cryptography mail list 27 October 1999. Date: Wed, 27 Oct 1999 08:55:01 +0200 (CEST) From: Frank Andrew Stevenson <frank@funcom.com> X-Sender: frank@odin To: livid-dev@livid.on.openprojects.net Message-ID: <Pine.SGI.3.96.991027082942.451B-100000@odin> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Subject: [Livid-dev] Successfull attack on CSS algorithm Original-Sender: livid-dev-admin@livid.on.openprojects.net Errors-To: livid-dev-admin@livid.on.openprojects.net X-Mailman-Version: 1.0rc2 Precedence: bulk List-Id: <livid-dev.livid.on.openprojects.net> X-BeenThere: livid-dev@livid.on.openprojects.net Lines: 280 Hi, I am a new member to this list, in fact I subscribed just today, in order to send this message, and answer to followups. My main interest in this is purely cryptographical, so I have little or no knowledge of the problems associated with CSS. What I have done is device an attack that will recover a CSS key with a complexity of 2^16 and as little as 6 known output bytes. This should reduce the keyrecovery time from ~17 hours to a fraction of a second. The CSS algorith is fataly flawed. A divide and conquer attack is possible by guessing the 16 unknown bits of LFSR1. LFSR1 is then clocked 4 times, and the known keystream bytes are then used to reconstruct the state of LFSR2. The whole cipher is then clocked another 2-6 times to validate the key. If the key is correct LFSR2 is clocked backwards 4 times to retrieve the initial state. The fine details can be found in the source code below. I hope this mail isn't too long, but I have included source for a complete cracker which works as follows: hippopotamus:~/pc/temp> scramble 3e 4c 13 2e 9c Doing encryption Keystate at start: 13e 4c 01385c2b output: 80 18 e2 cc c1 21 85 0d 9f 8c This produces the 10 first bytes of the keystream for the given key, and also dumps the initial keystate. hippopotamus:~/pc/temp> time scramble 80 18 e2 cc c1 21 85 0d 9f 8c Attempting crack Candidate: 13e 4c 01385c2b 0.090u 0.000s 0:00.10 90.0%     0+0k 0+0io 87pf+0w With 10 bytes as input, the initial state is here recovered in 1/10th of a second on a PPro200.    frank ---------- The following is C code for the attack -------- /******************************************************** * *  The Divide and conquer attack * *  Deviced and written by Frank A. Stevenson 26 Oct 1999 * *  ( frank@funcom.com ) *  Released under the GPL license * ********************************************************/ #define KEYSTREAMBYTES 10 static unsigned char invtab4[256]; void CSScracker( unsigned char* pStream ) {   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 = 0 ; 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 & 0x1ffff) | ( j << 17 );           t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;           if( t6 == t1 ) break;  }       }       printf( "Candidate: %03x %02x %08x\n", 0x100|(nTry>>8),nTry&0x0ff, t3 );     }   } }   ----------- Following is a complete cracker ------------------- ------ compiles with VC++ / gcc linux, runs  on x86 ----------- begin 640 scramble.c.Z M'YV0(]*X&<.F#IDR('C,H4,FS1L7:'PH"#BPX,&$"^4(/`-1(D6"!A'R&$,G M#YPR'2<*!'E1(4,V:<2D5%#'S9PT9]R4(0-"(!T00Z9,H1-&#(PM,6)TZ;&G M!@L8+&*PD,%B!@L:3Z-.K7JUSPX%-&WBU,ES#)HP<H`*)2HFQA89-6PL5;!' M00(8>&98Q7MC;UXQ3_'(L!'8AE\9?FT`YDL8[XPR@6]`=MQ8\&(\-B8+UFRC M\@W`=O&2\9O#+YG+,"K3\`O#+XW+.2H?#)Q#,YG*,"[3T`Q#,XW*.4#?Q5/C M1N`8QO'6,!,8!U6\8Y+CP2%]#'.\,9X3#W.<NW+M.*[C&>-]>ODQVF,P#XV' M3`[:[T5+Q0L#*EX:\?'`R$]C/IX<]K6'`VT#BA8@#/[14*!^"](08`Y2L3<# M&9%1Z)A3>,F`%5XV6"B8AS9@B,<-&^8U1F0G.E8B7(6E*)B+-I1X@U/LD>%A M#AZ2(2(,)=+@(0P>TB!B#B62X6(.+I)1(@PBTN`B#"[24&(.-`Y70WXQY%># M?S@$.$9^..0WAG\Q!%C#@C$L6$.`./@WQH(X+#A&@$FQ4*-T.4A'AG@P:$># M=#!(1X-X.6A'1GDYE$>&=C"(1T-Y,)1'@W8YK&>E7S'X5<-E.%0VAE\X^#7& M93%45H-F,6@65W.7C:$9#IJ-45D,PN$EAE]F^"7&96%45H9?8?A5QF5F5":& M9F9H)D9E1056AF9A:%9&96;4FI=T-T@W@W@R:&>#=#)(9X-X-V@W0WDWE#># M=C*(9T-Y,I1G@W8W6&IK?F;DUU9@80181GYAY%>&?V8$*,:"9BQH%+_^E;%@ M&`N6$:`9$5KI80P>UB`B#B6.X2$.'HXA8@PEUN!B#"[64"(.(H[A(@XNCE%B M#%7:ZJ$9'HHA8A@E[L2OAV6(:$:)8KAHAHMBE!B&B&6X&(:+991H1LUYY7=# M?C/X)T.`-N0G0WXV^'=#@#,L>,.",P0H@W\V+"C#@C8$>$/%MDIGAG1BB!>& M=F5(%X9T98AGAG9BE&=&>6)H%X9X99071GEE:&>&&0IX!59--^6T$PAFH:76 M4$7)\%9<<]4U7'V!(9@ZHZPMN2-N@.8'PX*YI0[ICT_R"1E[V1V'*9UDSBH= MR<>-3&IY61Z'IGBI'G?QB>QI&!B+&586[O1J:\WN81[*X&*[TVOV]?1N7Q:O MG</-4-D,VI8X@XCK!J:7_&3[MZW\FDTHOXLS7':N_%@;$'OP$Q@%%5`WD@I2 ME!SEFP#UIX!^<DV/FJ0:X[!G4X&I07FNE$$UB>=4&<Q8RK13`TV9R3^K4HYT M5)9!JG6H185Q%V?`!K?+O*LP)0I182KSK<)PC6W>L@I[ZA49S=S`0S=PT6<B M@RZKF<TSV)*1B,H5&;^,+3)T^P^E2/,@_\2&-GB:TI!@@ZC\Y&!!E:*-9G!$ M&^@-ITO-X1)X0+6RC56&.LT!$YPX51Z0->=EXH$5^FQE++P1342)"\RM%&DP M_^1-D<K*&=(N4SA%ZDN`P^$9OW;&++\%*`S^V1N_@.6AI_%+;]`"V,-XQ9T: M7>90@7%/+!>TIUC:)D=),I1I`D0&_]PFEGHJ$M6^%)@W%;-5YPE9S,3CJF)Z MR4W:^50Q.]8R3UEP.),+3+*T>3.C$<MP^$(8M>PF-:%)#E<3RZ+/\-(T9S%. M6@*+V&4:YZR>,<U7@/-7P_@V@\I])2R9(POGSI*6H(#N5EO8D@Q*QQ[49:A' M8+L1X61#+#ZI#:*%D:@B*:I->^GGH@6,*&TF&LN*I@ZD]Q$I7@JUT9)V=)`? MG1Y&.:110KH4+]FD#TKQ0$":CK2EHC%I0W?:4\S4%`_+NBD><AK3AX8THS^U M:5!?.E29/M6G*R7I5'%J4:NF%*I9!6I[A'HZHJI4BV(]S4MUZE6>GI6E4ATK M5<O:UJ*^,*QQ52M73UK7MVI5KGNMJE._BE6TYM6D;!VL6\%J6*1R-+!T5:Q= MCYK4K2ZUJY+U:UK)FEC!S-2H476L4IGJ4,]>%;1X%:UELRE8TQ(6M8VM+&`O MR]?,,A:NJITM:R/KVL46%K>RU2MM.RN]U]XUMH^E;6N+ZUO8`C>YI#7K;?\J MW-T2][/'?>YH,=O;R88VN)QM:G<U>]BUBI>YWDTM>.=ZW=-FE[J(/2]V*0M= MCY86O>3-;76YB]_I;I:]\G4O?;=;V_'ZM[R0;:]Q![Q:_L[WN_6%Z7T?K-X( M*[BY[_UO@@.\8`@3^,+I12Z!ETMA$3>XP/W]+7P!/&$!>_C$(,[O>C?<X@Y7 M^,,<QC"#=6M?Z:I8P\/-<8BU>V(2N_C&,!:RC"-L9!N;F,<H+C&1H=QD';\8 MRC$^L'[#6V,K(QG+2M;RC)7+VQ0[=\5[S?*/$4QF-9\9R-'MJYB97&8IHSG( M71[RG2?GS\N)17-E(>CGV$*#T<FE!W1I+1SOXR6U?9)K_J+3@\S$2[(93&X3 M@TI#X=0@.;GM87"+&)K0J"9:HDUA9D,8)NFSLAYU;$5*RV'/9C:EDA7)?423 MD=2PTM"712EFWW,:C*!VLB.E+$G\0YH2C>9&^H#'3]%DE^*\Q;?T4(J$AC(7 MX>@E.:HTM(^2.@^\'"<OR"$/41M4E+H0AR[#M?)T=U2-IZS'+![Z:E;`,95L MUF<LSU"+,`U]E6]B)3YH<49:J%JCJFR3/V49$5F[.QV7$N0FK862;0TCDQ=1 MZ$O[.5)L!,OB?O)X6F)F"&!@$QB6S*BE_,C2,?JR&K[>T]"--:EE(J(>'I96 M&*:-;$@BTE@LX8?(*0J-:D!J3I!"UKU2@@AH%[M1QG+D(?W9K$+<E#"H7".J MPP`K,<+"%&DT91J_S,]65L25$$_'*=VTRGR\LN$\206;RV#0LOU3Y&66B%-K M!:HY@JH.N/PF+L`-#T\KU).V\(8MNUV3/H%T%#.YI3=W,8YYA/J@>&KI&/$\ MDB^"HYSE`#J6S76NH&LI2@T,S5!LDLOSXKF?:#1/&\R[,X:GG-[D"QCYU'GT M;I%AO/P4GT'$'\?PA2'\]`1?0.G@D3Z/7^K>*>F_5]J][L>9>V'B/KVW'Y!5 MJ;-6KJJH2+.7/8-C]YVSP#[*Z76]@%M/W=IQBL2<59WJ(:1-U)WU])]-C^D% M]#$_0B'L,361473R(R(ZTD*T\7/.(B(ZA!<\ER$X5T`VESI4DR^1$7,`%$LM M!Q_'H7*%@7+3(R;\`2:R0W/8!'**Y'&QQ'&TH7'.@G$,,ST55T`3ESI9M$U\ MX7#X8TL9I'#'@7"%87#A4TP#UQR\$7$XY6]BI3ZQI&^T@6_.8F_\0F_%)&_- M@1L`ATWMIDCK%DOI1AOGYBSEQB_C5DSAUAR0\FXXQ6V*I&VQA&VAU3OL1&W\ M(FW%!&W-P2C>ADW+IDC)%DO'UD;'06PP)('!5DR_]D>ITVQ+I6N*A&NQ9&NT M06OUA$/\`FO35$"MECJ\ADVIIDBG-DL=1"#*XRRAQB^?5DR=UARTLVI+A6F, M1#^Q1&FT(6G.`FG\XFC.5$!L<B`PT&=@\0(J<(S(F(S*N(S,V(S.>(P*``(J M$(TJ``)4@`8(43@W,0:?PSEI``?8F!9C\`8'08WF*(T@<`5I0`=H``)RL!-U MX"H\T09AX`9G`!/VV!-N``+LB!!K4`9Y``)S4`9T4`=P<([3*(W/N)`,V9`O M`!9V\`9IP!,&=1!S,`9R$`9M(`9L4`8H``*84WJ!YCDJ\(\!F0*)E@`A"6CZ M^!-T(!5T0!5T8!5T@!5TX!1T8`-?H9)_)E`^T1/_E``OV0,@8));``-=``)> M``+841\[&9-$:91*\90ST`,HH`(H@`(KZ9-N\!,JD`(H8)(K(`,I4)9?`0+\ M2`,],),F<`-4N98SH`(RL`(XT`(U^90UT`,P\$]H"0<:T95F\)$BL`0`N1!A M0`<(<9@"211R0`<Z``(ET!IX`)E],IF1B0-XP`5N(`(LP(]2P8]4P8\S``(I ML)-^Z1.!"0(B\`9U0`=PT)J/*0*DN9-F\`9R\)%IH)<@L`,]D1`@4":[V1,K ML`*D:1>F(Y1J:5!L(3HQV05>H)Q%,0-;\))=L)-"*0-K&0,^X`,Q8)U#F94O M:0(QD`(\P`,XD`)><)=V@9P]`)TZ,YTT4)WKF9-6F97VB0(SN9TS@)XSF0+; M.9[IN9_;>9X!ZI\^4`,I8`)<Y9U5B9\S4)[GR0<YZ9TVT)ZIES33*1?>60,K ML)8VL`+JF0`)<)J`*9B1*0.3R9DWJ:"759KS60/;V0,XL)-]8!<D2@>I*0*: M*9LN6J-@H0#&V)!".J0-B9!H>8T(001I8`<3F9AN4!9OX`9Q4`=ED!:'211C ML`9&"@)$4`9,*H\@4(\\<0<:00>(N8]B$)!&D)%NL`8@$`0N``)#X:5E8!-1 M"@*#`0)/0!*_F0-^NJ4?:09LN@9`8`8U,8YMX`*(6ISH"`)24`8=&08#R1,U M<1!IT8\@<`10P`0@`!.N8A-E@)!$.JJDFHP/.1$'808"@1!+4`19,`54(`5% M$`1-(`190`5%,`6_.8P*8)ATD`;<N)6F)V@"80>$QGK_%)$3^3D8^33_>)L@ MV9/#BA;5"`=#\8X:29H@4!=H*:P\\9,OR0(Q*:XT:9,XJ9/1&*T!M3D_Z094 M(`=Y<);J*I(M"0)V,`1B.I&'60;R^I-I(*_>6J]JP)<@8(S66`8+P8]G\1/N M20,],0=A"@(G(0=MT)J'Z1#[J`(/B99M4`9M,)!T@)MN8*Q%@15,V9EP80.S MF:ZU":UI``)$"0/!^;(\@*=Q,;/#J:W%>JR#5K);D`9)F91$V9T@P+*VB9LP MRY0SZYLIB[/$F0(]D9H[Z[.]F90A,+3:RJUH*;%_B:.""0556K%$\:MW6J5R M8)L[NK);"P)E@`?K^)$M$`-J"P(^BI8&*Q#KF`9A`!-Z@!"86JQ5.I`@\`9F MP(]%T9$.J[%&Z[))*[.\2;,VJ[*/F[-0.[48VK,8"K0@(+1`"19HV;(?Z:[P MVKC!*;H!6;,A4D*2"P*F2[G;FJYH^9)):[H@L)T@@`,@P`=,B0=ELI>P"YJS M^ZX!:0*[.SGR&KNC&;.\:;?5Z`9O\!,ZL1.;H[AK>Y.-2[#,VQ.(F9&(Z8W@ M6*4@X+"_VK$02P=OX(Y-$Z49$8\_P01&,`52(`/2N+%;"[J]&;-+6[,..[E/ M^[IKF[UA0`9V4(^N`@+N"[]RZ[P4N[<!2;W_6Y,6>E#,N5#/>:'229W'N[50 M^9+_F<&Q&P/U&9[C":'\20,>G)81S!:K5Y/R^;\%6XT'00;QZ+<J2[S6Z\#5 MJ[)$::UT@*UML`55N[QH^;MHF0:I:;U0FY-)^Y%*3)Q<19HLVBAF<,)&S,0J M6[,UJ:U-'+.\ZY1$S(\JVP)$J9XN;+T="L8@0)QD_,`ZK(\D>[E*W,+_:[`W MFJ,GB@<O<,>JV9DUR<<J6YKS^\4&FRR;\P)A*L`$[+>C:<@W3+_5F[P@X*`) M4;/GF;M@?,+6&Z.WF\%UN[7WFJ^'TKUC/`/8^\+:6Z7["@(JVP:VZ;=I0+[\ M>+X##!.AC!#D\:3ZVKTF&<AK:[^/ZYNM^JJQ.JNU>JNYZK19^\40[)X3[)SN M><%3J<S8R<'<B<D@#)XQ()[D:9XEC,G)>:$K')^87*'W:9_YZ0/[6:#_R9\" MZ@,$VI_;B:`L:KS*W*`S2<(2BJYE7*$-FZ%R7+T<ZJ$@:L)?7,61;+W$RU50 M>[42>ZV-\\.:"[5B@*UK@,DPZ@,RRLF>N[4&_;(]0)3!#*NR2JNVBJNZ"K5: MN[8&2P3GZ["%DZ5W@!9D`+$+409P`+&$>\K<NQ&B&<L@$,,SK(]YN[>+F<HX MK,&0_,FX7,LG;+\>K;2_K+_(C-)?_,%).Y,@D-"7=<+(N\0];;NXZZ(NG+V- M,P<!:;Z<0XZ0$:9/"@*'D[!URIIGT(X3W9J!8YL%/)!H819N;9L@D*;=.P=H M8,2(^:T9Z\C_:[]JH)N\J09,>[.-[;HI/=983922K-7J,3EF`+6Z^Y&.79Z_ M>0-S.]9@7)_E?,[I#,_<R<X&^L[M+,\+6M4<?<0Z/,9R*]$4O;QV4:,NS-O_ M6\>"B:]+O:^/&9DS8)F529F8N:.=V90PP`<H8+H#F@(L8+I1G$T]+=9;V\D^ MZJ-`6HTWT09PT)%N?:ADNX]H/8XC6Z4_@8V3"=@(Z],_J;@&Z[R(^9AWD`9L MP`8@<`9+BA!L2@9OT`;H.P=UP`9T`+%&S+I1ZMX_C1/K"+%H@1`"\9I>>:J^ M"JP#Y3GNW1#^G>!(<0.<*P((@AA"\BUA4A0>$SA<``,B\$\9SHT_B01M*P1Y M@)A4\`9)T)4?J=X)>WK2"`=.4`<;";Y4C99`;A;]VI7N2+!\/<9OP`9O<`=5 M^I%"3N3'(@='F93:G19#J[+5B`(^`9:+*0=F`:T=#N$)WIE\#;4M``)I_N$0 MJ]U/'LM23N70>N5%KN5*,;=R<,9BWI5DGA%G_I%Q'N%LWHYN#N=MZ^$1OK+I M^HX%*0?[F!9:+<7+>[<CN[?+6N&M"0+YO=]P'@9V@!!^28Y!?09H43AG@!"* MVP=%6XS5V`1A(!#E/1#G'<@*\)/T*!`B^Q-H<08GLN%R4(W!;@=;P.7^6Z__ MFJX!"^2A'`9`'-+#3-+&K*ORN=$=^[$$^9'1WMR=2>TC7<PF#>E%G)K!SHT^ M``+B3LPE?<S$>=O+WI==FZ,Y#@+TZ`8!&>Q$7J<)GK;:C9:27@>4#@)Q*Z^= M;-#I[IM_/.]<BYJ"605S$`:M7MP0BP>3B?$@X`(<'\D@4`,%"YDOZ^#P/>?, M':9R<`;(CI3A[JHB[>[7/MKH.^G[>/#IVLE.G;1$"[D+S[_)O+;1_K-QR[DT MC@<VCN,ZSN,HK_(_R^4(O]$*G_+<^-'L[O+53N[P_IL_O[4&J]=FWHXM6Y0` MR<M;"]RJ&01FZK%P\*OYV*Q9"O`9;%!N_ZS>?IAA,+>P#JF".]D&"P5G*\-Y MK9'C[8^%V<,/3?;T#O&JR=(\7:<8:1+G#?>_6Y$(VZP;V9%U3Q1XO]$#3^D? %*;,]"A:% ` end This sentence is unique in this respect; it can safely be attributed to my employer, Funcom Oslo AS. E3D2BCADBEF8C82F A5891D2B6730EA1B PGPmail preferred, finger for key There is no place like N59 50.558' E010 50.870'. (WGS84) _______________________________________________ Livid-dev maillist  -  Livid-dev@livid.on.openprojects.net http://livid.on.openprojects.net/mailman/listinfo/livid-dev
Date: Wed, 27 Oct 1999 14:54:17 +0200 (CEST) From: Frank Andrew Stevenson <frank@funcom.com> X-Sender: frank@odin To: cryptography@c2.net Subject: CSS broken Message-ID: <Pine.SGI.3.96.991027144958.28574A-100000@odin> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-cryptography@c2.net Monday sourcecode for the CSS algorithm was released through an anonymous remailer. CSS is the encryption algoritm used on DVD movies, and it was supected that it was weak beyond just having a 40 bit key. Yesterday I found it to be vulnerable to a trivial 2^16 attack with as little as 6 bytes of known plaintext. I posted the details on: http://livid.on.openprojects.net/pipermail/livid-dev/1999-October/000589.html   frank This sentence is unique in this respect; it can safely be attributed to my employer, Funcom Oslo AS. E3D2BCADBEF8C82F A5891D2B6730EA1B PGPmail preferred, finger for key There is no place like N59 50.558' E010 50.870'. (WGS84)
Resent-Date: 04 Nov 1999 21:17:34 +0100 Date: Wed, 27 Oct 1999 16:14:52 +0100 From: Derek Fawcus <derek@spider.com> To: livid-dev@livid.on.openprojects.net Message-ID: <19991027161452.S13273@spuggy.spider.com> Mail-Followup-To: livid-dev@livid.on.openprojects.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0pre4i Subject: [Livid-dev] CSS Algorithms descriptions Original-Sender: livid-dev-admin@livid.on.openprojects.net Errors-To: livid-dev-admin@livid.on.openprojects.net X-Mailman-Version: 1.0rc2 Precedence: bulk List-Id: <livid-dev.livid.on.openprojects.net> X-BeenThere: livid-dev@livid.on.openprojects.net Lines: 19   For those who want a description of the algorithms,  I've actually started writing one up.  At the moment there's not a lot there,  but I'll add to it over time.  Then someone can do a 'cleanroom' implementation if they really care to.   It's at www.eyrie.demon.co.uk/derek/dvd/css/css-info.html DF -- Derek Fawcus                                                    derek@spider.com Spider Software Ltd.                                        +44 (0) 131 475 7034 PGP/GnuPG Keys available _______________________________________________ Livid-dev maillist  -  Livid-dev@livid.on.openprojects.net http://livid.on.openprojects.net/mailman/listinfo/livid-dev
Resent-Date: 04 Nov 1999 21:17:34 +0100; also posted to the Cryptography mail list 28 October 1999. Date: Thu, 28 Oct 1999 12:57:37 +0200 (CEST) From: Frank Andrew Stevenson <frank@funcom.com> X-Sender: frank@odin To: livid-dev@livid.on.openprojects.net Message-ID: <Pine.SGI.3.96.991028123857.10753B-100000@odin> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Subject: [Livid-dev] Working PlayerKey cracker Original-Sender: livid-dev-admin@livid.on.openprojects.net Errors-To: livid-dev-admin@livid.on.openprojects.net X-Mailman-Version: 1.0rc2 Precedence: bulk List-Id: <livid-dev.livid.on.openprojects.net> X-BeenThere: livid-dev@livid.on.openprojects.net Lines: 226 In response to feedback from yesterdays post I have now refined my attack in the following ways: The CSSdecrypt key can now be recoverd with only 5 bytes of known output. Sometimes multiple keys will be found to a single output, due to colissions in the mixing stage. But this is not a problem when recovering KEKs ( Key encryption Keys ), as all keys found will be equivalent / interchangable. There has been some debate around the 'hash function'. I choose to view it as a very simple encryption function. With 5 byte input, 5 byte output and 5 byte key. When searching for a player key, the input / output is known. The cipher can then be attacked with a complexity of 2^8. Code for the key recovery is given below. This cipher has many colissions, and some input outup pairs have no keys, while others have multiple. The latter is a concern when searching for Player keys, as they have to be eliminted by checking agains other discs. I have attached a program that works as follows: hippopotamus:~/tmp> time ./keyrec 22 e1 67 83 72 0f c1 7a 96 98 Recovering Key Possible mangling key: af c9 07 42 1f   Possible Player key 51 67 67 c5 e0   Possible Player key 69 d2 e3 92 ae 5.000u 0.010s 0:05.44 92.0%     0+0k 0+0io 87pf+0w Here 2 equivalent player keys are recovered from the input:  22 e1 67 83 72   - Disc key output: 0f c1 7a 96 98   - intermediate key, common for all player keys The process takes 5.5 seconds on a PPro200, somewhat slower now that only 5 bytes are known in the keystream. If this works, as I hope it will, I will leave it as an exersice to the reader to recover all player keys :-)   frank -------------- This is how to recover the 'hashing key' -------- static int unmangle ( unsigned char* in , unsigned char *out ) {   unsigned char A[5];   unsigned char B[5];   unsigned char C[5];   unsigned char k[6];   int i,j;   /* Recover mangling key */   memcpy( A, in, 5 );   memcpy( C, out, 5 );   k[5] = 0;   for( i=0 ; i < 256 ; i++ ) {     k[4] = i;     for( j = 4 ; j >= 2 ; j-- ) {       B[j] = k[j] ^ CSStab1[ A[j] ] ^ A[j-1];       B[j-1] = CSStab1[ B[j] ] ^ k[j] ^ C[j];       k[j-1] = A[j-2] ^ CSStab1[ A[j-1] ] ^ B[j-1];     }     B[0] = CSStab1[ B[1] ] ^ k[1] ^ C[1];     k[0] = B[0] ^ CSStab1[ A[0] ] ^ B[4];     if( ( CSStab1[ B[0] ] ^ k[0]  )== C[0] ) {       printf( "Possible mangling key: %02x %02x %02x %02x %02x\n", k[0], k[1], k[2], k[3], k[4] );     }   }   return 0; } ----------- The following is the complete sourec for  ------ ---------------- player key cracker ------------------------ begin 640 keyrec.c.Z M'YV0(]*X&<.F#IDR('C,H4,FS1L7:'PT4!!P8,&#"1?*$7@&HD2*`@D:1,AC M#)T\<,IXG%A1)$:%#-FD$;-2P<2%8>BD&0.BCILY:<ZX*4,&A$`Z((9,F4(G MC!@86V+$Z-)C3PT6,%C$8"&#Q0P6-+!JY>H5;)\=$V\VU<G3)U"A1$&,01-& M3M*E3<7$V"*CA@VJ$_=,3``#SXROA6\@-BP&*QX9-AS;6"QCL8W&B2,7GE'& M\8W.FS4_QHS'!NC'IVV(OM%X<&$RBW,L)D,:AF@:BV$LID$ZA^B#CG.<)B,: M!FD:IV&<IB$Z1VL%A/'4N.$X!O7"-<PXQM&U\)CK>'"`'Z.]<(SNTL-45X\= M/8[R>,:P#S]_#/H8VEWC(9,C>/_76Q4&0U:%T?`?'C`<2$.`>.1`X'XX!!?A M:P_"P"`-$R*8(0T/YK"5?C.0X9F(FUU5F`QA%68#B8^Q:(.)>-R0HF%C>%;C M9C/V)=F-C_%HPXPW7*4?&2SFP"(9,,(P(PTLPL`B#3#F,",9/.;`(QDSP@`C M#3S"P",-,^8@)'38'1C#@34PB,.#8QR(PX%C,!C#@S5D&$.&-3R(`X-C9(A# MAF,\*!4+0X*7`WADP`<#>C2`!P-X-,"7`WIDS)?#?&2@!P-\-,P'PWPTH)=# M?F1*MU@,B]5`&@ZBC;$8#HN-05H,HM5P6@RG^;4=:6.<AL-I8X@6PW/1B;&8 M&8N)05H8HI6Q6!B+E4&:&:*)<9H9IXDAFE..E7%:&*>5(9H9Q&X&W@W@S0"? M#.C9`)X,X-D`WPWHS3#?#?/-@)X,\-DPGPSSV8#>#:06>Z`9!^KE6!@/EG%@ M&`>6P:`9#XJ1H1D9/K4P@V5D&$:&93QHQH>EUL!B#"S6`",.,X[!(@XLC@%C M##/6P&,,/-8P(PXPCL$C#CR.,6,,8Q;+HADLB@%C&#,2M3"+9<!HQHQB\&@& MCV+,&`:,9?`8!H]ES&A&T9L=>,.!,S`HPX,V'"C#@38P>,.#,V1X0X8S/"@# M@S9D*$.&-CQX`\G%@F<&>&+`%P9Z98`7!GAEP&<&>F+,9\9\8J`7!GQES!?& M?&6@9X89$YV5E@(XL=733T$-5=1<==W%E%,R\.478`H(5NJ`CEG8NZ:Y99ED M<8X>"$.&QO7N:9-=*MJ9?N=5=ZJ@<@H+'LW5S3SK?&=69R=\N%9W<HWZH>B8 MCB>*!N_Y>JN]+V4LRL`CO^>?]O;Y?I,&,*&ESB#:#.F:T0Q@I"_'',:`=&.0 MN@QXFA`9D$<S((V]#(BV".G'0([!4`:/`ZHG?8E3RWG0@C+(J-TL:4NWH8Y^ M5.68&LRG!FC"$WQLU<*4Y0P]-4@5G1BD*^R`1V<M)%MI7.2C?J4&;H`CC;\D M,Z,7248T[I(,V_C6KJ_HAV">.<T-6'0#'K'&,_<RF]U6<RX@P8A>GEG,W#Q# MN,),*CBQZ1"#?!,<0X4I2KVQU(%RD*%1!><T1@H.^4JUINVHR3VOVMG*1".> M[;C)3ZN:#\RV\S/X_(I_Q:H6XJ@&H\PYQEB?K!B#$O?);"4-:Z2IW"<39L%2 M,6UA2]N6XQX4!@8M;F'/8M'7%J:X;SW,8\M2SY!(4RG'\,>8&4J4,8=SI"M1 M:C8/(@.#B&-,1$U)B&UR3)^TR:OZQ"QH\.F5-MG$)_2X2ILMZUFK5%BJT3D& M6^\\FM6F9;F#76Q<AA.;U$1W+)&U$0].*TS7NL6Y<$4,9*3I7+>:QK5F0:YA M'&/<#$J'%IN@;BT[6=U;7"<7NMA%*;,SUA;2)`/<Z2XZO#O1DN!6),K]9EJ* MTMM*)=/23[[TG043D$PSR-+@N-28,.W=3@O44S?^]#5!U4]*'S-3%=6T,-H" M*DZ%>KZF#M&G-I5J8=RIU*'B`8-.Q2I4;[K5F%:5IS05*QZBBM2I=O6L1$VK M4;/:UK)25:5H#>M<QZI5/'!U=UX%ZU7WNE:R^M6L>(VK7AMTU/TD%;!P_6I1 M&4M7QTY5IY$5[(K4RE;+VO6MB96L7"G+U[H>]JY,S>M@25O8OOX5I8&=[!M+ MZ]G38C:TFGUJ:TW[VMNF5K&KG>UN:^M.WYH/N)LE;&=IXU;(XE:VC66N78UK MU>2R=KF/A6UFH5M9Z=H60;$=K7"QVUSM/E>\T0TJ=55KW?$:MK?@W2YZNZO> M^)YWL>YU;4[M^UO1XC>]E^7O<?T;7`!_UKG]S2UGWXO8!'.7MMZ%[U('K&#E M,ABU%'[P<".\WPE75[?DG:Z`/[Q@_6)RO<@%\8513.#V&OBTH'7P?"%<7P^S M5\4FCG&&9[SA&H?WO_0M+XLK?-T5C_C&)>9MAW]<X""+V,8I3C)QERQ?(-,X MP%!N,8Z5?.(C1]G")AZRAD,,8P3OV,H]QC*37>SD,IM7QF@F<W&]K&4I<[C+ M629R?KDL9A[+F<KW;?*5G[SF+4\9SX6VLX^K+.@T'_C-9V[TGS%,8C!S6<>5 M+G*8Z:SG%X^.HJ=+74;=TKJXP.ZC>'$*#6SWEQX$)L:%+!";]$9+MC5,4!VB M4S3I5C'!B2PK2O73A@#E-X\!#F1VZB.>DHFWC-GM8JU$Z<Z6U+(<::V)31M: MF&HV)0%2#4AB"XM2?_:EH,W/:SX"V\VJE+,K01!K7K3:(%'J'D:9<U^::Q?C M[B,J'%*J7I0;F.BZHE1)@JH^__)<P$#'/4N]$%/YPMR]+"?,W3'R-JU2W[:@ MV"QA-:=6O_E?M58SKL@HU5?+`9;]OI6:<-T*D+D:3@.SI<5K/6]W:KH0G]1F M2[YQ3$YSY.$T%3A*N4WLGPERI&JS>:*'P2UB9MHCF@YTS+*MTC,'ZX]25[:E MGL$(?7C8FF2X-K,HP4AEQB1@)\\H-2$Z:3M/BEG\=.DBJ)VL2"D[$HL<"%4N M'DU$2GW5;F)%F6=9)EJGBDVJ9K.8`T)5C<>RXNY6=1Q>Z6]92DSHK'I#&A:: M-H*?),T7MUHN!(&GD04:S[L<%R_(7<]0/T14NA!W+L.Q$Z66Y%0XUZ6X?G$. M?)*:(7R4N1GXD#(QDB.=`DQG45&WA75P>9U'99>7&K#:I/J9,Q:A"I\%OD;X MP0$^0273^_/M/H.Y[]U^#^<9VAM0]BV$?75<+QG6GT_U&3R]HVY/>L^D4H+$ MU'F<5QV:)QF8=SZ6MT&[TCNEARQI]$F-QW@MI'C2TRV'ATOG0W@9)'B](WG1 M@30C\DE[IW<U%!QWURUU]S3G(W<9]#)-`GCMQ':?I'9I%T3!47;=`B-.5!AB M=R)>ET%<USM"A#!8=W56]QI3YQ_5`762X73G`R<*XB;&HW7M9'2?1'3&)'3! M`73=XG,;<SX[ET$YUSO_!$^)07,,M$PM!'/5X7*2P7+UHTTIMQW)<7,?2'*5 MY3_&!'+!X7'=PG$+HW':A'';41PFUTX3]TD19TP/%QP-URT+MS`)ITT'MQV> M4G$?*'"?!'#&Y&]J%3T"I6\+@V_:9&_;H2D$UT[Q]DGO9DSM)DC5H6X[LC#G MIDWE1DF],V];!6Z?Y&W&Q&W!H6T+Q40+8VWHE$'3UCOBUD[/]DG-ADPMI&S> MTRW'MC#%IDW#MAW($VU;Y6NAA$#&I&O!@6O=8FL+0VOCE$%Z4B$P`&K-AU$\ M80=OD`9%`5(',0=C(`=AT`9BP`9E@`(:56K2%SLJL`9ED`<@D`*O!AVD%GU& MX09(00=;00==00=?00=A00=700<V4%$)T)`<=11&45&#(9$]``(&F0=;``-= M``)>``+F,2`>29$GF9)1T04S.0,]@`(J@`(H`))Q(9(JD`(HD)(K(`,ID)0S M20,]8)$F<`,YV90SH`(RL`(XT`(8.9,UT`,P4%$@\)5@^95PL!$0:08`*0)+ M<)"I@Q`Y`0(X(0=TH`,@4`*Z@0=SN2AV29<X@`=<X`8BP`(@()&`29&#.0,) MZ9%C>11F"0(B\`9U0`=P\)AR*0*'.1AF\`9R`)!IP)4@L`-&D1`@,">=:10K ML`().1@GE0`8V0,@E1>U0Y%=X`6MZ10SL`42B9.#H9HRT)0QX`,^$`,>J9HQ ML),H()$F$`,IP`,\@`,IX`59F9NK.9M*8YLT@)O0H9HV0)P^N9T6Z9LST)P6 MF0*^B9S.^9V^R9SE*9X^4`,I8`)E%9P6N9,6J9S,R0<<"9_9*9VKQI'6F0"J M60,KT)0VL`+/>9V)699G29<R8)=_J9'N>5@I`)\UX)L]@`,>V0>#<:!TL)@B MT)>4&:&E<SJG\P(J4*(F>J(HFJ(JNJ(LVJ(J,!$@\*(*$*-?205H@!!$D`9V M0(]LZ0:O\P9N$`=U4`9VD1--,09K`*,R2J,@0`1EL*.]4A1AX*,@<`<;00=T M4`9N``)B@)!&H(]NL`8@$`0N``),\:1:.@=`JJ1*^I4`:09@N@9`8`8^,09O MT`8N8*=M<)HSJ@)?*05EX(]A,`=Q`:0@$`8@<`10P`0@(!.]\A-EP*9]ZJ*4 M6JF6BJ(O$&KP^)!((04^P01F,`=R(`-"\#5K<`=U009SH)D0"0)V,#MP.3M9 M"I@BZ09G"@=SD)`@H#M?"91%(9*":9$L<)\PRJE&P0)J0)(S&IB&>9*OVA2Q MNA9EX)4@<)F9^9DG"0.CF0:@::M9BJO;6IJZRJM@*9$@<)(6"0(F`).'1:U? MF:XG"9#IZIL@@`.5N:Q?2:(@T#ES@)!T\`9R\0;`<:A4>CD+L:]NX)AG@`9< M*@>/&3F8V2MNV3ER,!?5BIE<F@=9ZI9HD`9FD*6_NJ4JD*GX>K'7J@:<Z9EJ M`)I]80.CJ0;BF@*[6JQA":\@4)R&N:[F,3JC([-\<+,@L++*&9HW<*]A^:[9 MN9U*VYT^\)WI.9[@:9X^@)[AZ9OL^:"CXZY@Z;'RZK(]@*XQH*MB(`>=LP:> M"0(T"P(8NJQK^Y5D2P=U(`=;:I$5M;9JD1.C!GT<=6H/:0=YL6HM:YUWJSKR M2(^RDX^F2J0`Z:L=51=^"@=,0;;[")B,R[<J``=4X!3^&`24J[>F-GV7F[G] M6`9",*[%RKC`.I$5>9$9N9$=>;J>&[)(X094(`=Y0*VHVZIV,`13VA"5DJ74 M*I)IH*SYZJ=44`8'2P=T@128J[EE$`1&D:N(FA)RT`:/B;>&.K+%V@9ET`:$ M2@>LZK>J!IA9`0(M:[0FJYGG"I/;RK)^$:ZF*;,"(;Y9LP4@T+RC&P1;D`8M MV9(G"9QHNZS6JK[9VKX\8+[OZYEI$+-&L9CS^[?VRZTM&0+_:[HEJZ$<"@5$ M:KT89:A$*@>8Z:'H^Y5E@`=I`+X@T`)A"Z)L>SK%^Y`GG`9A(!-Z@!#*BQ#S M2Z2$"@)O8`:!Z;PT$*,D^Y4#C*WLJ\#NZ[(*S,`/K&KVB[^;N[_]N[[#Z\+I M"P*T:[OKJZV>F<4(><`ODD-*C,6UFP<,3*[O&K8GZ<4@0*_V^K,QV95I2Y'K MR\8ZVZYSW*PPJ;4:N<7$"Y;Z>L)$FA,(,09I``<W:A>&J1/<FZO_"@)D:Z<_ M00<.:Q(@P`1&,`52(`.A:0,O8!U<>L*YJKTE6\3<6L!(?,"&N<3Q.[,E^\)A M0`9V,*42B\F:'+8)6[TSC)"D?+2!R932^9HE)9NI)E*WJ;7ONIL2.9[(')C# MZ9/&B9ST"9XTT,RK"<6D2YW6Z<OZ>A!D4`<2RY'J&I@U(,1IB[3K"[F4W#EM M$,$@@)-A><X-+*_E++/B'*^!Z;*F658)^:";8@;-S+7Y#)H8J:OB'*#L.B=R M_,H#W0+H6LWRW,<(?="_;,U>V[<0/-#;?+3ZBL$)BI<OH*`,.IAA,=`1:LX, MK:_8$A<O<*BR3,LV;)@MW<>]?+0VB[,)<<#,"0(_2ZP,W<<46J]::[<EJZ]' M,*1SX,@W"@)M\`8'NU$>NQ-3BA1B<,(\[,.VO,DH'9:[V[OT2,CK"P*>Z@:@ M*JJD:JJH*@>J*J^&"9B&R<)A*=``V=4^^M4;>\?'HZM?R[XRB\;E:IA\<)+L M:B$#4M@+[<MT[;M@+=AC7=:C6JI(FM9KS:P@X-8CK+9I*]>NRKMU_;L(@=?V M*K-[K:U]+<\>S9A&$`9IX(]%\<AG@-2Y6M5(T0+[:L(ZX09G(,)P?;0E?,(` MJ<*73=1A&<A9JH\;R\E-3;:!F0:-')@`.\LRX=ERX=72G9);#99%G,H@4,ZL M;,&^')W%+,RQ*9VU><P1K<R]^9O6_,S%&0/'F9S+2<W6S)38+`3:;-':N;0S MX)U1JY[D6;53V]]6VY[O&=$ZB;/3;)^O^]/9B<WZRY_6#*`"2J`0S=!RW<=W MW+,@0,'W&[GL+,5B*[EF&]$3Z@,5.M16_)4"?<HG6<^NS,U^FI8(B:JY>ID^ M412TK:$\_)B0C+QUP`9(4=,U&\3XG-AVC1`MS<DRF^$\BS'SS=/.RMF*?=?L M"I7RW-%DN:%G*>5'+I=T.0-YB9=WN9<>2KYXH-!\@`)>?)XIP`)>[,_NM-G4 M#=8G+>1@>=J4"0)0X-1`,;IZS@9AD`=$BI('>9<+:NAA?N@BC>AE3L:V>YZ` M^>8"$N<8B;4^#)C%&<1LKJYV]<MM[`.=?)@!');"C=D61=03H:]`T09PX(_5 M6J<Z8:B/+,EV0*1(<:-VV:59ZL@`*Y0DJZ\)FZ5R>0>KS08@<`8ZBA!@2@9W MVN-S\.-TD*L>B\5`BNL@T!#('NV'JMP"$9E!3K*#FU%\B^O8+LI1<0/^RY@6 M4AE0XBYOXA0N$SE<``,BH*S.9ZQ(4,)"H+%E0`5OD`00"9"2?+"6"P=.4`?\ M..BEO:Q\.Q?!VZIR\,<6BZYOP`9O<`>*>[\'G_!RL)(MN=MV\;\NZZ<H<!1$ MZ9:4/!?72NY!(<J`:;$R2]LLG^VYNML3[]P6C_'7:O`(;RT=/Q7H*P<(7?(0 M>?(:H?(`.?,NWU&Z*O,E7.[:SL+%^K9QNZ5V@==9^\+S.\.&V^T\3NQL8.QT M4>OW"\+?++%G4!>5<P8(0<I]$,`CZJ>`6NMPR=13>@8R@=NO/A"QOJ6TW;MR MH8](2NAY,`>D?.\BZ1-M</>NOKBQV[ARX*<"4=D!Z9"6ZYA(L?"]^OA\J[\U ML-&5.WWV_?FXR_G3-P0C!?JF'SMKL`5_\?!(D0;(^L?Z"JAV2O=VC]MY?P:$ M?]W<VP9C``=Y`)"<^Y"`6<_4^OO!/_Q)`9B8?_SHV_J?[\=6;,HI^YD'?+[= MK?E@V?K52<5:6\0K>Y)!K+)M?)*<K+(M0-O<'Y;VK0;IWOKP[Y+4YQ1[,:9; M,/\M^9+ZJP8JO-'N+__]O_4EG>[?^YMB+TG^[;^DD/\`8/<3@$#O)/6_%E!2 MZ%\!M%\3$.@MP/?W_U!<R;)O+(D`%C,#>)/>&?UK?4#O):&^J:"U6E\(/$D@ M<`%>0/P7`C?@%JA.?TS%+2:`-`-CH`E,@![O*Z6`O8;Z0F#[NW-9+H/QN9G@ MZA:?[N,(A,_+B;E%1P6G(%YJ="ZP"P`F%*@%41)?Z(*M;P:`P1OX\9H92$%< M2"KCK0'`I)_88#$+8KLMGI6LMF7JIEX9@%MR:X^%*(N2ZOQ4$U!M6XI.\3V' M(+)(EDA:?`*!52&%NG`&:@3D\U.,T`YL@8_WXHQ5%5M6H2]V"(34M[[V`$P2 M"P0"*ZBMTK=1/E?LP'R<\"1YPE#("D>A%1-HC)`G;+C_M<(JH5A*@F>I"LR! M,,#VO%RNP@-V"1B"`&%(#.U2'D!(QQ`$),-EB)``4H["1[VOI16!@6"[X`#( M:E)I8`Z(*>N6`AI=)`R"<;#'X4&_!YR*5:DS97X,^VTW^.7=MI8;<&?I+M_A M@7V7I?P=P$-AWW"!`;UPB`H_4SS4=_S.'@:\;7<&).$"^POHJ]2I.HIEL:Q5 G[ZMI>,[VO0&Z!P5EG&XK?4X0[_TCX[?C,A^ULH/C$""1MKHEHBP* ` end This sentence is unique in this respect; it can safely be attributed to my employer, Funcom Oslo AS. E3D2BCADBEF8C82F A5891D2B6730EA1B PGPmail preferred, finger for key There is no place like N59 50.558' E010 50.870'. (WGS84) _______________________________________________ Livid-dev maillist  -  Livid-dev@livid.on.openprojects.net http://livid.on.openprojects.net/mailman/listinfo/livid-dev
Resent-Date: 04 Nov 1999 21:17:34 +0100 From: "aaron nonymous" <csshacker666@hotmail.com> To: livid-dev@livid.on.openprojects.net Date: Thu, 28 Oct 1999 17:17:24 GMT Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_19be5891_8520a0e$280e07" Subject: [Livid-dev] more code for reading, descrambling dvd Original-Sender: livid-dev-admin@livid.on.openprojects.net Errors-To: livid-dev-admin@livid.on.openprojects.net X-Mailman-Version: 1.0rc2 Precedence: bulk List-Id: <livid-dev.livid.on.openprojects.net> X-BeenThere: livid-dev@livid.on.openprojects.net Lines: 298 try this out... compile instructions in README file ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com [] readdvd.tgz
Resent-Date: 04 Nov 1999 21:17:34 +0100 From: Mike Stump <mrs@windriver.com> Received: (from mrs@localhost) by kankakee.wrs.com (8.9.1/8.9.0) id CAA19738; Sat, 30 Oct 1999 02:51:39 -0700 (PDT) Date: Sat, 30 Oct 1999 02:51:39 -0700 (PDT) Message-Id: <199910300951.CAA19738@kankakee.wrs.com> To: livid-dev@livid.on.openprojects.net Subject: [Livid-dev] Random numbers Original-Sender: livid-dev-admin@livid.on.openprojects.net Errors-To: livid-dev-admin@livid.on.openprojects.net X-Mailman-Version: 1.0rc2 Precedence: bulk List-Id: <livid-dev.livid.on.openprojects.net> X-BeenThere: livid-dev@livid.on.openprojects.net Lines: 419 I found a bunch of random numbers lying about, they are good for seeding poker programs and such: $ cat *.keys | sort | uniq -c | sort -nr | cut -f1 | uniq -c:      75       6     160       5      75       4      61       3      24       2     673       1 $ cat *.keys | sort | uniq -c | sort -nr (skipping the last 673 uninteresting numbers):       6 {0x7d5, {0x4c,0xbb,0xf5,0x5b,0x23}}       6 {0x7b7, {0xab,0x36,0xe3,0xeb,0x76}}       6 {0x7ad, {0xec,0xa0,0xcf,0xb3,0xff}}       6 {0x78f, {0xbf,0x92,0xc3,0xb0,0xe2}}       6 {0x762, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x73f, {0x26,0xec,0xc4,0xa7,0x4e}}       6 {0x730, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x71c, {0x26,0xec,0xc4,0xa7,0x4e}}       6 {0x717, {0xec,0xa0,0xcf,0xb3,0xff}}       6 {0x6f4, {0xb1,0xb8,0xf9,0x38,0x03}}       6 {0x6c2, {0xcf,0x1a,0xb2,0xf8,0x0a}}       6 {0x6b8, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x6ae, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x68b, {0x45,0xed,0x28,0xeb,0xd3}}       6 {0x67c, {0x4c,0xbb,0xf5,0x5b,0x23}}       6 {0x672, {0xab,0x36,0xe3,0xeb,0x76}}       6 {0x64a, {0x26,0xec,0xc4,0xa7,0x4e}}       6 {0x622, {0xb1,0xb8,0xf9,0x38,0x03}}       6 {0x61d, {0x45,0xed,0x28,0xeb,0xd3}}       6 {0x618, {0xb1,0xb8,0xf9,0x38,0x03}}       6 {0x604, {0xec,0xa0,0xcf,0xb3,0xff}}       6 {0x5be, {0xec,0xa0,0xcf,0xb3,0xff}}       6 {0x591, {0xbf,0x92,0xc3,0xb0,0xe2}}       6 {0x58c, {0x2f,0x25,0x9e,0x96,0xdd}}       6 {0x573, {0xcf,0x1a,0xb2,0xf8,0x0a}}       6 {0x564, {0xcf,0x1a,0xb2,0xf8,0x0a}}       6 {0x550, {0x26,0xec,0xc4,0xa7,0x4e}}       6 {0x537, {0xec,0xa0,0xcf,0xb3,0xff}}       6 {0x532, {0xbf,0x92,0xc3,0xb0,0xe2}}       6 {0x519, {0xab,0x36,0xe3,0xeb,0x76}}       6 {0x4c4, {0x4c,0xbb,0xf5,0x5b,0x23}}       6 {0x4a6, {0x45,0xed,0x28,0xeb,0xd3}}       6 {0x4a1, {0xcf,0x1a,0xb2,0xf8,0x0a}}       6 {0x433, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x410, {0x2f,0x25,0x9e,0x96,0xdd}}       6 {0x40b, {0xbf,0x92,0xc3,0xb0,0xe2}}       6 {0x3c0, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x3bb, {0x26,0xec,0xc4,0xa7,0x4e}}       6 {0x38e, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x36b, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x366, {0xab,0x36,0xe3,0xeb,0x76}}       6 {0x361, {0x45,0xed,0x28,0xeb,0xd3}}       6 {0x357, {0xb1,0xb8,0xf9,0x38,0x03}}       6 {0x352, {0xbf,0x92,0xc3,0xb0,0xe2}}       6 {0x339, {0xb1,0xb8,0xf9,0x38,0x03}}       6 {0x320, {0xb1,0xb8,0xf9,0x38,0x03}}       6 {0x2f3, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x2bc, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x2a8, {0x2f,0x25,0x9e,0x96,0xdd}}       6 {0x29e, {0xbf,0x92,0xc3,0xb0,0xe2}}       6 {0x28f, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x28a, {0xcf,0x1a,0xb2,0xf8,0x0a}}       6 {0x27b, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x258, {0x2f,0x25,0x9e,0x96,0xdd}}       6 {0x221, {0xec,0xa0,0xcf,0xb3,0xff}}       6 {0x1fe, {0x45,0xed,0x28,0xeb,0xd3}}       6 {0x1f9, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x18b, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x177, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x154, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x14a, {0x4c,0xbb,0xf5,0x5b,0x23}}       6 {0x145, {0xcf,0x1a,0xb2,0xf8,0x0a}}       6 {0x13b, {0xab,0x36,0xe3,0xeb,0x76}}       6 {0x131, {0x4c,0xbb,0xf5,0x5b,0x23}}       6 {0x11d, {0x2f,0x25,0x9e,0x96,0xdd}}       6 {0x0f5, {0x2f,0x25,0x9e,0x96,0xdd}}       6 {0x0e6, {0x4c,0xbb,0xf5,0x5b,0x23}}       6 {0x0d7, {0x2c,0xb2,0xc1,0x09,0xee}}       6 {0x096, {0xbf,0x92,0xc3,0xb0,0xe2}}       6 {0x050, {0x45,0xed,0x28,0xeb,0xd3}}       6 {0x04b, {0x51,0x67,0x67,0xc5,0xe0}}       6 {0x037, {0xec,0xa0,0xcf,0xb3,0xff}}       6 {0x023, {0xcf,0x1a,0xb2,0xf8,0x0a}}       6 {0x00a, {0xb1,0xb8,0xf9,0x38,0x03}}       6 {0x005, {0x2f,0x25,0x9e,0x96,0xdd}}       5 {0x7f3, {0x51,0x67,0x67,0xc5,0xe0}}       5 {0x7ee, {0x2f,0x25,0x9e,0x96,0xdd}}       5 {0x7da, {0x26,0xec,0xc4,0xa7,0x4e}}       5 {0x7c6, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x7c1, {0xcf,0x1a,0xb2,0xf8,0x0a}}       5 {0x7b2, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x7a3, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x79e, {0x14,0x0c,0x9e,0xd0,0x09}}       5 {0x799, {0xb1,0xb8,0xf9,0x38,0x03}}       5 {0x794, {0x12,0x11,0xca,0x04,0x3b}}       5 {0x780, {0x7b,0x1e,0x5e,0x2b,0x57}}       5 {0x77b, {0x2c,0xb2,0xc1,0x09,0xee}}       5 {0x767, {0x12,0x11,0xca,0x04,0x3b}}       5 {0x758, {0x63,0xdb,0x4c,0x5b,0x4a}}       5 {0x749, {0x7b,0x1e,0x5e,0x2b,0x57}}       5 {0x73a, {0xb1,0xb8,0xf9,0x38,0x03}}       5 {0x70d, {0x63,0xdb,0x4c,0x5b,0x4a}}       5 {0x703, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x6fe, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x6ef, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x6ea, {0xcf,0x1a,0xb2,0xf8,0x0a}}       5 {0x6d6, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x6c7, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x6a9, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x6a4, {0x26,0xec,0xc4,0xa7,0x4e}}       5 {0x69a, {0xab,0x36,0xe3,0xeb,0x76}}       5 {0x690, {0x2f,0x25,0x9e,0x96,0xdd}}       5 {0x686, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x66d, {0x26,0xec,0xc4,0xa7,0x4e}}       5 {0x668, {0xfc,0x95,0xa9,0x87,0x35}}       5 {0x65e, {0xec,0xa0,0xcf,0xb3,0xff}}       5 {0x659, {0xfc,0x95,0xa9,0x87,0x35}}       5 {0x654, {0xab,0x36,0xe3,0xeb,0x76}}       5 {0x64f, {0x39,0x3d,0xf1,0xf1,0xbd}}       5 {0x645, {0x14,0x0c,0x9e,0xd0,0x09}}       5 {0x636, {0x45,0xed,0x28,0xeb,0xd3}}       5 {0x627, {0x26,0xec,0xc4,0xa7,0x4e}}       5 {0x613, {0x39,0x3d,0xf1,0xf1,0xbd}}       5 {0x60e, {0x7b,0x1e,0x5e,0x2b,0x57}}       5 {0x609, {0xb1,0xb8,0xf9,0x38,0x03}}       5 {0x5ff, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x5e6, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x5d7, {0x14,0x0c,0x9e,0xd0,0x09}}       5 {0x5d2, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x5c3, {0xfc,0x95,0xa9,0x87,0x35}}       5 {0x5b4, {0x1a,0xa4,0x33,0x21,0xa6}}       5 {0x5aa, {0x4c,0xbb,0xf5,0x5b,0x23}}       5 {0x5a0, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x596, {0xcf,0x1a,0xb2,0xf8,0x0a}}       5 {0x587, {0x14,0x0c,0x9e,0xd0,0x09}}       5 {0x582, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x57d, {0xb1,0xb8,0xf9,0x38,0x03}}       5 {0x578, {0x4c,0xbb,0xf5,0x5b,0x23}}       5 {0x56e, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x569, {0x12,0x11,0xca,0x04,0x3b}}       5 {0x541, {0xab,0x36,0xe3,0xeb,0x76}}       5 {0x52d, {0xec,0xa0,0xcf,0xb3,0xff}}       5 {0x528, {0x45,0xed,0x28,0xeb,0xd3}}       5 {0x523, {0x39,0x3d,0xf1,0xf1,0xbd}}       5 {0x514, {0xec,0xa0,0xcf,0xb3,0xff}}       5 {0x50f, {0x2f,0x25,0x9e,0x96,0xdd}}       5 {0x505, {0xbf,0x92,0xc3,0xb0,0xe2}}       5 {0x4fb, {0xcf,0x1a,0xb2,0xf8,0x0a}}       5 {0x4f6, {0xfc,0x95,0xa9,0x87,0x35}}       5 {0x4e7, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x4e2, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x4d8, {0x7b,0x1e,0x5e,0x2b,0x57}}       5 {0x4d3, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x4c9, {0x01,0xaf,0xe3,0x12,0x80}}       5 {0x4ba, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x4b0, {0x39,0x3d,0xf1,0xf1,0xbd}}       5 {0x49c, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x497, {0x01,0xaf,0xe3,0x12,0x80}}       5 {0x488, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x479, {0x2f,0x25,0x9e,0x96,0xdd}}       5 {0x46f, {0x45,0xed,0x28,0xeb,0xd3}}       5 {0x465, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x45b, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x456, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x451, {0x1a,0xa4,0x33,0x21,0xa6}}       5 {0x44c, {0xbf,0x92,0xc3,0xb0,0xe2}}       5 {0x43d, {0x2c,0xb2,0xc1,0x09,0xee}}       5 {0x438, {0xbf,0x92,0xc3,0xb0,0xe2}}       5 {0x42e, {0x01,0xaf,0xe3,0x12,0x80}}       5 {0x41f, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x41a, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x415, {0xab,0x36,0xe3,0xeb,0x76}}       5 {0x401, {0xbf,0x92,0xc3,0xb0,0xe2}}       5 {0x3fc, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x3e8, {0xab,0x36,0xe3,0xeb,0x76}}       5 {0x3e3, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x3de, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x3d9, {0x12,0x11,0xca,0x04,0x3b}}       5 {0x3d4, {0x26,0xec,0xc4,0xa7,0x4e}}       5 {0x3c5, {0x12,0x11,0xca,0x04,0x3b}}       5 {0x3a7, {0xbf,0x92,0xc3,0xb0,0xe2}}       5 {0x389, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x384, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x375, {0x4c,0xbb,0xf5,0x5b,0x23}}       5 {0x35c, {0x51,0x67,0x67,0xc5,0xe0}}       5 {0x343, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x334, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x311, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x30c, {0xec,0xa0,0xcf,0xb3,0xff}}       5 {0x307, {0xab,0x36,0xe3,0xeb,0x76}}       5 {0x2e4, {0x01,0xaf,0xe3,0x12,0x80}}       5 {0x2da, {0x39,0x3d,0xf1,0xf1,0xbd}}       5 {0x2d5, {0xfc,0x95,0xa9,0x87,0x35}}       5 {0x2d0, {0x2f,0x25,0x9e,0x96,0xdd}}       5 {0x2cb, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x2c1, {0x01,0xaf,0xe3,0x12,0x80}}       5 {0x2ad, {0xfc,0x95,0xa9,0x87,0x35}}       5 {0x294, {0x39,0x3d,0xf1,0xf1,0xbd}}       5 {0x285, {0x1a,0xa4,0x33,0x21,0xa6}}       5 {0x276, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x267, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x262, {0x45,0xed,0x28,0xeb,0xd3}}       5 {0x25d, {0x12,0x11,0xca,0x04,0x3b}}       5 {0x253, {0x39,0x3d,0xf1,0xf1,0xbd}}       5 {0x244, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x23f, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x23a, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x235, {0x51,0x67,0x67,0xc5,0xe0}}       5 {0x22b, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x226, {0x51,0x67,0x67,0xc5,0xe0}}       5 {0x212, {0xbf,0x92,0xc3,0xb0,0xe2}}       5 {0x1f4, {0x4c,0xbb,0xf5,0x5b,0x23}}       5 {0x1ef, {0x26,0xec,0xc4,0xa7,0x4e}}       5 {0x1e0, {0xec,0xa0,0xcf,0xb3,0xff}}       5 {0x1db, {0x4c,0xbb,0xf5,0x5b,0x23}}       5 {0x1c7, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x1b8, {0xcf,0x1a,0xb2,0xf8,0x0a}}       5 {0x1a9, {0xcf,0x1a,0xb2,0xf8,0x0a}}       5 {0x19f, {0x2f,0x25,0x9e,0x96,0xdd}}       5 {0x17c, {0x14,0x0c,0x9e,0xd0,0x09}}       5 {0x16d, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x140, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x122, {0xb1,0xb8,0xf9,0x38,0x03}}       5 {0x118, {0x4c,0xbb,0xf5,0x5b,0x23}}       5 {0x10e, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x0ff, {0xfc,0x95,0xa9,0x87,0x35}}       5 {0x0fa, {0xec,0xa0,0xcf,0xb3,0xff}}       5 {0x0f0, {0x45,0xed,0x28,0xeb,0xd3}}       5 {0x0e1, {0x26,0xec,0xc4,0xa7,0x4e}}       5 {0x0cd, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x0c8, {0x14,0x0c,0x9e,0xd0,0x09}}       5 {0x0be, {0xb1,0xb8,0xf9,0x38,0x03}}       5 {0x0b9, {0xab,0x36,0xe3,0xeb,0x76}}       5 {0x0a5, {0x45,0xed,0x28,0xeb,0xd3}}       5 {0x087, {0xfc,0x95,0xa9,0x87,0x35}}       5 {0x07d, {0x26,0xec,0xc4,0xa7,0x4e}}       5 {0x073, {0x63,0xdb,0x4c,0x5b,0x4a}}       5 {0x069, {0x3b,0x31,0x34,0x0d,0x91}}       5 {0x064, {0x85,0xf3,0x85,0xa0,0xe0}}       5 {0x05a, {0x48,0xb7,0x6c,0xce,0x69}}       5 {0x032, {0x14,0x0c,0x9e,0xd0,0x09}}       5 {0x02d, {0xab,0x36,0xe3,0xeb,0x76}}       5 {0x028, {0xb8,0x5d,0xd8,0x53,0xbd}}       5 {0x01e, {0x2c,0xb2,0xc1,0x09,0xee}}       5 {0x014, {0x4c,0xbb,0xf5,0x5b,0x23}}       4 {0x7f8, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x7d0, {0xab,0x1e,0xe7,0x7b,0x72}}       4 {0x7a8, {0xfc,0x95,0xa9,0x87,0x35}}       4 {0x776, {0x12,0x11,0xca,0x04,0x3b}}       4 {0x76c, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x74e, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x744, {0x12,0x11,0xca,0x04,0x3b}}       4 {0x735, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x72b, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x726, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x721, {0x12,0x11,0xca,0x04,0x3b}}       4 {0x708, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x6e5, {0x12,0x11,0xca,0x04,0x3b}}       4 {0x6e0, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x6db, {0xfc,0x95,0xa9,0x87,0x35}}       4 {0x695, {0xfc,0x95,0xa9,0x87,0x35}}       4 {0x681, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x663, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x63b, {0x01,0xaf,0xe3,0x12,0x80}}       4 {0x62c, {0xab,0x1e,0xe7,0x7b,0x72}}       4 {0x5fa, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x5f5, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x5e1, {0xab,0x1e,0xe7,0x7b,0x72}}       4 {0x5dc, {0x14,0x71,0x35,0xba,0xe2}}       4 {0x5b9, {0x01,0xaf,0xe3,0x12,0x80}}       4 {0x55f, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x555, {0x39,0x3d,0xf1,0xf1,0xbd}}       4 {0x546, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x53c, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x51e, {0x01,0xaf,0xe3,0x12,0x80}}       4 {0x4f1, {0x14,0x71,0x35,0xba,0xe2}}       4 {0x4ab, {0xab,0x1e,0xe7,0x7b,0x72}}       4 {0x492, {0x14,0x0c,0x9e,0xd0,0x09}}       4 {0x48d, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x47e, {0x14,0x0c,0x9e,0xd0,0x09}}       4 {0x46a, {0x12,0x11,0xca,0x04,0x3b}}       4 {0x429, {0xab,0x1e,0xe7,0x7b,0x72}}       4 {0x424, {0x39,0x3d,0xf1,0xf1,0xbd}}       4 {0x406, {0x53,0x94,0xe1,0x75,0xbf}}       4 {0x3f7, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x3cf, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x3b6, {0x01,0xaf,0xe3,0x12,0x80}}       4 {0x3b1, {0x14,0x0c,0x9e,0xd0,0x09}}       4 {0x39d, {0x53,0x94,0xe1,0x75,0xbf}}       4 {0x398, {0x01,0xaf,0xe3,0x12,0x80}}       4 {0x37a, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x370, {0x14,0x0c,0x9e,0xd0,0x09}}       4 {0x34d, {0x39,0x3d,0xf1,0xf1,0xbd}}       4 {0x33e, {0x14,0x71,0x35,0xba,0xe2}}       4 {0x32a, {0x53,0x94,0xe1,0x75,0xbf}}       4 {0x316, {0x63,0xdb,0x4c,0x5b,0x4a}}       4 {0x2f8, {0x53,0x94,0xe1,0x75,0xbf}}       4 {0x2e9, {0x53,0x94,0xe1,0x75,0xbf}}       4 {0x2c6, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x2b2, {0x53,0x94,0xe1,0x75,0xbf}}       4 {0x2a3, {0x39,0x3d,0xf1,0xf1,0xbd}}       4 {0x24e, {0x14,0x0c,0x9e,0xd0,0x09}}       4 {0x217, {0x14,0x0c,0x9e,0xd0,0x09}}       4 {0x1ea, {0xab,0x1e,0xe7,0x7b,0x72}}       4 {0x1d1, {0x53,0x94,0xe1,0x75,0xbf}}       4 {0x1bd, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x1ae, {0x12,0x11,0xca,0x04,0x3b}}       4 {0x1a4, {0x01,0xaf,0xe3,0x12,0x80}}       4 {0x195, {0x14,0x71,0x35,0xba,0xe2}}       4 {0x186, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x136, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x12c, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x109, {0xfc,0x95,0xa9,0x87,0x35}}       4 {0x0af, {0xfc,0x95,0xa9,0x87,0x35}}       4 {0x09b, {0x7b,0x1e,0x5e,0x2b,0x57}}       4 {0x08c, {0x39,0x3d,0xf1,0xf1,0xbd}}       4 {0x05f, {0x01,0xaf,0xe3,0x12,0x80}}       4 {0x046, {0x1a,0xa4,0x33,0x21,0xa6}}       4 {0x041, {0x12,0x11,0xca,0x04,0x3b}}       4 {0x019, {0x53,0x94,0xe1,0x75,0xbf}}       3 {0x7e9, {0x35,0x5b,0xc1,0x31,0x0f}}       3 {0x7df, {0x53,0x94,0xe1,0x75,0xbf}}       3 {0x7cb, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x771, {0x35,0x5b,0xc1,0x31,0x0f}}       3 {0x75d, {0xab,0x1e,0xe7,0x7b,0x72}}       3 {0x6f9, {0xab,0x1e,0xe7,0x7b,0x72}}       3 {0x6d1, {0xab,0x1e,0xe7,0x7b,0x72}}       3 {0x6bd, {0xab,0x1e,0xe7,0x7b,0x72}}       3 {0x6b3, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x5f0, {0x35,0x5b,0xc1,0x31,0x0f}}       3 {0x5c8, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x5a5, {0x35,0x5b,0xc1,0x31,0x0f}}       3 {0x59b, {0x35,0x5b,0xc1,0x31,0x0f}}       3 {0x55a, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x54b, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x50a, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x500, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x4ec, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x4ce, {0x35,0x5b,0xc1,0x31,0x0f}}       3 {0x4bf, {0x57,0x2c,0x8b,0x31,0xae}}       3 {0x4b5, {0xab,0x1e,0xe7,0x7b,0x72}}       3 {0x483, {0x36,0x67,0xb2,0xe3,0x85}}       3 {0x474, {0x35,0x5b,0xc1,0x31,0x0f}}       3 {0x447, {0x36,0x67,0xb2,0xe3,0x85}}       3 {0x442, {0x57,0x2c,0x8b,0x31,0xae}}       3 {0x3ed, {0x53,0x94,0xe1,0x75,0xbf}}       3 {0x3ca, {0x36,0x67,0xb2,0xe3,0x85}}       3 {0x3ac, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x3a2, {0x36,0x67,0xb2,0xe3,0x85}}       3 {0x393, {0x57,0x2c,0x8b,0x31,0xae}}       3 {0x37f, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x32f, {0x4b,0x65,0x0d,0xc1,0xee}}       3 {0x325, {0x4b,0x65,0x0d,0xc1,0xee}}       3 {0x2fd, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x2df, {0x36,0x67,0xb2,0xe3,0x85}}       3 {0x2b7, {0x57,0x2c,0x8b,0x31,0xae}}       3 {0x299, {0x36,0x67,0xb2,0xe3,0x85}}       3 {0x271, {0x57,0x2c,0x8b,0x31,0xae}}       3 {0x26c, {0x53,0x94,0xe1,0x75,0xbf}}       3 {0x20d, {0x57,0x2c,0x8b,0x31,0xae}}       3 {0x208, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x203, {0x4b,0x65,0x0d,0xc1,0xee}}       3 {0x1e5, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x1d6, {0x4b,0x65,0x0d,0xc1,0xee}}       3 {0x1cc, {0x35,0x5b,0xc1,0x31,0x0f}}       3 {0x1c2, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x1b3, {0x36,0x67,0xb2,0xe3,0x85}}       3 {0x19a, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x181, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x172, {0x4b,0x65,0x0d,0xc1,0xee}}       3 {0x168, {0x57,0x2c,0x8b,0x31,0xae}}       3 {0x163, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x159, {0x53,0x94,0xe1,0x75,0xbf}}       3 {0x104, {0x53,0x94,0xe1,0x75,0xbf}}       3 {0x0eb, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x0c3, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x0aa, {0xab,0x1e,0xe7,0x7b,0x72}}       3 {0x0a0, {0x33,0x2f,0x49,0x6c,0xe0}}       3 {0x082, {0xab,0x1e,0xe7,0x7b,0x72}}       3 {0x078, {0x14,0x71,0x35,0xba,0xe2}}       3 {0x03c, {0x57,0x2c,0x8b,0x31,0xae}}       2 {0x7e4, {0x36,0x67,0xb2,0xe3,0x85}}       2 {0x78a, {0x4b,0x65,0x0d,0xc1,0xee}}       2 {0x785, {0x57,0x2c,0x8b,0x31,0xae}}       2 {0x753, {0x35,0x5b,0xc1,0x31,0x0f}}       2 {0x712, {0x35,0x5b,0xc1,0x31,0x0f}}       2 {0x631, {0x4b,0x65,0x0d,0xc1,0xee}}       2 {0x5cd, {0x4b,0x65,0x0d,0xc1,0xee}}       2 {0x5af, {0x4b,0x65,0x0d,0xc1,0xee}}       2 {0x4dd, {0x57,0x2c,0x8b,0x31,0xae}}       2 {0x3f2, {0x36,0x67,0xb2,0xe3,0x85}}       2 {0x348, {0x4b,0x65,0x0d,0xc1,0xee}}       2 {0x31b, {0x36,0x67,0xb2,0xe3,0x85}}       2 {0x302, {0x35,0x5b,0xc1,0x31,0x0f}}       2 {0x2ee, {0x35,0x5b,0xc1,0x31,0x0f}}       2 {0x280, {0x57,0x2c,0x8b,0x31,0xae}}       2 {0x21c, {0x57,0x2c,0x8b,0x31,0xae}}       2 {0x190, {0x4b,0x65,0x0d,0xc1,0xee}}       2 {0x15e, {0x36,0x67,0xb2,0xe3,0x85}}       2 {0x14f, {0x36,0x67,0xb2,0xe3,0x85}}       2 {0x113, {0x57,0x2c,0x8b,0x31,0xae}}       2 {0x0d2, {0x4b,0x65,0x0d,0xc1,0xee}}       2 {0x091, {0x4b,0x65,0x0d,0xc1,0xee}}       2 {0x06e, {0x36,0x67,0xb2,0xe3,0x85}}       2 {0x055, {0x35,0x5b,0xc1,0x31,0x0f}} They take around 30 minutes to generate. _______________________________________________ Livid-dev maillist  -  Livid-dev@livid.on.openprojects.net http://livid.on.openprojects.net/mailman/listinfo/livid-dev
Resent-Date: 04 Nov 1999 21:17:34 +0100 Date: Sat, 30 Oct 1999 04:56:47 -0400 From: Greg Maxwell <greg@linuxpower.cx> X-Mailer: Mozilla 4.7 [en] (X11; I; Linux 2.3.25 i686) X-Accept-Language: en MIME-Version: 1.0 To: livid-dev@livid.on.openprojects.net Content-Type: multipart/mixed; boundary="------------3E736036ED24D6BDAFE53E2F" Subject: [Livid-dev] 'BETTER' player key cracker. Original-Sender: livid-dev-admin@livid.on.openprojects.net Errors-To: livid-dev-admin@livid.on.openprojects.net X-Mailman-Version: 1.0rc2 Precedence: bulk List-Id: <livid-dev.livid.on.openprojects.net> X-BeenThere: livid-dev@livid.on.openprojects.net Lines: 450 I made a quick and dirty mod to the CSS 'Working Playerkey cracker'. My new version reads the disk-key file output by tstdvd. To use it you'll need to edit css-descramble.c: Goto where it says if (memcmp(test, pretkey, 5) == 0) { and add: fprintf(stderr, "Using Key %d\nUsing pretkey:\t", i+1); for (ii = 0; ii < 5; ++ii) {   fprintf(stderr,"%02X ", pretkey[ii]); } fprintf(stderr,"\n"); This will give you what your current player key decrypted the disk key to. With this knoweldge, and a complete copy of the disk key, we can now kick-ass and take names. Example: [greg@limelight css-auth]$ ./k 7f 71 cc 7a 62 585 static struct playkey pkey1 = {0x249, {0xb7, 0x3f, 0xd4, 0xaa, 0x14}}; Where "7f 71 cc 7a 62" is the decoded disk-key portion, and 585 is the disk-key position we are trying to crack in ascii. It outputs a css-cat compatible line of C. Now you need to do this for all offests on a few disks and coorlate the output. This is just a quick hack on Frank Andrew Stevenson's code. Mike Stump <mrs@windriver.com> is working on a much better version. I just wanted to get this out./* * keyrecnew.c * * Copyright 1999 Frank Andrew Stevenson <frank@funcom.com> * Copyright 1999 Gregory Maxwell <greg@linuxpower.cx> * * Released under version 2 of the GPL. * * CSS 'Working Playerkey cracker' * Orignally written by: Frank Andrew Stevenson <frank@funcom.com> * * Modified poorly by Greg Maxwell <greg@linuxpower.cx> * Hacked it to take an offset and read a disk file. * * */ #include <stdio.h> #include <string.h> #include <ctype.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>                      int o; static unsigned int CSStab0[11]={5,0,1,2,3,4,0,1,2,3,4}; static unsigned char CSStab1[256]= { 0x33,0x73,0x3b,0x26,0x63,0x23,0x6b,0x76,0x3e,0x7e,0x36,0x2b,0x6e,0x2e,0x66,0x7b, 0xd3,0x93,0xdb,0x06,0x43,0x03,0x4b,0x96,0xde,0x9e,0xd6,0x0b,0x4e,0x0e,0x46,0x9b, 0x57,0x17,0x5f,0x82,0xc7,0x87,0xcf,0x12,0x5a,0x1a,0x52,0x8f,0xca,0x8a,0xc2,0x1f, 0xd9,0x99,0xd1,0x00,0x49,0x09,0x41,0x90,0xd8,0x98,0xd0,0x01,0x48,0x08,0x40,0x91, 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 }; static unsigned char CSStab2[256]= { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x09,0x08,0x0b,0x0a,0x0d,0x0c,0x0f,0x0e, 0x12,0x13,0x10,0x11,0x16,0x17,0x14,0x15,0x1b,0x1a,0x19,0x18,0x1f,0x1e,0x1d,0x1c, 0x24,0x25,0x26,0x27,0x20,0x21,0x22,0x23,0x2d,0x2c,0x2f,0x2e,0x29,0x28,0x2b,0x2a, 0x36,0x37,0x34,0x35,0x32,0x33,0x30,0x31,0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38, 0x49,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,0x68,0x6b,0x6a,0x64,0x65,0x66,0x67,0x60,0x61,0x62,0x63, 0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,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,0x8d,0x8c,0x8f,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, 0xdb,0xda,0xd9,0xd8,0xdf,0xde,0xdd,0xdc,0xd2,0xd3,0xd0,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,0xf1, 0xed,0xec,0xef,0xee,0xe9,0xe8,0xeb,0xea,0xe4,0xe5,0xe6,0xe7,0xe0,0xe1,0xe2,0xe3 }; static unsigned char CSStab3[512]= { 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,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,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,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, 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,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,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,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, 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,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,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,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, 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,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,0x00,0x24,0x49,0x6d,0x92,0xb6,0xdb,0xff }; static unsigned char CSStab4[256]= { 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,0xd8,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,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2, 0x0a,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa, 0x06,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6, 0x0e,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe, 0x01,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,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, 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,0x3b,0xbb,0x7b,0xfb, 0x07,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7, 0x0f,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff }; static unsigned char CSStab5[256]= { 0xff,0x7f,0xbf,0x3f,0xdf,0x5f,0x9f,0x1f,0xef,0x6f,0xaf,0x2f,0xcf,0x4f,0x8f,0x0f, 0xf7,0x77,0xb7,0x37,0xd7,0x57,0x97,0x17,0xe7,0x67,0xa7,0x27,0xc7,0x47,0x87,0x07, 0xfb,0x7b,0xbb,0x3b,0xdb,0x5b,0x9b,0x1b,0xeb,0x6b,0xab,0x2b,0xcb,0x4b,0x8b,0x0b, 0xf3,0x73,0xb3,0x33,0xd3,0x53,0x93,0x13,0xe3,0x63,0xa3,0x23,0xc3,0x43,0x83,0x03, 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,0xd9,0x59,0x99,0x19,0xe9,0x69,0xa9,0x29,0xc9,0x49,0x89,0x09, 0xf1,0x71,0xb1,0x31,0xd1,0x51,0x91,0x11,0xe1,0x61,0xa1,0x21,0xc1,0x41,0x81,0x01, 0xfe,0x7e,0xbe,0x3e,0xde,0x5e,0x9e,0x1e,0xee,0x6e,0xae,0x2e,0xce,0x4e,0x8e,0x0e, 0xf6,0x76,0xb6,0x36,0xd6,0x56,0x96,0x16,0xe6,0x66,0xa6,0x26,0xc6,0x46,0x86,0x06, 0xfa,0x7a,0xba,0x3a,0xda,0x5a,0x9a,0x1a,0xea,0x6a,0xaa,0x2a,0xca,0x4a,0x8a,0x0a, 0xf2,0x72,0xb2,0x32,0xd2,0x52,0x92,0x12,0xe2,0x62,0xa2,0x22,0xc2,0x42,0x82,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,0xd8,0x58,0x98,0x18,0xe8,0x68,0xa8,0x28,0xc8,0x48,0x88,0x08, 0xf0,0x70,0xb0,0x30,0xd0,0x50,0x90,0x10,0xe0,0x60,0xa0,0x20,0xc0,0x40,0x80,0x00 }; static void CSSdescramble( unsigned char *key ) { unsigned int t1,t2,t3,t4,t5,t6; unsigned int i; t1= key[0] ^ 0x100; t2= key[1]; t3=(*((unsigned int *)(key+2))); 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" ); } /******************************************************** * *  The Divide and conquer attack * *  Deviced and written by Frank A. Stevenson * *  ( frank@funcom.com ) *  Released on a GPL license * ********************************************************/ static int RunLfsr2Backwards( int vStartState, int nSteps ) {   unsigned int t1,t3,t6;   int i,j;   t3 = vStartState;   for( i = 0 ; i < nSteps ; 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 & 0x1ffff) | ( j << 17 );       t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;       if( t6 == t1 ) break;      }   }   return t3; } static unsigned char invtab4[256]; static void CSScracker( unsigned char* pStream, unsigned char *pTableA, unsigned char *pTableB ) {   unsigned int t1,t2,t3,t4,t5,t6;   int ii=0;   unsigned int nTry;   unsigned int vCandidate;   int i;   /* Test that pTableA is a permutation */   memset( invtab4, 0, 256 );   for( i = 0 ; i < 256 ; i++ ) invtab4[ pTableA[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[ pTableA[i] ] = i;   for( nTry = 0 ; nTry < 65536 ; nTry++ ) {     t1 = nTry >> 8 | 0x100;     t2 = nTry & 0xff;     t3 = 0;     t5 = 0;     /* iterate cipher 3 times to reconstruct LFSR2 16/17 bits */     for( i = 0 ; i < 3 ; i++ ) {       /* advance LFSR1 normaly */       t4=CSStab2[t2]^CSStab3[t1];       t2=t1>>1;       t1=((t1&1)<<8)^t4;       t4=pTableB[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;     }     /* Guess the most significant bit of LFSR2 */     vCandidate =  RunLfsr2Backwards( t3 , 3 );     if( ( vCandidate & 0x08 ) == 0 ) {       t3 |=  0x01000000;       vCandidate =  RunLfsr2Backwards( t3 , 3 );     }     if( ( vCandidate & 0x08 ) == 0 ) {       printf( "Failed to guess bit - exiting\n" );       exit( -1 );     }     /* iterate 2 more times to validate candidate key */     for( ; i < 5 ; i++ ) {       t4=CSStab2[t2]^CSStab3[t1];       t2=t1>>1;       t1=((t1&1)<<8)^t4;       t4=pTableB[t4];       t6=(((((((t3>>3)^t3)>>1)^t3)>>8)^t3)>>5)&0xff;       t3=(t3<<8)|t6;       t6=pTableA[t6];       t5+=t6+t4;       if( (t5 & 0xff) != pStream[i] ) break;       t5>>=8;     }     if( i == 5 ) {       /* Key was found - print out result */       t4 = ( vCandidate / 2 ) & 0xfffff8;       t4 |= vCandidate & 0x7;       /* printf( "Candidate: %03x %02x %08x\n", 0x100|(nTry>>8),nTry&0x0ff, vCandidate ); */ ii++;       printf( "static struct playkey pkey1 = {0x%03x, {0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}};\n", o, nTry>>8, nTry&0x0ff, t4&0xff , (t4 >>8) &0xff, t4 >> 16 );     }   } } /* simple function to convert hex bytes to int */ /* note: will give random results if nonhex digits are input */ static char hexdigits[17] = "0123456789abcdef\0"; static int HexByteToInt( const char *pNumber ) {   char ch;   int r;   ch = tolower( pNumber[0] );   r = 16 * (int)( strchr( hexdigits, ch ) - hexdigits );   ch = tolower( pNumber[1] );   r+= (int)( strchr( hexdigits, ch ) - hexdigits );   return r & 0x0ff;  /* invalid input will have produce garbage */ } /* Revert mangling function - and crack keys*/ static int unmangle ( unsigned char* in , unsigned char *out ) {   unsigned char A[5];   unsigned char B[5];   unsigned char C[5];   unsigned char k[6];   int i,j;   /* Recover mangling key */   memcpy( A, in, 5 );   memcpy( C, out, 5 );   k[5] = 0;   for( i=0 ; i < 256 ; i++ ) {     k[4] = i;     for( j = 4 ; j >= 2 ; j-- ) {       B[j] = k[j] ^ CSStab1[ A[j] ] ^ A[j-1];       B[j-1] = CSStab1[ B[j] ] ^ k[j] ^ C[j];       k[j-1] = A[j-2] ^ CSStab1[ A[j-1] ] ^ B[j-1];     }     B[0] = CSStab1[ B[1] ] ^ k[1] ^ C[1];     k[0] = B[0] ^ CSStab1[ A[0] ] ^ B[4];     if( ( CSStab1[ B[0] ] ^ k[0]  )== C[0] ) { /*      printf( "Possible mangling key: %02x %02x %02x %02x %02x\n", k[0], k[1], k[2], k[3], k[4] ); */       CSScracker( k, CSStab4, CSStab4 );           }   }   return 0; } /* Main function */ int main( int argc, char* argv[] ) {   int i;   int fid;   unsigned char in[5] = { 0,0,0,0,0 };   unsigned char out[5] = { 0,0,0,0,0 };   if( (argc!=2) && (argc!=7) ) {     printf( "Usage: %s xx xx xx xx xx offset (title code)\n", argv[0] );     return -1;   }   if (argc == 2) {     o = atoi(argv[1]);      out[ 0 ] = HexByteToInt( "7F" );     out[ 1 ] = HexByteToInt( "71" );     out[ 2 ] = HexByteToInt( "CC" );     out[ 3 ] = HexByteToInt( "7A" );     out[ 4 ] = HexByteToInt( "62" );   }     if (argc==7) {     for( i = 0; i < 5 ; i++ ) {      out[ i ] = HexByteToInt( argv[i+1] );     }     o = atoi(argv[6]);   }       fid = open("disk-key",O_RDONLY);     lseek(fid,o,SEEK_SET);     read(fid,in,5);        close(fid);   /* search for key */   unmangle( in, out );     return( 0 ); }
Resent-Date: 04 Nov 1999 21:17:34 +0100; also posted to the Cryptography mail list 30 October 1999. Date: Sat, 30 Oct 1999 20:40:25 +0200 (CEST) From: Frank Andrew Stevenson <frank@funcom.com> X-Sender: frank@odin To: livid-dev@livid.on.openprojects.net Message-ID: <Pine.SGI.3.96.991030201122.28175A-100000@odin> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Subject: [Livid-dev] Working attack on DiskKey Hash Original-Sender: livid-dev-admin@livid.on.openprojects.net Errors-To: livid-dev-admin@livid.on.openprojects.net X-Mailman-Version: 1.0rc2 Precedence: bulk List-Id: <livid-dev.livid.on.openprojects.net> X-BeenThere: livid-dev@livid.on.openprojects.net Lines: 228 Through private communication with list readers, I was more or less challenged... ( Or so it felt to me ) To find an attack whereby the encrypted (temporary) diskkey can be retrieved from the hash found at the start of the Disk key data block. At first it seemed to me that it required a workload of 2^40. And there didn't seem much in the way for speeding up such an attack. But througe careful study of the structure in the mangling cipher and the CSS I have now come up with the following attack. Guess the initals state of LFSR1, and B[0] - the first byte of the second stage of the mangling cipher. From this starting point k[0] and B[4] , first byte of mangling key, and fifth byte of second stage can be found. Now k[4] can be found, that is the fifth byte in the mangling key. Through a table all permissible k[1] second mangling keys can be found. Since the mangling key is the output of the ordinary CSS cipher, LFSR1s output is completely known. We have also just found byte 1,2,5 of the CSS cipher output. This gives us 2  possibilities of 1,2,5 byte output from LFSR2. Luckily there is a 1 <-> 1 mapping of these bytes and the initial state. So through a table with 2^24 entries the initial state of LSFR2 can be found. By now completing the mangle cipher 1 out 256 LFSR2 startstates will emerge as a candidate, and can be checked the usual (slow) way. There will 'only' be 2^17 such checks so performance is not a concern. The whole attack has a complexity of 2^24 (mayby 25), with a memory requirnement of 64MB. On a PIII/450 it will recover a set of possible keys in less than in 20 seconds. Sample run on 200MHz R4000 (?)    odin:~> time ./unhash fb 81 26 01 fe CSS hash finder - gobbles memory ( 64 MB RAM ) Good luck Searching for hash: fb 81 26 01 fe Initializing k[1] lookup table Initializing and clearing 64MB of RAM Calculating big table. Wait, this takes time -------------------------------- ################################ Table init completed, now reversing hash Possible tmp key 21 5b 31 89 82 Possible tmp key 3f 9d fa de f3 Possible tmp key 53 4d fe 99 1e 114.602u 1.595s 1:59.12 97.5% 0+0k 0+0io 0pf+0w This recovers 3 possible keys for the given hash. I believe the wrong ones are easy to eliminate by trying to decode the datastreams. ( It takes almost 2 minutes on this CPU, but at least it runs on bigendians as well )   frank --------- Fully functional DiskKey Hash cracker ------------ begin 640 unhash.c.Z M'YV0(]*X&<.F#IDR('C,H4,FS1L7:'PH"#BPX,&$"^4(/`-1(D6"!A'R&$,G M#YPR'2<*!'E1(4,V:<2D5+`P#)TT8T#4<3,GS1DW9<B`$$@'Q)`I4^B$$0-C M2XP877KLJ<$"!HL8+&2PF,&"1M6K6;=V[;-#`4VE-W/N[/DS*(@Q:,+(,8I4 MJ9@86V34L!%5P1X%"6#@F<%5\(W"@\54Q2/#QF(;B&4@MJ'8L&/!,\HLOJ$9 M\V7&E?'8Z,R8M(W/-Q0#%DP&<0[$9$+#^$P#,0S$-$+G^'QP<0[29#[#"$V# M-`S2-#[G4!T83XT;BV-`%US#S&(<6@6/F8X'!_<QU@7'R.X\3'3SU,GC"(]G M#/KN[\>0CV%]-1XR.7SG9XU5,`RK@M&P'QXP#$A#?WCD`.!]./C6(&L+PH`@ M#0\26"$-"^:`E7TSD+&9AYA1)9@,7@EF`XB,H6B#B'C<4.)@8VP6(V8OZO78 MC(SA:,.+-U!E'QDHYH`B&2S"\"(-*,*`(@TLYO`B&3CF@",9+\+`(@TXPH`C M#2_FX&-S-0P8PX`U((C#@F,,B,.`8R`8PX(U5!A#A34LB`."8U2(0X5C+/@4 M"S]REP-W9+`'`WDT<`<#=S2PEP-Y9+R7PWMDD`<#>S2\!\-[-)"70WU@(A8# M8C6$AL-G8R"&`V)CA!;#9S60%@-I>UT7VABDX4#:&)_%P)Q@8B!F!F)BA!;& M9V4@%@9B981FQF=BD&8&:6)\MM1B99`6!FEE?&;&KX-Q=P-W,[`G`WDV<"<# M=S:P=P-Y,[QWPWLSD"<#>S:\)\-[-I!W`ZC`#FC&@'<M%L:"90P8QH!E(&C& M@F)4:$:%3!F,8!D5AE%A&0N:L2&8*,:`8@TLXO#B&"CB@.(8+,;P8@TXQH!C M#2_BP.(8..*`XQ@OQO`EL"B:@:(8+(;Q8E`&HU@&BV:\*`:.9N`HQHMAL%@& MCF'@6,:+9OP\V(`W##@#@C(L:,.`,@QH`X(W+#A#A3=4.,.",B!H0X4R5&C# M@C=\#"QW9G`G!GMAD%<&=V%P5P9[9I`GQGMFO"<&>6&P5\9[8;Q7!GEFF*$` M66;5E)9.//D$E%!PR4574DO)D-=>??W5W'^+25B[I;956:1PB@X(0X7#U:YI MDED:JIE]XT4GJI]N]LJ=R]&U[.I[8T8G)WNS1A=RC/:1N)B-(WZV[O=TDVUO M9"C*@..]WY.6]O=XA[8OH,W-\-D,Y+XX`XOU+D:8_VY#4+G\1YH.^0]',PA- MO/PGM@;91T"+H5`$B<.I)6T)4\A9T($BB"C<'.E*M(&.?4JUF!J\)TPEI!-[ M8E7"D<V,/#4@%9P05"OJ<(=F)?3:B6[T&'R91FUZ"TV^'O.B%3WF,^EZC-GL MABZNV.=?FR'-#5!T`QRE9C/R`AO<4",N'K'H79M!3-LVX[<$><HU&4+0;GPC MJ"XU23>2&E`.*O0IWY!&2+[A7G/.=!TSJ4=5-2O99[QS'37IR53O4=EU<L8> M7=$/6-`2G--8-+G%!,N2$$/0X"Q)K:%)+32/LR3!'-@<HQFL:-9"W(+"@*#" M&4Q9*,J:P0BG+85ES%CF^5%H(K48_/2R0H7J)7"&-"5(P69!9$!0<'I)J"=Y M+4V+R5,T;Q6?E>V,/;B*)IKP1)Y41?-D-T.5")O3N<5,RYQ!@YJS("<PB7D+ M<%QC&N>$U;$R(DTP5\.6Y;C%L(V%YG+8.IK5D*4XA%W,<#/X7%G.8A.<D(XM MIWM+7.9R%-8%:PMEDD'L[$.[$1U);4%R'&^<92BZ??0Q(;7D2,T),`*9-((@ M]8U(>TG2VKTT0#$5S*-42E.6/M*EWSNIB5(*R9X*IIS^N2D>(#A4F?*4-37E MJ%*9*AJBXJ%:1L4#4H'J49BBU*E%A:I/I1I4KS95IS,5ZU%+6E:<?A6M3[U/ M5&<WU9R:,:ZQ\6E2V[I4N^XTK'(=*UWY2M4=PA6P>5VK30GKU[0&5K%D[:I; MSWI7Q-9TKY+MZULK>]650G:PF2VL5;&J5JVR-;2-Q>M<,<L8H585K)W-ZE8[ MVEJSOO:PL2UM.2-;V\G>EK.D?:QI%XO:S?XUM\+=+6A[JUG*'C>XB1TN:[WG M6\,"U[/#Y2UUF_O;YV)WMG4UKF.CJ]SINM:ZWI7M:9DK6MA"=[5<96]J+:O7 M^&ZWO;A]KV#-:UOTCO>R]CWO:+_;4MK>=[[()>]Z#RQ>U>XWP/T=L'J)*]\& MT_>S_*VNA'6[8`&[E\`_-;"'\POB#'/7OP[&,(0U_.$)FQB_UYVP=D<<8PY3 MF,'._>^#11SA%MOXQ0C6KXIYS&(2NWC%)]YP<@L<WARG6+I(AG%Z;3SC'AOY MQU$.,HBK7.0:+_G&-)[RE[F<9!]_&<@63C!\B5SF*Y\YRVD6<G:7B^/NZEBQ M:';RA>><9SL_&;R,C?.6Z1SF.T.9S5(V=.<4&CJT.'0MIG-+ZBA:EZ70X'5\ MZ8%?>,O'`*&);JLT&\+\E"$X(=-M$.-;QZS"43U=B$]XRYC>-B8G.M()F'*C M&-PD1DK_U.Q()ZL1U8IXM)YUZ65/TI_3>,0UKW`T9UO:V?JPIB.MQ2Q*,YL2 M`J5F1:CIT3_J050W[44Y=!EN/IZ"(:3@Y3A_<4XK'$TDI^*C+\SQ2W/4D]0) M*44OR<D+<KF<W2!I@RKQ60N)R.J5<F#%F_M!"S7><@Q'<X6<7;E/6Z;AEJSN M2"O@%)!:4I36\69GI@GAB6RMM-O%W*1&&BI3@)IDF\/*6*!"VA::(U*8VA@F M)CF2:4"^Q`S!P":P_'"T9%>Z&8O`AX>J/<9J+6L2BTC62_Y1\HM,\YJ2KK.D ME:4OEBI26LB"-+(AH<B`0/L0.D.L*MRP*C+*F@RS1.4:4L$&,?\#EAB%Y<39 MF8HXMY*?L83X3U?I)C0D+&T"+1F:*QX57(NZ#J.^HR[$L4MQSQ/4#0E%+L&) M"W#C]$\C,85-<Q$.7Y;#GJ-6R)Y@8H8]FS0,XSP'.K/8X0UI$$I%;T('-I1A M#67(0PQ0`.FVH&ZB(%`!\//`@N)'=-+)3T,;4K#I!#C?+40!`1VP0@>MT($K M=/`*':A"!QN4Q?JE,[Y$5;<&C';A_-E/PT(3L/T>2'\+,.@"'\3SG_-WW_YM MX!3O!QC?!X!YT04@P`<@@`+W-P-=P`,\@`,ID(`+>'\T\(`\\"HIX'\TT`/? M9P(WX'\SX($SH`(RL`(XT`+AYW\UT`,P<'YF\`9RP(`NN`-IP`,U8(,KL`+4 MEP"R0W\=N'NMLP7=UP5>((07M7T#F`#T)P,>&`,^X`,Q<'[T%P,]@`(HL'TF M$`,I`($2Z`4K"!A`V`-(>&GAMX3T9P-7B(5LF(4S$(4SD`)@&(=1R(5SF`)1 M^(7?AX<^4`,I8`)K184%Z(9>F`)\4'Z"J(9E2(1\(8@UL`(>:`,K$(9,V'YI M$!7C!XBFY8A1V`,X<'Y]`!@Q.(-IT`,Y8(,^4(-IT`(MT(,)L'Q;@(1-D08K M`!51T7ZRN`6T:(M'6&EWL06PF(N[V`7$Z`7!Z(NS2(QE$8IF\0(J\(S0&(W2 M.(W46(W6>(TJH`#)IXTJ``(@0`5H@!`5!0)($`9S@`8@(`=E8`=E(`=S$`9L MP(W<Z(U$L(YI,`=N$09N(!1WH!%T0`=EX`8@(`9Y``)&(`?ZN`8@$`0N``)) ML8X!.0=OX`;RF'S>B`(@8`8(Z09K``1FL!-C\`9MX`(AV08@0'T6"0)24`:^ M9XYN,9$@$`8@<`10P`0@`!.XPA-E4)'8V),^^9/3^`)F,0('808"@1!+$`-4 M$`1"P`1%<`5)0`14@`0@\";-V(T]T09PX'L9"9(W`9-T\`9O,9'L*`=%$8YX M,)!Y`)!SH'UBF7TJ()3."`)N\`8`J0,@<`=IP`9L``)GD`;LF([Z2`8BF8YE M,`=UP`9TT)9I8`9T.9%H"0(-\9>+&9/J.!1N``=U4!1QV6@-E1/0AY:3F0:+ MZ10W@(`]``(B("&2P23ILB9+@3*+PP4P(`(+)3H.E7U(4`9X(`1K6094\`9) MX`9T@)$AR1-%`7TJ``=.4`=M$"US,8%_X8W0!Q=EX8W9)P<+19WHF)IAR09O M<`?MB)',Z9S0B7\(N(':F(X@D)JO8I$,2)PI@)$9`1<S"`*BZ1.D.0<L(%$G M"0(M@)^\.9J5J9[<V9YN"9[B>9_E^9SM*(`G>9WI"(D5*)_T20=R8)\8F9^4 MR9_^.8$!RJ'[&:%FX8WJ2`=U(`<".1<F``*B9P8[X(US*1!V`(^YAYF:611Z MR9?X&0:!"0=R\`9D4`>XXI=R\3AG@!"=V0<@8!97.8]3('U;B1`?.1!?*9!A MJ7V'612-&9-O,9BY9Q,(L7P@`*1"2J2'J7WAZ)>`&9`]>H[<*)0*<'LW2J-; MZA-BBI'7=WQRT8UQ<8[]N:?K-Q?*]Y_3^5"1QJ=S(7VNTXCK*:C0!P>PZ*CK MV09ET`9C``=Y@)&,VI]_B@;]60,DBIUMX#HU@)HN*J&6BJF:2I[+UY]K$*JC M6J:P>*H(^H*`L7NDZ7O+-WQ#4:K]*:G!1Z+KV9@8N:ICH)6<"JRT&GRR.H$] MD)HP8*CKZ8UEJA'$:088*0(@``5O,`<](09<20=:"0)D6@*'DI;H*@/JFJX@ ML*[MRJY<X`8B`*OH::]08:\:9:\.:*\7.*O,R(Q7"0)-$`8"T956ZA`"V9G9 MUP8&ZP:<2IR6>08Q,JC=*!=G8`=;D)X@<*B0BGQ!X'X(N@<N^A4`4A4@0!8@ M,)>?ZA8-,0<*2:8!NA,YZI8@X+!N<`9<.09I``?A2*A"Z8T?JSI"(+*I2;(G MF[0I&Z-S.057,Y%"P3I)"@)OX)@XJ[,(P;,^VX[)%[2(JG[0-P1&V[$EF[0H MJ[)S^02;6;-2BQ!5>[/ZB+5OT;,_"Z`@,)P`*0>6VA!BN@3#&I=-*K3I]WS( MUWZV>K1E:[)GR[3=6+`Y"Q,Y.[=;.Q<RNY!L()%4N[:;F9%!:I(5A9%#\)^= M*;@0)6G(]P:;B1>G&J/6VKJNN[+=:)2!:93N6!2H2P<U2Y!L2;6.R01&,`52 M$`-=^ZB#:[JJ<[NF^GZON[RPFY%MZKRUF[FXN[FZFZ9OZ[O`*P/#2[J)BIE% MP09F,`=R$`-AP+K,^[IS60=P<!)SD0,#.:+7^[O!N[U?&U'9![[BZROF>[ZM M.Y<*RK4X\+Z5&;_`*[RC6[_8)['D"@?]N<!:H7U:R140#`?BIY4Y6*P2FP8L MH`82*JC9YP8/"0=!L+_]VXVDV8XV(8,9J<+8.[\U898@(#I*ZK4>++$@#)!P M(`0D;*TSFK<I/!>C6*;?&JY<6;3YY[H'7,-%X094(`=YL,,E/!0^')9`K,)+ M`*%P,,0QL9>DF09IFL3%*Q0?[*W@&A.^EY3F.Y<C\+997,;BBI006J,%\<4T M',86"P)):1>^1\)SR01O\`9KH+[:MQ1<&<1M3,1P#!7TJ\3="`)"X!-40,AE ML+]]++_:^\*+B18((1`'@0=N09!5&1:B>KNY^YO#NYYS>03J6`8W$;D'#*1$ MH:VJ.8Z?ZKS[R+4!>@9O4"R^UY:K*H,%B9$[0K!"H))!T`3_>01_+!0%,09K M,*_SRJWJB<K=.`3AZ,P3ZYP!69D';*P3FQ,@$`*I:0/4VKJPG*W;6@7OF*1X M60)MB0=I"<\@(,_TG)8868[GZ!9$<(\Q.ZPI$,W]B;$:>\0&:JTGFJ("V0)3 MN)[,**/53);MR*69N;D8J\W$V9996LL'/(J<>JLQF@8)`0*B^M$[6,[6&K)# M`0*HNIN]^9O!B;<8*="Z6(OI*:&AZ(WG3`>R+`).*Q=PL1$K/!>?VL[N"J_O M6M1(+:_TVI\AFW],+8!/O:\+N07].M7_.LT.7:W="`7J"`=R@1!ZG*9!7,OJ M6);O&(_6VIG4C)E=;*-Z@!#@"<B"'-9M&<3MI\BOC*TZO:W#V=8PH0=`?=<( M&->!#`>#_,;17-!Y+,D(ZK!\^09C(,PD8S\6F91+V91/&953.:NKBH_%B<<Q M$-;].:W]N2(Q1,[=:-E,Z910*9546=#>O-AOW)ZIZ015P`0V*9W5>JVQO*UJ M:[M6>ZG`#`+M&*1RT)^1T@8"F0>H&\-H@+IL(!3XB!!W$!=%D01YN9=]Z=C@ MF1-`@0=%H0.M&,VSZHV\29H8J=``NYX+C*!-C8!>L#IV@1=3K<@#Z(T<G=+2 M"@(?'=)Z0<XDO0+_.9>"W;7>>*C>Z,`(BH3TW=[Q#=+*.Y<,O@6.#*%=<,#X M+8,8J0:WRM\@P.$\``+_[>%J4-(3.)=&C("`B^#6NL`S@*`<'M\*_N",:Q00 MBN$MKI4T@*"R[7L4KMJ8W=J;W8T8.>+=R.$"[N+_&>'=&)([`=S$39P:D:8_ M.\.[G>`ZOH,2VKK>O,`['JV@?=FLK=FOW;%7;JTYO=.1/-LO:XYY^ZYD`-`3 MO.,%W;HW[;I=KN,A#>1C[MK_V>-E\.-*N=J9[>=$+N)[89%(/L$O/H%)KN>H M*G]G#NB"+N:%/N0+B.BH_>$@\.APT.@JC:!>ON4IR]`EVKQ]W<IGD+ESL9+P MR`8%*08^<=A<F=>]K9JIG@9N#=2#^18MB:VKOB--4,QO*P7'G-@2^LAGL.9< MF9K<#=D8^2KC\B[OB95I\-95&Y]T,($%W=FLC)'*SNR:X:(@T)_2/BYUL^D] M@>W:2A3<+J&Q'=J,#>:VC=LFC=-ZO=._S;LW*]Q.3-QR8-P-&02,Z9AT@`;W MF)?0309N<`)GF:)T0-YU3MQX@-X`*KP%?>=*+JT2FN;;.@3P.`:)V5"1*^NK M'M8->04&2P<-C/`8'0;`A]'25P;(OIX>KYJLF/,ZO_,\W_,[+_$2FM\@O=_] M'>+G3NT`/A0F;N9<+LL,"`(MZA__TCEF`*W[K=NO>_,B,`+23.KX;08%<8X7 M2IB;._%WCN6&G9I8F-("#M(3&/5X0!]4_S#_J8""$<`*V-%P?P/E'=0;WN$Q M"N(B3>)+_X-H[X1MR(83#(<G"89:R8=VN,!\J(>/'X5^J(F=0X5HWYY9J)6% M>(A:*0.:+[VNHP:HNH@3K+WW;:UGS^EJ3_KHF1!&3\X3F/>PK\@0"`(!7/NP M?X&D'NZ2O`6FCZ"2[HUWKO5`[Z19G=8@<`4(\=62.9&;[`9=G+/]69=W8)AF MC1"?JM5>J_7BSM;)*9)3"I`>\IC97];MV!.1^ZG03*^SNL"BFIKO#0+Q/>'U MC8"KG]\W7`8B#/AT*80%@9!FVBA;C.I__Z_P[3;\-;YDDK2*>_^!`F$D!#@` MHY#NZWL,T%<@*`H(]5S4)CIU#FTF!204!I`&'^U:"-*KE.TNC528,B#]RG#W M:>B1NZ(W^`+<O<MQ:4^^#:&;%+[&EQ@(=??/%\T`"I<!9=+J:UT9\`>FIB(( M`BS@0GM=3%#MH8`BN(6Z4`2:0#).*WD]Z47?(-R"\T679H*I-%+7T'A8DW-. M.>KY[:,O!1<0@D2R5""@1FD$2=:6<)S8.F*IB0-:P$^TV\26(LN#`K`#!J+= MUM[H'U6#;SKP%UDU_4?J%%QJPG_U;P#MMJ9U.3(4.CIX0:H.G`%T].J$F!LK M8K$/Q_&_$%;,B%X`Q&'%+,2-N`-("A4@^NI&ZL\=(02O9I;:TMLZ>`CA:D&N M5:>UZA:.\T8I;@.2PBW8?O!@(J1OP1`1WD'E=>:*UK]*3<$POA5#1.C`B.$6 M>(85[E]E03BP!=T`&4-D28G'R;LW5ND(G9"C2D3.R%6X(R;@_&`7F$"2\!5^ MHW]WNV(2CSID9@PAR+$Z(-946('[A7Z/+C6Q@F0*F=B_"W'>4(N]L7!X``>B M*UQ>!2XU4;HP9P[)''Q2A\&P'0H@1R<0_YV`$UY'T'45K3\XP425-!1`VVEY MS25U=)PR`I&R79JK*+!`D]3"M!=`1'LO[O7QGVDEX*:AW;I=>(&@;4%OA+QB MGW>*8(+P`S*OC<?HDN*;F%8_P`,^11"`EP;A4D2*KT_)]40(%:"`(H2:>*VK M*))$)0?W,M^9PXD("B/MQ$YGKJXA`NJ*J<LM]KVPN)E<!S8DBQXP\X5`D">0 MHD55XEV.Z90QK[G$EF1B&HA>^'"V%<5_=1/G7%J$?4<L][TGWH>1Q"("RGV[ MCP(MQI#8NKP<@@)^Y-`Q<D9K);8TBJC3<V411IU%&^>`'J-GW(/_*34.11N' M#3'2:_0!58GV)46SR+R*5FM\A+X(&<I%1-A^M"%M'(W>J/W\QJEF&H.@1:%O M(:LU(D+?B!PKG&D$CL^1PE%'(-@66^/].X2SL?U<Q_QG_XXAA0M9IG$Z'J#9 MZ,W`'81RCO--.QX@[MA^1%RH^T]@3FS91XYEIQ8"G@)(&,D$U+_^9`*6883B M7R#0=<TE*K"E8MC36H.)D2MMQA?HNB;DZYN0`FZMQ,:\J!JO(@5[C$4Q,LZ^ MNI?I+*/LNX"\;S/.1L\(#2%9\!.-L[$THBK/*!M7H]A:CK91S\'&M\<A8Z1< MS(HZ$C=.QMW8(9?7=L2.\3$;ZK_R6!R5H5L,CX?0O<U'^+@4H&.45(\.:#86 MK?&(_[8C<8R2WS%+KD;QB*I"EB*CDHH0/2[)^+8EJV-[K'!GTCQ:QS79%O>C M-[)Z-LY.3J#^>!/.0)Z">@,2ZAG(#80@SUP9-'ZGK@QJI&R!D0#=K%J490#< 1N<C9AM4,$XI246J11`DLLP`2 ` end This sentence is unique in this respect; it can safely be attributed to my employer, Funcom Oslo AS. E3D2BCADBEF8C82F A5891D2B6730EA1B PGPmail preferred, finger for key There is no place like N59 50.558' E010 50.870'. (WGS84) _______________________________________________ Livid-dev maillist  -  Livid-dev@livid.on.openprojects.net http://livid.on.openprojects.net/mailman/listinfo/livid-dev
Date: Sat, 30 Oct 1999 21:27:50 +0200 (CEST) From: Frank Andrew Stevenson <frank@funcom.com> X-Sender: frank@odin To: cryptography@c2.net Subject: More on CSS Message-ID: <Pine.SGI.3.96.991030210322.28175B-100000@odin> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-cryptography@c2.net Earlier this week, I posted a note about an attack on the recently published CSS cipher, used for encrypting DVDs. I published my first attack here: http://livid.on.openprojects.net/pipermail/livid-dev/1999-October/000589.html It has a workload 2^16 and recovers the 40 bits CSS key with 6 known bytes. I then directed my efforts against the TitleKey generation: http://livid.on.openprojects.net/pipermail/livid-dev/1999-October/000609.html Here a secondary mangling cipher falls with a workload of 2^8, and as only 5 bytes of known plaintext is now needed, it is now possible to extract numerous 'player keys' by correalating a few DVD titles. It seems to have worked, for shortly afterwards there was a deluge of playerkeys: http://livid.on.openprojects.net/pipermail/livid-dev/1999-October/000657.html My last attack is outlined in: http://livid.on.openprojects.net/pipermail/livid-dev/1999-October/000671.html It is an attack on a hash that is used to verify that the correct player key has been used. This has was also weakness, and can be reversed with 2^25 work and 2^24 memory. A PIII/450 reverts such a hash in less than 20 seconds. This particular attack is interesting as it will allow a DVD to viewed without any known player key, or known / guessed plaintext. This should be of concern when trying to design 'secure distributions' of movies for In Flight Entertainment, such as is beeing discussed on: http://www.waea.org/public/specs/DVD-WG/DVDWG%20Index.html ( Movies can be released much earlier for IFE, and the security of   these copies are a concern with regards to piracy. If they can   be decrypted, they provide a Digital Master )    frank
Date: Mon, 8 Nov 1999 13:00:21 +0100 (CET) From: Frank Andrew Stevenson <frank@funcom.com> X-Sender: frank@odin To: cryptography@c2.net Subject: CSS Details Message-ID: <Pine.SGI.3.96.991108125714.23331B-100000@odin> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-cryptography@c2.net I have put together some information on the weaknesses of the DVDs CSS algorithm, as a service to those who don't want to wade through the C code that I wrote. http://crypto.gq.nu/   frank