×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered

610 comments

fp (-1, Troll)

Anonymous Coward | more than 9 years ago | (#8967280)

rico

Curious how he wrote it in C#. (5, Interesting)

brunes69 (86786) | more than 9 years ago | (#8967288)

Not that I have anything against C#, I actually find it quite nice, just stuck me as odd that someone would write a cracking toolin it. These things are traditionally written in C ( for speed ).... like DeCSS was.

Re:Curious how he wrote it in C#. (4, Informative)

Rikus (765448) | more than 9 years ago | (#8967353)

I'm guessing it will be rewriten by plenty of people in various different languages. C, perl, python... fortran77?
I don't even have a C# compiler.

Re:Curious how he wrote it in C#. (4, Informative)

harlows_monkeys (106428) | more than 9 years ago | (#8967409)

These things are traditionally written in C ( for speed )

You are assuming that C# is slow. That is not a good assumption.

Re:Curious how he wrote it in C#. (4, Informative)

sosume (680416) | more than 9 years ago | (#8967416)

Since this code is easily converted to c++ (or VB) using one of the various tools available, this won't gain much or any speed under .NET.

BTW he *could* have included some comments ;)

ok... (0)

bdigit (132070) | more than 9 years ago | (#8967289)

so whats it do? Yes I see the code and you say its similar to fairplay but how?

Re:ok... (1)

Sonicated (515345) | more than 9 years ago | (#8967443)

so whats it do? Yes I see the code and you say its similar to fairplay but how?"

Playfair links to non-GPL code (MPL) where this is pure GPL, the only other code it uses are the .NET class libraries which are licensed under the LGPL.

Re:ok... (1)

caspper69 (548511) | more than 9 years ago | (#8967500)

the only other code it uses are the .NET class libraries which are licensed under the LGPL.

I don't know my ass from a hole in the ground, but I highly doubt Microsoft's .NET Class Libraries are licensed under the LGPL.

Re:ok... (0)

Anonymous Coward | more than 9 years ago | (#8967468)

In the code it reads
public static void Main( string [] Args )
{
FileStream fs;
M4PStream m4p;

if( Args.Length != 1 )
{
Console.WriteLine( "Usage: DeDRMS file.m4p" );
return;
}
[...]
file.m4p [filext.com] ?

Written in C# (5, Funny)

sweet cunny muffin (771671) | more than 9 years ago | (#8967291)

Wow. This is written in C#. I wonder if we can get .NET banned now that we can prove it's used for illegal purposes :)

Re:Written in C# (5, Funny)

Anonymous Coward | more than 9 years ago | (#8967307)

How is it pronounced? I always thought the # meant rap, as in C#

Re:Written in C# (5, Funny)

RPoet (20693) | more than 9 years ago | (#8967435)

# is the "hash" symbol. C#, while written out as "C Hash", is pronounced "Cash", reflecting the reason Microsoft invented it.

[This notice inserted to assist the humor impaired: This post may contain attempts at humor.]

[ObKarmaProtection: "Well, this will probably send my karma to hell, but ..."]

Re:Written in C# (5, Funny)

satanami69 (209636) | more than 9 years ago | (#8967533)

I thought it was just a quick way to write c++++, since the # looks like four +'s in a square.

Re:Written in C# (1, Funny)

jrockway (229604) | more than 9 years ago | (#8967481)

It's called "see sharp" because if you ever have to code in it you'll want to keep something sharp in sight so death is only a stab away :) Hahaha.

Re:Written in C# (4, Insightful)

Lemmy Caution (8378) | more than 9 years ago | (#8967541)

You know, of the people I know who have for love or money had to work with C#, exactly zero of them have complaints about it. According to all accounts I've heard, it's a well-thought out language that's easy to work in.

D may be the next iteration, but let's give props where props are due.

Re:Written in C# (3, Funny)

ryepup (522994) | more than 9 years ago | (#8967322)

Cause banning the tool would stop it. Really.

Re:Written in C# (2, Interesting)

dAzED1 (33635) | more than 9 years ago | (#8967346)

I could be wrong, but I think he was being sarcastic. Like, while p2p services have illegal things happen on them, people kill the p2p. Gosh, I guess I could be wrong...doubt it though.

Re:Written in C# (5, Interesting)

mrpuffypants (444598) | more than 9 years ago | (#8967355)

I actually like the irony of a Microsoft pushed technology being used to kill an Apple-pushed technology THEN getting GPL'd!

Sad news ... Stephen King dead at 59 (-1, Troll)

Anonymous Coward | more than 9 years ago | (#8967292)


I just heard some sad news on talk radio - Horror/Sci Fi writer Stephen King was found dead in his Maine home this morning. There weren't any more details. I'm sure everyone in the Slashdot community will miss him - even if you didn't enjoy his work, there's no denying his contributions to popular culture. Truly an American icon.

DeDRMS (5, Interesting)

gnu-generation-one (717590) | more than 9 years ago | (#8967293)

"In practice, the goal of maximizing publication regardless of the cost to freedom is supported by widespread rhetoric which asserts that public copying is illegitimate, unfair, and intrinsically wrong. For instance, the publishers call people who copy "pirates," a smear term designed to equate sharing information with your neighbor with attacking a ship. (This smear term was formerly used by authors to describe publishers who found lawful ways to publish unauthorized editions; its modern use by the publishers is almost the reverse.) This rhetoric directly rejects the Constitutional basis for copyright, but presents itself as representing the unquestioned tradition of the American legal system.

The "pirate" rhetoric is typically accepted because it blankets the media so that few people realize that it is radical. It is effective because if copying by the public is fundamentally illegitimate, we can never object to the publishers' demand that we surrender our freedom to do so. In other words, when the public is challenged to show why publishers should not receive some additional power, the most important reason of all -- "We want to copy" -- is disqualified in advance.

This leaves no way to argue against increasing copyright power except using side issues. Hence opposition to stronger copyright powers today almost exclusively cites side issues, and never dares cite the freedom to distribute copies as a legitimate public value."

Misinterpreting Copyright [gnu.org]

Re:DeDRMS (0)

Anonymous Coward | more than 9 years ago | (#8967344)

You could have least said that those words came from RMS [wikipedia.org] , other then just giving the link ;).

Mod PARENT up, do it for RMS!

fp (-1, Troll)

Anonymous Coward | more than 9 years ago | (#8967296)

fp the rest are liers

Ummm....wow (0, Redundant)

DJ-Dodger (169589) | more than 9 years ago | (#8967297)

I didn't expect it to be written in C#. No wonder it's so short.

Re:Ummm....wow (3, Funny)

isny (681711) | more than 9 years ago | (#8967348)

I could do it in one really long line of C. Without comments.

Re:Ummm....wow (1, Insightful)

Anonymous Coward | more than 9 years ago | (#8967413)

talk is cheap. JUST DO IT. you are remembered by your actions in life, not your bullshit.

Re:Ummm....wow (5, Funny)

RPoet (20693) | more than 9 years ago | (#8967470)

I didn't expect it to be written in C#.

NOBODY expects it to be written in C#!! Its chief weapon is surprise ... surprise and fear ... fear and surprise ... Its two weapons are fear and surprise ... and ruthless efficiency ... Its three weapons are fear, surprise, and ruthless efficiency ... and an almost fanatical devotion to Redmond ... Its four ... no ... Amongst its weapons ... Amongst its weaponry ... are such elements as fear, surprise ... I'll try posting some other time.

Wow (1)

theo2520 (654444) | more than 9 years ago | (#8967298)

I applaud this guy's efforts, and his courage. He's broken a couple of high-profile propritary systems in a short period of time - wonder how long before he has more lawyers on him than dogs have hairs.

Nice achivement, and in python, but.. (1, Redundant)

Rtsbasic (709532) | more than 9 years ago | (#8967301)

Wait for the lawyers to hear about this one, they're going to have a field day..
Also, what sort of DRM does it remove? AAC? "Trusted Computing"?

Re:Nice achivement, and in python, but.. (1)

Rtsbasic (709532) | more than 9 years ago | (#8967328)

Ok, my bad - didn't know C# could be so simple, looked like python at first glance.

Re:Nice achivement, and in python, but.. (1, Interesting)

Anonymous Coward | more than 9 years ago | (#8967384)

C# is a pretty clean language, all in all. One of those things that MS got it right by successive approximation.

Re:Nice achivement, and in python, but.. (0)

Anonymous Coward | more than 9 years ago | (#8967347)

I don't see how this is any different compared to DeCCS. We all know how procesutor succeeded in that one.

Re:Nice achivement, and in python, but.. (1)

Rtsbasic (709532) | more than 9 years ago | (#8967454)

Yes, but my point was they still had a damn good go at outlawing it. Why would it be any different this time?

This just in! (5, Funny)

mrpuffypants (444598) | more than 9 years ago | (#8967302)

Real, Inc.'s Realplayer now natively plays back iTMS purchases! It's Magic!

OT: Sig comment (don't care don't read don't mod) (0, Offtopic)

GreyWolf3000 (468618) | more than 9 years ago | (#8967418)

If you make a reference to Guybrush Threepwood in your comment I always mod it up. Go Monkey Island!

Guybrush Threepwood? That's the silliest name I've ever heard.

--Mancomb Seepwood.

Re:OT: Sig comment (don't care don't read don't mo (0, Offtopic)

Anonymous Coward | more than 9 years ago | (#8967497)

I take it you haven't read the rules for moderation. He cannot moderate this thread because he has already posted to it.

Start your (P2P) Engines... (-1, Redundant)

Anonymous Coward | more than 9 years ago | (#8967304)

Time to put this thing on Freenet [sourceforge.net] and MUTE [sourceforge.net] since I don't think the corporate world is smart enough to have learned their lesson and *not* sue him...again.

Since it is only 230 LOC (-1, Redundant)

Anonymous Coward | more than 9 years ago | (#8967310)

Why not paste it over here at slashdot.

Slashcode (-1, Troll)

Anonymous Coward | more than 9 years ago | (#8967318)

that steaming pile of shit screws up the formatting

Oh dear (5, Funny)

Realistic_Dragon (655151) | more than 9 years ago | (#8967324)

Perhaps for his next trick he will stand outside RIAA/MPAA headquaters holding a 6 foot neon sign that says SUE ME AGAIN!

I hope that eventually someone incorporates this code into a iTunes client for Linux, as it would be nice to be able to buy music from iTMS but I have no desire to buy a Mac.

Re:Oh dear (5, Funny)

spektr (466069) | more than 9 years ago | (#8967390)

Perhaps for his next trick he will stand outside RIAA/MPAA headquaters holding a 6 foot neon sign that says SUE ME AGAIN!

The RIAA manager will recognize him as a loyal customer and give him a friendly nod before he goes to work...

Looks like his webserver was written in C#! (3, Funny)

TheBurningDog (747915) | more than 9 years ago | (#8967326)

seriously however... anybody have a mirror of the code?

Re:Looks like his webserver was written in C#! (5, Informative)

Anonymous Coward | more than 9 years ago | (#8967415)

I was fortunate enough to load the page during the 1 minute that the server stayed up.

Now let's see how long my little mirror stays up!

http://fire.prohosting.com/xonerate/dedrms.txt

Re:Looks like his webserver was written in C#! (0)

Anonymous Coward | more than 9 years ago | (#8967525)

My God...it's full of Java.

Troll? (0)

Anonymous Coward | more than 9 years ago | (#8967430)

What about C# has to do with his webserver buckling under the load?

Re:Looks like his webserver was written in C#! (0)

Anonymous Coward | more than 9 years ago | (#8967459)

See also this mirror [lerfjhax.com] . It ought to work a bit better than the failing web server linked to in the story.

Re:Looks like his webserver was written in C#! (5, Informative)

Anonymous Coward | more than 9 years ago | (#8967463)

Stupid junk filter doesn't let me post this. Why oh why? Code after filler...

In the beginning God created the heaven and the earth.
2 And the earth was without form, and void; and darkness was upon the face of the deep. And the Spirit of God moved upon the face of the waters.
3 And God said, Let there be light: and there was light.
4 And God saw the light, that it was good: and God divided the light from the darkness.
5 And God called the light Day, and the darkness he called Night. And the evening and the morning were the first day.
6 And God said, Let there be a firmament in the midst of the waters, and let it divide the waters from the waters.
7 And God made the firmament, and divided the waters which were under the firmament from the waters which were above the firmament: and it was so.
8 And God called the firmament Heaven. And the evening and the morning were the second day.
9 And God said, Let the waters under the heaven be gathered together unto one place, and let the dry land appear: and it was so.
10 And God called the dry land Earth; and the gathering together of the waters called he Seas: and God saw that it was good.
11 And God said, Let the earth bring forth grass, the herb yielding seed, and the fruit tree yielding fruit after his kind, whose seed is in itself, upon the earth: and it was so.
12 And the earth brought forth grass, and herb yielding seed after his kind, and the tree yielding fruit, whose seed was in itself, after his kind: and God saw that it was good.
13 And the evening and the morning were the third day.
14 And God said, Let there be lights in the firmament of the heaven to divide the day from the night; and let them be for signs, and for seasons, and for days, and years:
15 And let them be for lights in the firmament of the heaven to give light upon the earth: and it was so.
16 And God made two great lights; the greater light to rule the day, and the lesser light to rule the night: he made the stars also.
17 And God set them in the firmament of the heaven to give light upon the earth,
18 And to rule over the day and over the night, and to divide the light from the darkness: and God saw that it was good.
19 And the evening and the morning were the fourth day.
20 And God said, Let the waters bring forth abundantly the moving creature that hath life, and fowl that may fly above the earth in the open firmament of heaven.
21 And God created great whales, and every living creature that moveth, which the waters brought forth abundantly, after their kind, and every winged fowl after his kind: and God saw that it was good.
22 And God blessed them, saying, Be fruitful, and multiply, and fill the waters in the seas, and let fowl multiply in the earth.
23 And the evening and the morning were the fifth day.
24 And God said, Let the earth bring forth the living creature after his kind, cattle, and creeping thing, and beast of the earth after his kind: and it was so.
25 And God made the beast of the earth after his kind, and cattle after their kind, and every thing that creepeth upon the earth after his kind: and God saw that it was good.
26 And God said, Let us make man in our image, after our likeness: and let them have dominion over the fish of the sea, and over the fowl of the air, and over the cattle, and over all the earth, and over every creeping thing that creepeth upon the earth.
27 So God created man in his own image, in the image of God created he him; male and female created he them.
28 And God blessed them, and God said unto them, Be fruitful, and multiply, and replenish the earth, and subdue it: and have dominion over the fish of the sea, and over the fowl of the air, and over every living thing that moveth upon the earth.
29 And God said, Behold, I have given you every herb bearing seed, which is upon the face of all the earth, and every tree, in the which is the fruit of a tree yielding seed; to you it shall be for meat.
30 And to every beast of the earth, and to every fowl of the air, and to every thing that creepeth upon the earth, wherein there is life, I have given every green herb for meat: and it was so.
31 And God saw every thing that he had made, and, behold, it was very good. And the evening and the morning were the sixth day.
2:1 Thus the heavens and the earth were finished, and all the host of them.
2 And on the seventh day God ended his work which he had made; and he rested on the seventh day from all his work which he had made.
3 And God blessed the seventh day, and sanctified it: because that in it he had rested from all his work which God created and made.

"I wish to propose for the reader's favourable consideration a doctrine which may, I fear, appear wildly paradoxical and subversive. The doctrine in question is this: that it is undesirable to believe a proposition when there is no ground whatever for supposing it true."
(From "Introduction: On the Value of Scepticism", Sceptical Essays [London: Allen & Unwin, 1928])

/ * Copyright (C) 2004 Jon Lech Johansen <jon-vl@nanocrew.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*/

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

class M4PStream
{
private Rijndael alg;

private BinaryReader br;
private BinaryWriter bw;
private byte [] sbuffer;
private string AtomDRMS = "drms";
private string AtomMP4A = "mp4a";
private string AtomSINF = "sinf";
private string AtomUSER = "user";
private string AtomKEY = "key ";
private string AtomIVIV = "iviv";
private string AtomNAME = "name";
private string AtomPRIV = "priv";
private string AtomSTSZ = "stsz";
private string AtomMDAT = "mdat";
public M4PStream( FileStream fs )
{
br = new BinaryReader( fs );
bw = new BinaryWriter( fs );
sbuffer = br.ReadBytes( Convert.ToInt32(fs.Length ) );

alg = Rijndael.Create();
alg.Mode = CipherMode.CBC;
alg.Padding = PaddingMode.None;
}
byte [] NetToHost( byte [] Input, int Pos, int Count )
{
if( BitConverter.IsLittleEndian )
{
for( int i = 0; i < Count; i++ )
{
Array.Reverse( Input, Pos + (i * 4), 4 );
}
}
return Input;
}
int GetAtomPos( string Atom )
{
byte [] Bytes = Encoding.ASCII.GetBytes( Atom );
for( int i = 0; i < (sbuffer.Length - 3); i++ )
{
if( sbuffer[ i + 0 ] == Bytes[ 0 ] &&
sbuffer[ i + 1 ] == Bytes[ 1 ] &&
sbuffer[ i + 2 ] == Bytes[ 2 ] &&
sbuffer[ i + 3 ] == Bytes[ 3 ] )
{
return i;
}
}

throw new Exception( String.Format( "Atom '{0}' not found", Atom ) );
}

uint GetAtomSize( int Pos )
{
byte [] Bytes = new byte[ 4 ];
Buffer.BlockCopy( sbuffer, Pos - 4, Bytes, 0, 4 );
return BitConverter.ToUInt32( NetToHost( Bytes, 0, 1 ), 0 );
}

byte [] GetAtomData( int Pos, bool bNetToHost )
{
uint Size;
byte [] Bytes;

Size = GetAtomSize( Pos );
Bytes = new byte[ Size - 8 ];
Buffer.BlockCopy( sbuffer, Pos + 4, Bytes, 0, Bytes.Length );

return bNetToHost ? NetToHost( Bytes, 0, Bytes.Length / 4 ) : Bytes;
}

public void Decrypt( byte [] CipherText, int Offset, int Count,
byte [] Key, byte [] IV )
{
MemoryStream ms = new MemoryStream();

ICryptoTransform ct = alg.CreateDecryptor( Key, IV );
CryptoStream cs = new CryptoStream( ms, ct, CryptoStreamMode.Write );
cs.Write( CipherText, Offset, (Count / 16) * 16 );
cs.Close();

ms.ToArray().CopyTo( CipherText, Offset );
}

public byte [] GetUserKey( uint UserID, uint KeyID )
{
byte [] UserKey;
BinaryReader bruk;

string strHome =
Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData );
bool bUnix = Environment.OSVersion.ToString().IndexOf( "Unix" ) != -1;
string strFile = String.Format( "{0}{1}{2}drms{3}{4:X8}.{5:D3}", strHome,
Path.DirectorySeparatorChar, bUnix ? "." : "",
Path.DirectorySeparatorChar, UserID, KeyID );

bruk = new BinaryReader( File.OpenRead( strFile ) );
UserKey = bruk.ReadBytes( Convert.ToInt32( bruk.BaseStream.Length ) );
bruk.Close();

return UserKey;
}

public int [] GetSampleTable()
{
byte [] adSTSZ = GetAtomData( GetAtomPos( AtomSTSZ ), true );
int SampleCount = BitConverter.ToInt32( adSTSZ, 8 );
int [] SampleTable = new int[ SampleCount ];

for( int i = 0; i < SampleCount; i++ )
{
SampleTable[ i ] = BitConverter.ToInt32( adSTSZ, 12 + (i * 4) );
}

return SampleTable;
}

public void DeDRMS()
{
byte [] IV = new byte[ 16 ];
byte [] Key = new byte[ 16 ];

int apDRMS = GetAtomPos( AtomDRMS );
int apSINF = GetAtomPos( AtomSINF );
int apMDAT = GetAtomPos( AtomMDAT );

int [] SampleTable = GetSampleTable();

byte [] adUSER = GetAtomData( GetAtomPos( AtomUSER ), true );
byte [] adKEY = GetAtomData( GetAtomPos( AtomKEY ), true );
byte [] adIVIV = GetAtomData( GetAtomPos( AtomIVIV ), false );
byte [] adNAME = GetAtomData( GetAtomPos( AtomNAME ), false );
byte [] adPRIV = GetAtomData( GetAtomPos( AtomPRIV ), false );

uint UserID = BitConverter.ToUInt32( adUSER, 0 );
uint KeyID = BitConverter.ToUInt32( adKEY, 0 );
string strName = Encoding.ASCII.GetString( adNAME );
byte [] UserKey = GetUserKey( UserID, KeyID );

MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
MD5.TransformBlock( adNAME, 0, strName.IndexOf( '\0' ), adNAME, 0 );
MD5.TransformFinalBlock( adIVIV, 0, adIVIV.Length );

Decrypt( adPRIV, 0, adPRIV.Length, UserKey, MD5.Hash );

if( Encoding.ASCII.GetString( adPRIV, 0, 4 ) != "itun" )
{
throw new Exception( "Decryption of 'priv' atom failed" );
}

Buffer.BlockCopy( adPRIV, 24, Key, 0, Key.Length );
Buffer.BlockCopy( adPRIV, 48, IV, 0, IV.Length );

for( int i = 0, Pos = apMDAT + 4;
i < SampleTable.Length;
Pos += SampleTable[ i ], i++ )
{
Decrypt( sbuffer, Pos, SampleTable[ i ], Key, IV );
}

Encoding.ASCII.GetBytes( AtomMP4A ).CopyTo( sbuffer, apDRMS );
Encoding.ASCII.GetBytes( AtomSINF.ToUpper() ).CopyTo( sbuffer, apSINF );

bw.Seek( 0, SeekOrigin.Begin );
bw.Write( sbuffer );
}
}

class DeDRMS
{
public static void Main( string [] Args )
{
FileStream fs;
M4PStream m4p;

if( Args.Length != 1 )
{
Console.WriteLine( "Usage: DeDRMS file.m4p" );
return;
}

try
{
fs = new FileStream( Args[ 0 ], FileMode.Open,
FileAccess.Read | FileAccess.Write );
m4p = new M4PStream( fs );
m4p.DeDRMS();
fs.Close();
}
catch( Exception e )
{
Console.WriteLine( "Exception: {0}", e.Message );
return;
}
}
}

This is to avoid the junk filter, please repeat after me: Yada yadda yadddda yadayada
yadyayayayayafkk dsfrewfgdghsdl
Stupid junk filter doesn't let me post this.
Why o why?

SCENE I. A cavern. In the middle, a boiling cauldron.

Thunder. Enter the three Witches
First Witch
Thrice the brinded cat hath mew'd.

Second Witch
Thrice and once the hedge-pig whined.

Third Witch
Harpier cries 'Tis time, 'tis time.

First Witch
Round about the cauldron go;
In the poison'd entrails throw.
Toad, that under cold stone
Days and nights has thirty-one
Swelter'd venom sleeping got,
Boil thou first i' the charmed pot.

ALL
Double, double toil and trouble;
Fire burn, and cauldron bubble.

Second Witch
Fillet of a fenny snake,
In the cauldron boil and bake;
Eye of newt and toe of frog,
Wool of bat and tongue of dog,
Adder's fork and blind-worm's sting,
Lizard's leg and owlet's wing,
For a charm of powerful trouble,
Like a hell-broth boil and bubble.

ALL
Double, double toil and trouble;
Fire burn and cauldron bubble.

generalization to n dimensions of algebraic curves. More technically, an algebraic variety is a reduced scheme of finite type over a field K. An algebraic variety V is defined as the set of points in the reals (or the complex numbers ) satisfying a system of polynomial equations for i = 1, 2, .... According to the Hilbert basis theorem, a finite number of equations suffices.

A variety is the set of common zeros to a collection of polynomials. In classical algebraic geometry, the polynomials have complex numbers for coefficients. Because of the fundamental theorem of algebra, such polynomials always have zeros. For example,

Educate your children to self-control, to the habit of holding passion and prejudice and evil tendencies subject to an upright and reasoning will, and you have done much to abolish misery from their future and crimes from society.
Benjamin Franklin

Source code, ideas, communication (5, Interesting)

JoshuaDFranklin (147726) | more than 9 years ago | (#8967339)

I am sure this will trigger another round of lawsuits, hopefully with the net effect of more education of the public and legal community as to the nature of source code as speech (that is, a method of communication).

This code shows with more simplicity than ever before how the FairPlay DRM scheme works. This can be used by programmers to add support for applications (i.e., GStreamer) to play encrypted files with a key produced from an iTunes username/password. It can be used by researchers to see any weaknesses in FairPlay and develop better methods. Unfortunately it can also be used by those who want to destroy the iTunes Music Service.

Interestingly, I believe the ideas could also be used to create files encrypted with a particular iTunes login, though perhaps I'm misunderstanding the scheme.

Re:Source code, ideas, communication (3, Funny)

Deraj DeZine (726641) | more than 9 years ago | (#8967436)

it can also be used by those who want to destroy the iTunes Music Service.
eg. Microsoft.

Source code as speech? Wrong (-1, Troll)

Anonymous Coward | more than 9 years ago | (#8967446)

I'm sure you'd LIKE Osama Bin Laden to have the latest missile control algorithms, but we're not going to let that happen. In fact, eat shit, you greasy pacifist hippie. I am sick to death of your ludicrous anti-American ravings. Do you really believe the rest of us don't see right through your mental pathology? Your entire political philosophy boils down to this: "The cool kids picked on me in high school, and I can't get over it. I hate America"

Blah blah blah (-1, Flamebait)

Anonymous Coward | more than 9 years ago | (#8967516)

Is that your best troll?

Ridiculous. You mother had better insults when I was shaving the hair from her back last night.

Metatrolling is for fags [nt] (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#8967530)

nt

DeDRMS? (5, Funny)

capz loc (752940) | more than 9 years ago | (#8967342)

What does DVD-Jon have against Dr. Richard M. Stallman? Is this the utility that reverses changes made by RMS-Lint [slashdot.org] ?

Re:DeDRMS? (1)

LostCluster (625375) | more than 9 years ago | (#8967365)

Is this the utility that reverses changes made by RMS-Lint?

Doubtful... seeing that project was an April Fool's Joke.

Uh... (0)

Anonymous Coward | more than 9 years ago | (#8967343)

I'm assuming this removes drm on Apple AAC files. What would be more useful is removing DRM on those damnable WMF files.

But this is pretty useful too. Means playing in linux is a possibility.

DeDRMS art... (2, Interesting)

Saeger (456549) | more than 9 years ago | (#8967349)

Looks like DeDRMS will be next up for free speech protection in the tradition of the DeCSS Gallery [cmu.edu] . I just love it when DRM control freaks get their global domination panties in a wad.

DeDRMS? I wrote a song about it. Want to hear it? Hear it goes... *da dum da dum*... slash asterisk bla bla asterisk slash... *da dum da dum*... Using System; *bah bum bah bum*...

--

Re:DeDRMS art... (-1, Troll)

Anonymous Coward | more than 9 years ago | (#8967501)

I just love it when basement dwelling open sores hippies run out of ramen noodles and have to ask there parents to go buy more in bulk from Samsclub.

Host it on Freenet? (3, Informative)

Anonymous Coward | more than 9 years ago | (#8967371)

Let's host this program on Freenet [sourceforge.net] , it is a project that make's the best use for what Freenet was made for.

Re:Host it on Freenet? (0, Troll)

Twirlip of the Mists (615030) | more than 9 years ago | (#8967474)

Let's host this program on Freenet, it is a project that make's the best use for what Freenet was made for.

Yes, great idea. Let's make sure that ideas like Freenet and the illegal piracy of music are inextricably linked in the mind of the public.

Dumbass.

Dilbert has something to say on this very subject: (5, Funny)

Realistic_Dragon (655151) | more than 9 years ago | (#8967375)

http://dilbert.com/comics/dilbert/archive/images/d ilbert2004042261455.jpg [dilbert.com]

A somewhat odd view... does anyone know which big music firm United Media (the Dilbert owners) is affiliated with?

Re:Dilbert has something to say on this very subje (4, Insightful)

CylanR77 (532552) | more than 9 years ago | (#8967462)

Who says that "Dilbert" has sold out? You? Just because the strip portrays a view of downloading content that you find disagreeable, doesn't mean that the RIAA's got Scott Adams in their pocket.

It could just be that the man believes that you ought to pay for what you use for entertainment, if the creator of that entertainment wants payment.

Re:Dilbert has something to say on this very subje (1)

Jonathan (5011) | more than 9 years ago | (#8967485)

It could just be that the man believes that you ought to pay for what you use for entertainment, if the creator of that entertainment wants payment.

Yes, remember that Adams is a man who sells content for a living -- you may think his model is flawed, and Creative Commons, etc. is the wave of the future, but there's no reason to assume that it's United Media's opinion rather than just Adams'

Re:Dilbert has something to say on this very subje (4, Insightful)

the_mad_poster (640772) | more than 9 years ago | (#8967522)

You know, I saw that this morning, and I thought it was actually a pretty good wrap up (well, for what a comic can do anyway) of several of the main positions in the debate.

First, there are all the people who go snag copies of music because they're too a) lazy, b) stupid, c) cheap, or d) all of the above to either go buy a copy or just not buy it at all (don't give me shit: you think it costs too much or has too much filler, blah blah blah... don't buy the fucking thing, don't be a little baby about it). Then, there's the theiving nature of all the execs in the industry ripping off the artists. There's also the problem of overproduction, and the mentality of major artists that they have to make money but no, no... they're still doing it for the art.. really.

I thought it was a very good bit of satire, all around.

blah (4, Informative)

Anonymous Coward | more than 9 years ago | (#8967379)

For the junk filer:
jhsvjklhajskdvhakjsdhvalkjsdhkajdhfasd hsfvhasdhvf asdf asdf asdf asdf sdf asdhvashdvasdf asdf asd sdf coipx vxjzlk sdhvaasd fasd fadfg fiobvxcoizv jcxoixz jxzc sdhvaf cmdrtaco sucks akljdkls asd asd fvx sdhvas gh hh hhf dd sdf sf sd
hdvash jk k fgh jgdvvcbbn cv c dhvc c vb fg hdrghdfg fg dg df g dsf
ashdva sdfgsgewrr benrtnrt er er revr dv shdva aioajdoi jfasdioj v;xjf kldasjkl;vasj sdhva sjkdfsdkvn alkn lkan alksnsdflk nsfnvlad dhvahsdva aisovaiouvoivoiua ioua auao iuasi us shdva asivoa jvhbusa ui hiuahsiuhfsa ha ahsdjkfahkdj lfhalksjdfhalk askjda
vhasdvhasdjhvaksjdhva a kjas lkjdakljf svhasdhvaskjhvlaskjdvhas a kljs djklakslj af
asvhajkshvjkshas dhasdjvkhasdv akjdfjadf asds s d fsd fsad fads asdfas asdf asdf sdfs vxcvxcvzxcvx ss dfsdxvc dfa bioub oiu zklxcvx nsm,m,fns,m
sdfas ikj oixj movnxmcvnxcvo sdoifjs dfsddafgdfg kamlxcvbjio zkcnvzlk nxclk xcivx as df sdf asdf asd vi xoizjvzcvn socso s asd addfsdfahtgh fghdfgh df gd d

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

class M4PStream
{
private Rijndael alg;

private BinaryReader br;
private BinaryWriter bw;
private byte [] sbuffer;

private string AtomDRMS = "drms";
private string AtomMP4A = "mp4a";
private string AtomSINF = "sinf";
private string AtomUSER = "user";
private string AtomKEY = "key ";
private string AtomIVIV = "iviv";
private string AtomNAME = "name";
private string AtomPRIV = "priv";
private string AtomSTSZ = "stsz";
private string AtomMDAT = "mdat";

public M4PStream( FileStream fs )
{
br = new BinaryReader( fs );
bw = new BinaryWriter( fs );
sbuffer = br.ReadBytes( Convert.ToInt32( fs.Length ) );

alg = Rijndael.Create();
alg.Mode = CipherMode.CBC;
alg.Padding = PaddingMode.None;
}

byte [] NetToHost( byte [] Input, int Pos, int Count )
{
if( BitConverter.IsLittleEndian )
{
for( int i = 0; i < Count; i++ )
{
Array.Reverse( Input, Pos + (i * 4), 4 );
}
}

return Input;
}

int GetAtomPos( string Atom )
{
byte [] Bytes = Encoding.ASCII.GetBytes( Atom );

for( int i = 0; i < (sbuffer.Length - 3); i++ )
{
if( sbuffer[ i + 0 ] == Bytes[ 0 ] &&
sbuffer[ i + 1 ] == Bytes[ 1 ] &&
sbuffer[ i + 2 ] == Bytes[ 2 ] &&
sbuffer[ i + 3 ] == Bytes[ 3 ] )
{
return i;
}
}

throw new Exception( String.Format( "Atom '{0}' not found", Atom ) );
}

uint GetAtomSize( int Pos )
{
byte [] Bytes = new byte[ 4 ];
Buffer.BlockCopy( sbuffer, Pos - 4, Bytes, 0, 4 );
return BitConverter.ToUInt32( NetToHost( Bytes, 0, 1 ), 0 );
}

byte [] GetAtomData( int Pos, bool bNetToHost )
{
uint Size;
byte [] Bytes;

Size = GetAtomSize( Pos );
Bytes = new byte[ Size - 8 ];
Buffer.BlockCopy( sbuffer, Pos + 4, Bytes, 0, Bytes.Length );

return bNetToHost ? NetToHost( Bytes, 0, Bytes.Length / 4 ) : Bytes;
}

public void Decrypt( byte [] CipherText, int Offset, int Count,
byte [] Key, byte [] IV )
{
MemoryStream ms = new MemoryStream();

ICryptoTransform ct = alg.CreateDecryptor( Key, IV );
CryptoStream cs = new CryptoStream( ms, ct, CryptoStreamMode.Write );
cs.Write( CipherText, Offset, (Count / 16) * 16 );
cs.Close();

ms.ToArray().CopyTo( CipherText, Offset );
}

public byte [] GetUserKey( uint UserID, uint KeyID )
{
byte [] UserKey;
BinaryReader bruk;

string strHome =
Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData );
bool bUnix = Environment.OSVersion.ToString().IndexOf( "Unix" ) != -1;
string strFile = String.Format( "{0}{1}{2}drms{3}{4:X8}.{5:D3}", strHome,
Path.DirectorySeparatorChar, bUnix ? "." : "",
Path.DirectorySeparatorChar, UserID, KeyID );

bruk = new BinaryReader( File.OpenRead( strFile ) );
UserKey = bruk.ReadBytes( Convert.ToInt32( bruk.BaseStream.Length ) );
bruk.Close();

return UserKey;
}

public int [] GetSampleTable()
{
byte [] adSTSZ = GetAtomData( GetAtomPos( AtomSTSZ ), true );
int SampleCount = BitConverter.ToInt32( adSTSZ, 8 );
int [] SampleTable = new int[ SampleCount ];

for( int i = 0; i < SampleCount; i++ )
{
SampleTable[ i ] = BitConverter.ToInt32( adSTSZ, 12 + (i * 4) );
}

return SampleTable;
}

public void DeDRMS()
{
byte [] IV = new byte[ 16 ];
byte [] Key = new byte[ 16 ];

int apDRMS = GetAtomPos( AtomDRMS );
int apSINF = GetAtomPos( AtomSINF );
int apMDAT = GetAtomPos( AtomMDAT );

int [] SampleTable = GetSampleTable();

byte [] adUSER = GetAtomData( GetAtomPos( AtomUSER ), true );
byte [] adKEY = GetAtomData( GetAtomPos( AtomKEY ), true );
byte [] adIVIV = GetAtomData( GetAtomPos( AtomIVIV ), false );
byte [] adNAME = GetAtomData( GetAtomPos( AtomNAME ), false );
byte [] adPRIV = GetAtomData( GetAtomPos( AtomPRIV ), false );

uint UserID = BitConverter.ToUInt32( adUSER, 0 );
uint KeyID = BitConverter.ToUInt32( adKEY, 0 );
string strName = Encoding.ASCII.GetString( adNAME );
byte [] UserKey = GetUserKey( UserID, KeyID );

MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
MD5.TransformBlock( adNAME, 0, strName.IndexOf( '\0' ), adNAME, 0 );
MD5.TransformFinalBlock( adIVIV, 0, adIVIV.Length );

Decrypt( adPRIV, 0, adPRIV.Length, UserKey, MD5.Hash );

if( Encoding.ASCII.GetString( adPRIV, 0, 4 ) != "itun" )
{
throw new Exception( "Decryption of 'priv' atom failed" );
}

Buffer.BlockCopy( adPRIV, 24, Key, 0, Key.Length );
Buffer.BlockCopy( adPRIV, 48, IV, 0, IV.Length );

for( int i = 0, Pos = apMDAT + 4;
i < SampleTable.Length;
Pos += SampleTable[ i ], i++ )
{
Decrypt( sbuffer, Pos, SampleTable[ i ], Key, IV );
}

Encoding.ASCII.GetBytes( AtomMP4A ).CopyTo( sbuffer, apDRMS );
Encoding.ASCII.GetBytes( AtomSINF.ToUpper() ).CopyTo( sbuffer, apSINF );

bw.Seek( 0, SeekOrigin.Begin );
bw.Write( sbuffer );
}
}

class DeDRMS
{
public static void Main( string [] Args )
{
FileStream fs;
M4PStream m4p;

if( Args.Length != 1 )
{
Console.WriteLine( "Usage: DeDRMS file.m4p" );
return;
}

try
{
fs = new FileStream( Args[ 0 ], FileMode.Open,
FileAccess.Read | FileAccess.Write );
m4p = new M4PStream( fs );
m4p.DeDRMS();
fs.Close();
}
catch( Exception e )
{
Console.WriteLine( "Exception: {0}", e.Message );
return;
}
}
}

Re:blah (0)

Anonymous Coward | more than 9 years ago | (#8967518)

Redundant? This was the first post of the code, you crack-addled cockgobbler.

This boy's mother... (1, Flamebait)

FreeLinux (555387) | more than 9 years ago | (#8967382)

should have taught him that: When you play with fire, you get your fingers burned.

So far he has won and avoided jail. But, if he continues to push his luck, like this, some corporation is going to bury him.

Bitch Bitch Bitch (2, Flamebait)

Famatra (669740) | more than 9 years ago | (#8967421)

This guy is a hero for standing up to coroprations, unlike you who can only bitch on Slashdot about how other people get all the glory and your stuck there picking your ass all day long.

If you are really concerned about him going to jail, then do something about it rather then bitch about *him* doing *his* part.

Re:Bitch Bitch Bitch (0)

Anonymous Coward | more than 9 years ago | (#8967460)

You have a most peculiar thought process. Oh, that's right this is Slashdot. Never mind.

Re:This boy's mother... (0)

Anonymous Coward | more than 9 years ago | (#8967519)

His mom probably taught him that, just like your mom taught you that.. but his mom taught him another lesson: don't give up

What he is doing is the right thing, if some company buries him, at least he died trying and didn't give up

Re:This boy's mother... (1)

pla (258480) | more than 9 years ago | (#8967523)

So far he has won and avoided jail. But, if he continues to push his luck, like this, some corporation is going to bury him.

Why? It seems to me like he has an almost uniquely good position from which to produce tools like this - Namely, the courts found let him off for an almost identical tool.

Legal systems have a lot of problems, but they hate admitting errors; in this case, that stubbornness works in our favor, for a change. Finding him guilty (or in favor of industry-group-X in a civil suit) would require admitting they made a mistake in the last round. That simply will not happen.


Also, no one else seems to have pointed this out, but Jon didn't get inspired by PlayFair; rather, PlayFair based its work on Jon's own contribution to VideoLan, which had the ability to crack FairPlay a few month ago.

nothing to see here folks: (4, Funny)

ejaw5 (570071) | more than 9 years ago | (#8967387)

Drms = ~0.707(D)

Re:nothing to see here folks: (0)

Anonymous Coward | more than 9 years ago | (#8967399)

Ouch--but I guess I should have seen that coming :).

Re:nothing to see here folks: (0)

Anonymous Coward | more than 9 years ago | (#8967535)

I have to take issue with this.
You assume that D is sinusoidal, which was never given.

We don't even know if D is periodic.

Therefore:
D=sqrt((Integ -inf -> inf [D^2])/(2*inf)) ;)

I'm obviously not understanding something here.. (4, Interesting)

Sarth (765570) | more than 9 years ago | (#8967426)

DVD Jon, of obvious fame, is hailed as a hero for letting your average Joe (or Jon), go out to their local store, and buy a DVD and play it on their linux boxen, right?

I can sorta understand that, as far as I know, DVDs don't state at the time of purchase that you have to have X or Y, just that you have to have the disc. Fine.

So, when you buy something from the iTMS, it STATES that you have to have X or Y. It clearly states the restrictions that you agree to. This is not a hard concept, so why is it felt that a technological solution is required to 'fix' it?

Something that just struck me... DVD Jon isn't in the Americas, but iTMS isn't selling to those outside (maybe Canada, I'd have to check). So ... what part of this equation am I missing?

Re:I'm obviously not understanding something here. (0)

Anonymous Coward | more than 9 years ago | (#8967490)

How this kind of restrictions can be legal, even in the US?

Would be ok for Microsoft to disallow any other browser than IE to be used with Windows? How about dissallowing usage of any other media players beside MS media player?

Re:I'm obviously not understanding something here. (5, Insightful)

Anonymous Coward | more than 9 years ago | (#8967547)

I think that basically what you're missing is that 'they' can't tell you what you can and can't do with their products after you purchase them.

Replace 'they' with any manufacturer.

I could buy an apple that said "not for use as food." And I could then proceed to eat that apple - they have no say in what I do with it. If, for some reason, I should injure myself by eating that apple, they warned me and wouldn't be held liable. That's it. Laws come into play when I throw that apple and kill someone with it. Or try to sell it, claiming it is a pair.

Now, the argument here is that it is illegal to decrypt the 'protections' a company puts on their music. And it is here where it gets smelly realy, really quickly.

Sure, it might be the law, but it is written to be a pretty shitty law. (DMCA, etc). No, that's not an excuse to break the law, but it is one to cause sympathy for someone who does. There are very legitimate reasons for breaking the DRM on these files. There are also very illegitimate ones. Piracy comes to mind. You know, real piracy. Not some 14 year old girl that wants to give her friend some songs, but the people who mass produce and sell these songs on the black market.

The black market being, by the way, about every outdoor market I've been to in Asia or South America.

And you're right. DVD Jon shouldn't fall under any US laws. But the RIAA et al. will surely find a way to change that. Bastards.

Information wants to be free! (0, Offtopic)

Anonymous Coward | more than 9 years ago | (#8967427)

begin-base64 644 fp2
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK ioqKi oqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi oqKioqCiAqIERlRFJNUy5jczogRG VEUk1TIDAuMQogKioqKioqKioq
KioqKioqKioqKioqKioqKi oqKioqKioqKioqKioqKioqKioqKi oqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICogQ2 9weXJpZ2h0IChDKSAyMDA0IEpvbi BMZWNoIEpvaGFuc2VuIDxqb24t
dmxAbmFub2NyZXcubmV0Pg ogKgogKiBUaGlzIHByb2dyYW0gaX MgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dG UgaXQgYW5kL29yIG1vZGlmeQogKi BpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcm FsIFB1YmxpYyBMaWNlbnNlIGFzIH B1Ymxpc2hlZCBieQogKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3 VuZGF0aW9uOyBlaXRoZXIgdmVyc2 lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvcgogKiAoYXQgeW91ci BvcHRpb24pIGFueSBsYXRlciB2ZX JzaW9uLgogKgogKiBUaGlzIHBy
b2dyYW0gaXMgZGlzdHJpYn V0ZWQgaW4gdGhlIGhvcGUgdGhhdC BpdCB3aWxsIGJlIHVzZWZ1bCwK
ICogYnV0IFdJVEhPVVQgQU 5ZIFdBUlJBTlRZOyB3aXRob3V0IG V2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKICogTUVSQ0 hBTlRBQklMSVRZIG9yIEZJVE5FU1 MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZQ ogKiBHTlUgR2VuZXJhbCBQdWJsaW MgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgogKgogKiBZb3 Ugc2hvdWxkIGhhdmUgcmVjZWl2ZW QgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTG ljZW5zZQogKiBhbG9uZyB3aXRoIH RoaXMgcHJvZ3JhbTsgaWYgbm90
LCB3cml0ZSB0byB0aGUgRn JlZSBTb2Z0d2FyZQogKiBGb3VuZG F0aW9uLCBJbmMuLCA1OSBUZW1w
bGUgUGxhY2UgLSBTdWl0ZS AzMzAsIEJvc3RvbiwgTUEgIDAyMT ExLCBVU0EuCiAqKioqKioqKioq
KioqKioqKioqKioqKioqKi oqKioqKioqKioqKioqKioqKioqKi oqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KCnVzaW 5nIFN5c3RlbTsKdXNpbmcgU3lzdG VtLklPOwp1c2luZyBTeXN0ZW0u
VGV4dDsKdXNpbmcgU3lzdG VtLlNlY3VyaXR5LkNyeXB0b2dyYX BoeTsKCmNsYXNzIE00UFN0cmVh
bQp7CiAgICBwcml2YXRlIF Jpam5kYWVsIGFsZzsKCiAgICBwcm l2YXRlIEJpbmFyeVJlYWRlciBi
cjsKICAgIHByaXZhdGUgQm luYXJ5V3JpdGVyIGJ3OwogICAgcH JpdmF0ZSBieXRlIFtdIHNidWZm
ZXI7CgogICAgcHJpdmF0ZS BzdHJpbmcgQXRvbURSTVMgPSAiZH JtcyI7CiAgICBwcml2YXRlIHN0
cmluZyBBdG9tTVA0QSA9IC JtcDRhIjsKICAgIHByaXZhdGUgc3 RyaW5nIEF0b21TSU5GID0gInNp
bmYiOwogICAgcHJpdmF0ZS BzdHJpbmcgQXRvbVVTRVIgPSAidX NlciI7CiAgICBwcml2YXRlIHN0
cmluZyBBdG9tS0VZICA9IC JrZXkgIjsKICAgIHByaXZhdGUgc3 RyaW5nIEF0b21JVklWID0gIml2
aXYiOwogICAgcHJpdmF0ZS BzdHJpbmcgQXRvbU5BTUUgPSAibm FtZSI7CiAgICBwcml2YXRlIHN0
cmluZyBBdG9tUFJJViA9IC Jwcml2IjsKICAgIHByaXZhdGUgc3 RyaW5nIEF0b21TVFNaID0gInN0
c3oiOwogICAgcHJpdmF0ZS BzdHJpbmcgQXRvbU1EQVQgPSAibW RhdCI7CgogICAgcHVibGljIE00
UFN0cmVhbSggRmlsZVN0cm VhbSBmcyApCiAgICB7CiAgICAgIC AgYnIgPSBuZXcgQmluYXJ5UmVh
ZGVyKCBmcyApOwogICAgIC AgIGJ3ID0gbmV3IEJpbmFyeVdyaX RlciggZnMgKTsKICAgICAgICBz
YnVmZmVyID0gYnIuUmVhZE J5dGVzKCBDb252ZXJ0LlRvSW50Mz IoIGZzLkxlbmd0aCApICk7Cgog
ICAgICAgIGFsZyA9IFJpam 5kYWVsLkNyZWF0ZSgpOwogICAgIC AgIGFsZy5Nb2RlID0gQ2lwaGVy
TW9kZS5DQkM7CiAgICAgIC AgYWxnLlBhZGRpbmcgPSBQYWRkaW 5nTW9kZS5Ob25lOwogICAgfQoK
ICAgIGJ5dGUgW10gTmV0VG 9Ib3N0KCBieXRlIFtdIElucHV0LC BpbnQgUG9zLCBpbnQgQ291bnQg
KQogICAgewogICAgICAgIG lmKCBCaXRDb252ZXJ0ZXIuSXNMaX R0bGVFbmRpYW4gKQogICAgICAg
IHsKICAgICAgICAgICAgZm 9yKCBpbnQgaSA9IDA7IGkgPCBDb3 VudDsgaSsrICkKICAgICAgICAg
ICAgewogICAgICAgICAgIC AgICAgQXJyYXkuUmV2ZXJzZSggSW 5wdXQsIFBvcyArIChpICogNCks
IDQgKTsKICAgICAgICAgIC AgfQogICAgICAgIH0KCiAgICAgIC AgcmV0dXJuIElucHV0OwogICAg
fQoKICAgIGludCBHZXRBdG 9tUG9zKCBzdHJpbmcgQXRvbSApCi AgICB7CiAgICAgICAgYnl0ZSBb
XSBCeXRlcyA9IEVuY29kaW 5nLkFTQ0lJLkdldEJ5dGVzKCBBdG 9tICk7CgogICAgICAgIGZvcigg
aW50IGkgPSAwOyBpIDwgKH NidWZmZXIuTGVuZ3RoIC0gMyk7IG krKyApCiAgICAgICAgewogICAg
ICAgICAgICBpZiggc2J1Zm ZlclsgaSArIDAgXSA9PSBCeXRlc1 sgMCBdICYmCiAgICAgICAgICAg
ICAgICBzYnVmZmVyWyBpIC sgMSBdID09IEJ5dGVzWyAxIF0gJi YKICAgICAgICAgICAgICAgIHNi
dWZmZXJbIGkgKyAyIF0gPT 0gQnl0ZXNbIDIgXSAmJgogICAgIC AgICAgICAgICAgc2J1ZmZlclsg
aSArIDMgXSA9PSBCeXRlc1 sgMyBdICkKICAgICAgICAgICAgew ogICAgICAgICAgICAgICAgcmV0
dXJuIGk7CiAgICAgICAgIC AgIH0KICAgICAgICB9CgogICAgIC AgIHRocm93IG5ldyBFeGNlcHRp
b24oIFN0cmluZy5Gb3JtYX QoICJBdG9tICd7MH0nIG5vdCBmb3 VuZCIsIEF0b20gKSApOwogICAg
fQoKICAgIHVpbnQgR2V0QX RvbVNpemUoIGludCBQb3MgKQogIC AgewogICAgICAgIGJ5dGUgW10g
Qnl0ZXMgPSBuZXcgYnl0ZV sgNCBdOwogICAgICAgIEJ1ZmZlci 5CbG9ja0NvcHkoIHNidWZmZXIs
IFBvcyAtIDQsIEJ5dGVzLC AwLCA0ICk7CiAgICAgICAgcmV0dX JuIEJpdENvbnZlcnRlci5Ub1VJ
bnQzMiggTmV0VG9Ib3N0KC BCeXRlcywgMCwgMSApLCAwICk7Ci AgICB9CgogICAgYnl0ZSBbXSBH
ZXRBdG9tRGF0YSggaW50IF BvcywgYm9vbCBiTmV0VG9Ib3N0IC kKICAgIHsKICAgICAgICB1aW50
IFNpemU7CiAgICAgICAgYn l0ZSBbXSBCeXRlczsKCiAgICAgIC AgU2l6ZSA9IEdldEF0b21TaXpl
KCBQb3MgKTsKICAgICAgIC BCeXRlcyA9IG5ldyBieXRlWyBTaX plIC0gOCBdOwogICAgICAgIEJ1
ZmZlci5CbG9ja0NvcHkoIH NidWZmZXIsIFBvcyArIDQsIEJ5dG VzLCAwLCBCeXRlcy5MZW5ndGgg
KTsKCiAgICAgICAgcmV0dX JuIGJOZXRUb0hvc3QgPyBOZXRUb0 hvc3QoIEJ5dGVzLCAwLCBCeXRl
cy5MZW5ndGggLyA0ICkgOi BCeXRlczsKICAgIH0KCiAgICBwdW JsaWMgdm9pZCBEZWNyeXB0KCBi
eXRlIFtdIENpcGhlclRleH QsIGludCBPZmZzZXQsIGludCBDb3 VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ5dGUgW1 0gS2V5LCBieXRlIFtdIElWICkKIC AgIHsKICAgICAgICBNZW1vcnlT
dHJlYW0gbXMgPSBuZXcgTW Vtb3J5U3RyZWFtKCk7CgogICAgIC AgIElDcnlwdG9UcmFuc2Zvcm0g
Y3QgPSBhbGcuQ3JlYXRlRG VjcnlwdG9yKCBLZXksIElWICk7Ci AgICAgICAgQ3J5cHRvU3RyZWFt
IGNzID0gbmV3IENyeXB0b1 N0cmVhbSggbXMsIGN0LCBDcnlwdG 9TdHJlYW1Nb2RlLldyaXRlICk7
CiAgICAgICAgY3MuV3JpdG UoIENpcGhlclRleHQsIE9mZnNldC wgKENvdW50IC8gMTYpICogMTYg
KTsKICAgICAgICBjcy5DbG 9zZSgpOwoKICAgICAgICBtcy5Ub0 FycmF5KCkuQ29weVRvKCBDaXBo
ZXJUZXh0LCBPZmZzZXQgKT sKICAgIH0KCiAgICBwdWJsaWMgYn l0ZSBbXSBHZXRVc2VyS2V5KCB1
aW50IFVzZXJJRCwgdWludC BLZXlJRCApCiAgICB7CiAgICAgIC AgYnl0ZSBbXSBVc2VyS2V5Owog
ICAgICAgIEJpbmFyeVJlYW RlciBicnVrOwoKICAgICAgICBzdH Jpbmcgc3RySG9tZSA9CiAgICAg
ICAgICAgIEVudmlyb25tZW 50LkdldEZvbGRlclBhdGgoIEVudm lyb25tZW50LlNwZWNpYWxGb2xk
ZXIuQXBwbGljYXRpb25EYX RhICk7CiAgICAgICAgYm9vbCBiVW 5peCA9IEVudmlyb25tZW50Lk9T
VmVyc2lvbi5Ub1N0cmluZy gpLkluZGV4T2YoICJVbml4IiApIC E9IC0xOwogICAgICAgIHN0cmlu
ZyBzdHJGaWxlID0gU3RyaW 5nLkZvcm1hdCggInswfXsxfXsyfW RybXN7M317NDpYOH0uezU6RDN9
Iiwgc3RySG9tZSwKICAgIC AgICAgICAgICAgICAgICAgICAgIC AgICAgICAgICAgICAgIFBhdGgu
RGlyZWN0b3J5U2VwYXJhdG 9yQ2hhciwgYlVuaXggPyAiLiIgOi AiIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC AgICAgICAgIFBhdGguRGlyZWN0b3 J5U2VwYXJhdG9yQ2hhciwgVXNl
cklELCBLZXlJRCApOwoKIC AgICAgICBicnVrID0gbmV3IEJpbm FyeVJlYWRlciggRmlsZS5PcGVu
UmVhZCggc3RyRmlsZSApIC k7CiAgICAgICAgVXNlcktleSA9IG JydWsuUmVhZEJ5dGVzKCBDb252
ZXJ0LlRvSW50MzIoIGJydW suQmFzZVN0cmVhbS5MZW5ndGggKS ApOwogICAgICAgIGJydWsuQ2xv
c2UoKTsKCiAgICAgICAgcm V0dXJuIFVzZXJLZXk7CiAgICB9Cg ogICAgcHVibGljIGludCBbXSBH
ZXRTYW1wbGVUYWJsZSgpCi AgICB7CiAgICAgICAgYnl0ZSBbXS BhZFNUU1ogPSBHZXRBdG9tRGF0
YSggR2V0QXRvbVBvcyggQX RvbVNUU1ogKSwgdHJ1ZSApOwogIC AgICAgIGludCBTYW1wbGVDb3Vu
dCA9IEJpdENvbnZlcnRlci 5Ub0ludDMyKCBhZFNUU1osIDggKT sKICAgICAgICBpbnQgW10gU2Ft
cGxlVGFibGUgPSBuZXcgaW 50WyBTYW1wbGVDb3VudCBdOwoKIC AgICAgICBmb3IoIGludCBpID0g
MDsgaSA8IFNhbXBsZUNvdW 50OyBpKysgKQogICAgICAgIHsKIC AgICAgICAgICAgU2FtcGxlVGFi
bGVbIGkgXSA9IEJpdENvbn ZlcnRlci5Ub0ludDMyKCBhZFNUU1 osIDEyICsgKGkgKiA0KSApOwog
ICAgICAgIH0KCiAgICAgIC AgcmV0dXJuIFNhbXBsZVRhYmxlOw ogICAgfQoKICAgIHB1YmxpYyB2
b2lkIERlRFJNUygpCiAgIC B7CiAgICAgICAgYnl0ZSBbXSBJVi A9IG5ldyBieXRlWyAxNiBdOwog
ICAgICAgIGJ5dGUgW10gS2 V5ID0gbmV3IGJ5dGVbIDE2IF07Cg ogICAgICAgIGludCBhcERSTVMg
PSBHZXRBdG9tUG9zKCBBdG 9tRFJNUyApOwogICAgICAgIGludC BhcFNJTkYgPSBHZXRBdG9tUG9z
KCBBdG9tU0lORiApOwogIC AgICAgIGludCBhcE1EQVQgPSBHZX RBdG9tUG9zKCBBdG9tTURBVCAp
OwoKICAgICAgICBpbnQgW1 0gU2FtcGxlVGFibGUgPSBHZXRTYW 1wbGVUYWJsZSgpOwoKICAgICAg
ICBieXRlIFtdIGFkVVNFUi A9IEdldEF0b21EYXRhKCBHZXRBdG 9tUG9zKCBBdG9tVVNFUiApLCB0
cnVlICk7CiAgICAgICAgYn l0ZSBbXSBhZEtFWSA9IEdldEF0b2 1EYXRhKCBHZXRBdG9tUG9zKCBB
dG9tS0VZICksIHRydWUgKT sKICAgICAgICBieXRlIFtdIGFkSV ZJViA9IEdldEF0b21EYXRhKCBH
ZXRBdG9tUG9zKCBBdG9tSV ZJViApLCBmYWxzZSApOwogICAgIC AgIGJ5dGUgW10gYWROQU1FID0g
R2V0QXRvbURhdGEoIEdldE F0b21Qb3MoIEF0b21OQU1FICksIG ZhbHNlICk7CiAgICAgICAgYnl0
ZSBbXSBhZFBSSVYgPSBHZX RBdG9tRGF0YSggR2V0QXRvbVBvcy ggQXRvbVBSSVYgKSwgZmFsc2Ug
KTsKCiAgICAgICAgdWludC BVc2VySUQgPSBCaXRDb252ZXJ0ZX IuVG9VSW50MzIoIGFkVVNFUiwg
MCApOwogICAgICAgIHVpbn QgS2V5SUQgPSBCaXRDb252ZXJ0ZX IuVG9VSW50MzIoIGFkS0VZLCAw
ICk7CiAgICAgICAgc3RyaW 5nIHN0ck5hbWUgPSBFbmNvZGluZy 5BU0NJSS5HZXRTdHJpbmcoIGFk
TkFNRSApOwogICAgICAgIG J5dGUgW10gVXNlcktleSA9IEdldF VzZXJLZXkoIFVzZXJJRCwgS2V5
SUQgKTsKCiAgICAgICAgTU Q1Q3J5cHRvU2VydmljZVByb3ZpZG VyIE1ENSA9IG5ldyBNRDVDcnlw
dG9TZXJ2aWNlUHJvdmlkZX IoKTsKICAgICAgICBNRDUuVHJhbn Nmb3JtQmxvY2soIGFkTkFNRSwg
MCwgc3RyTmFtZS5JbmRleE 9mKCAnXDAnICksIGFkTkFNRSwgMC ApOwogICAgICAgIE1ENS5UcmFu
c2Zvcm1GaW5hbEJsb2NrKC BhZElWSVYsIDAsIGFkSVZJVi5MZW 5ndGggKTsKCiAgICAgICAgRGVj
cnlwdCggYWRQUklWLCAwLC BhZFBSSVYuTGVuZ3RoLCBVc2VyS2 V5LCBNRDUuSGFzaCApOwoKICAg
ICAgICBpZiggRW5jb2Rpbm cuQVNDSUkuR2V0U3RyaW5nKCBhZF BSSVYsIDAsIDQgKSAhPSAiaXR1
biIgKQogICAgICAgIHsKIC AgICAgICAgICAgdGhyb3cgbmV3IE V4Y2VwdGlvbiggIkRlY3J5cHRp
b24gb2YgJ3ByaXYnIGF0b2 0gZmFpbGVkIiApOwogICAgICAgIH 0KCiAgICAgICAgQnVmZmVyLkJs
b2NrQ29weSggYWRQUklWLC AyNCwgS2V5LCAwLCBLZXkuTGVuZ3 RoICk7CiAgICAgICAgQnVmZmVy
LkJsb2NrQ29weSggYWRQUk lWLCA0OCwgSVYsIDAsIElWLkxlbm d0aCApOwoKICAgICAgICBmb3Io
IGludCBpID0gMCwgUG9zID 0gYXBNREFUICsgNDsKICAgICAgIC AgICAgIGkgPCBTYW1wbGVUYWJs
ZS5MZW5ndGg7CiAgICAgIC AgICAgICBQb3MgKz0gU2FtcGxlVG FibGVbIGkgXSwgaSsrICkKICAg
ICAgICB7CiAgICAgICAgIC AgIERlY3J5cHQoIHNidWZmZXIsIF BvcywgU2FtcGxlVGFibGVbIGkg
XSwgS2V5LCBJViApOwogIC AgICAgIH0KCiAgICAgICAgRW5jb2 RpbmcuQVNDSUkuR2V0Qnl0ZXMo
IEF0b21NUDRBICkuQ29weV RvKCBzYnVmZmVyLCBhcERSTVMgKT sKICAgICAgICBFbmNvZGluZy5B
U0NJSS5HZXRCeXRlcyggQX RvbVNJTkYuVG9VcHBlcigpICkuQ2 9weVRvKCBzYnVmZmVyLCBhcFNJ
TkYgKTsKCiAgICAgICAgYn cuU2VlayggMCwgU2Vla09yaWdpbi 5CZWdpbiApOwogICAgICAgIGJ3
LldyaXRlKCBzYnVmZmVyIC k7CiAgICB9Cn0KCmNsYXNzIERlRF JNUwp7CiAgICBwdWJsaWMgc3Rh
dGljIHZvaWQgTWFpbiggc3 RyaW5nIFtdIEFyZ3MgKQogICAgew ogICAgICAgIEZpbGVTdHJlYW0g
ZnM7CiAgICAgICAgTTRQU3 RyZWFtIG00cDsKCiAgICAgICAgaW YoIEFyZ3MuTGVuZ3RoICE9IDEg
KQogICAgICAgIHsKICAgIC AgICAgICAgQ29uc29sZS5Xcml0ZU xpbmUoICJVc2FnZTogRGVEUk1T
IGZpbGUubTRwIiApOwogIC AgICAgICAgICByZXR1cm47CiAgIC AgICAgfQoKICAgICAgICB0cnkK
ICAgICAgICB7CiAgICAgIC AgICAgIGZzID0gbmV3IEZpbGVTdH JlYW0oIEFyZ3NbIDAgXSwgRmls
ZU1vZGUuT3BlbiwKICAgIC AgICAgICAgICAgICAgICAgICAgIC AgICAgICAgRmlsZUFjY2Vzcy5S
ZWFkIHwgRmlsZUFjY2Vzcy 5Xcml0ZSApOwogICAgICAgICAgIC BtNHAgPSBuZXcgTTRQU3RyZWFt
KCBmcyApOwogICAgICAgIC AgICBtNHAuRGVEUk1TKCk7CiAgIC AgICAgICAgIGZzLkNsb3NlKCk7
CiAgICAgICAgfQogICAgIC AgIGNhdGNoKCBFeGNlcHRpb24gZS ApCiAgICAgICAgewogICAgICAg
ICAgICBDb25zb2xlLldyaX RlTGluZSggIkV4Y2VwdGlvbjogez B9IiwgZS5NZXNzYWdlICk7CiAg
ICAgICAgICAgIHJldHVybj sKICAgICAgICB9CiAgICB9Cn0K
====

Inevitable (5, Insightful)

ajs318 (655362) | more than 9 years ago | (#8967433)

If you attempt the impossible -- and make no mistake, copy-prevention is physically impossible, not just difficult -- then you will fail. You might be able to fool people into thinking you have succeeded, for a short while; but, sooner or later, your lies will catch up with you. All copy-prevention technology is pure snake oil, and can never work. It will always be defeated. Once a single CPT-free version has been created, then every penny anyone ever invested in that particular copy-prevention technology is wasted.

Why people are afraid of lawsuits??? (0)

Anonymous Coward | more than 9 years ago | (#8967438)

If someone will sue Jon because of this, judge will just throw the case out based on previous ruling in the similar case.

Both DeCCS and DeDRMS are about accessing the content which you have purchased.

C#, Mono, and making it do something (0, Offtopic)

rowanxmas (569908) | more than 9 years ago | (#8967440)

So I am mildly interested in C#, being a Java developer. I primarily use Linux, but I do some Windows at home. Can someone tell me how to get mono working on either platform?

I would really like to port my Java stuff to GTK#, since it might be faster, but whenever I try to install mono I get errors like: MSVR70.dll was not found

and on Linux it seems to just be dependency hell, since we are still on RH9 at work.
Well, any tutorial links( my googling has not turned up anything useful...) will be much appreciated, then I can start DeDRMSing some stuff.

Re:C#, Mono, and making it do something (0)

Anonymous Coward | more than 9 years ago | (#8967464)

My experience tells me: It's probably easier to just port it to Java. It can be done in an hour or two :)

Re:C#, Mono, and making it do something (0)

Anonymous Coward | more than 9 years ago | (#8967492)

Oh, and when you're done -- post the code (base64 or whatever) here :P

use english (2, Funny)

grusapa (756151) | more than 9 years ago | (#8967442)

BinaryReader bruk; bruk = new BinaryReader( File.OpenRead( strFile ) ); UserKey = bruk.ReadBytes( Convert.ToInt32( bruk.BaseStream.Length ) ); bruk.Close(); "bruk" http://66.70.46.80:5555/find?lang=no&dict=NOUKMX&w ord=bruk Jon det er litt letter for engelske folk å forstå koden din når den er på engelsk da.. Jeg vet ikke om det er et c# ord eller, om det er en trykkleif.

pretty cool... (3, Insightful)

cybin (141668) | more than 9 years ago | (#8967471)

this is pretty cool, and a technical achievement... but why bother stripping the DRM from your m4p files? just make a functional iTunes clone that doesn't care about the DRM :)

or maybe i'm wrong... is it up to the player software to enforce the DRM? i thought i read somewhere that the iPod just ignores it...

Re:pretty cool... (1, Flamebait)

base3 (539820) | more than 9 years ago | (#8967488)

The iPod contains the encryption keys when the DRMd files are copied to it with iTunes.

Neat (3, Funny)

dtfinch (661405) | more than 9 years ago | (#8967543)

The code looks so simple, as though .Net did all the work for him. Does this make .Net illegal under the DMCA?
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account

Loading...