Live data from Hacker News

Defeating a 40-year-old copy protection dongle

dmitrybrant.com

261–270 of 302 posts

Re: Defeating a 40-year-old copy protection dongle

#261

Earlier quoted context omitted.

> from a business point of view, is especially important in a field where regulations do not change very fast, because users have little incentive to upgrade. Why should users upgrade or keep paying you when they already bought what they need and don't need anything else?

Because 1. Physical dongle tends to break, and when it does, they expect us to give them replacing parts 2. They do expect bug fixes-- especially calculation bug fixes-- as the bugs are discovered. It's hard to leave their production critical apps broken like that once you know that the bugs can cause monetary or even life loss.

If my car’s brakes have a design flaw and don’t stop my car reliably, I don’t expect to have to keep paying for my car to get them fixed. The manufacturer’s warranty covers that, and bugs in your software fall into the same bucket.

Re: Defeating a 40-year-old copy protection dongle

#262

Earlier quoted context omitted.

back in the mid to late 90s, I got a trial for compuserve that was a free 2 month trial. I liked it as as they provided dialup PPP access so was able to use it as full time internet access. It wasn't quite "2 months" of access though. It was 1500 hours of access (which in practice > 24*62). However, their usage accounting software wasn't great. I had it setup to reconnect if the connection dropped, and they didn't do…

Heh there was some ad supported dial up Internet I found. you were supposed to download their browser and it'd dial in and work normal enough. I noticed it created a windows dial up connection. When you launched the browser the login info worked on this. I could just dial their server and save the username and password and use any browser or game normally.

Was this NetZero? I kind of recall their CDs would do something similar, launch an Ad supported version of Netscape--but if you just copied the Dial-Up connection it made, you could recreate it without the need for the Browser.

Re: Defeating a 40-year-old copy protection dongle

#263

Earlier quoted context omitted.

Sure. Anything's possible. My point was that any company response in this particular case is vanishingly unlikely. > They could have been bought by a bigger company. Any acquisition (or bankruptcy) in the 2000s is highly likely to have created a web trail. > If the copyright isn't registered, and often even if it is, there's no way to know who owns it now. But trademarks need to be renewed, which creates a web trail.…

You can break laws. You just have to realistically estimate the risk. The chance is low, but the impact is high. Maybe you set up an LLC just in case, or you act from the shadows like "Anna" The government's traditionally very weaponized. I'd err on the side of overestimating risk unless you're certain about the legalities. Your life could be ruined. Most things that are worth doing could ruin your life. You could di…

> ... but the impact is high.

Wow. I kind of regret the effort supplying supporting facts and reasoning demonstrating the impact is almost invariably zero or negligible.

> Most things that are worth doing could ruin your life. You could die in a car crash too.

So... you agree?

> You have to choose which risks to take.

And you have to choose which concerns to troll. Maybe consider the potential unintended harm you may cause of stopping something worth doing before evoking the specter of a scary-sounding consequence. A consequence which is, in reality, very nearly always harmless (in the non-profit, preservation with reasonable prior search scenario) as well as vanishingly unlikely to happen at all.

Re: Defeating a 40-year-old copy protection dongle

#264
post #197

>Very importantly, there doesn’t seem to be any “input” into this routine. It doesn’t pop anything from the stack, nor does it care about any register values passed into it. Which can only mean that the result of this routine is completely constant! This is not necessarily a fair assumption (though it worked this time). It could be some sort of a rolling code, where the reply is not constant but changes, and remains…

Unles the verification routine (eg. garage) keeps some state somewhere it has no way to prevent replays.

[deleted]

Re: Defeating a 40-year-old copy protection dongle

#265
post #197

>Very importantly, there doesn’t seem to be any “input” into this routine. It doesn’t pop anything from the stack, nor does it care about any register values passed into it. Which can only mean that the result of this routine is completely constant! This is not necessarily a fair assumption (though it worked this time). It could be some sort of a rolling code, where the reply is not constant but changes, and remains…

Unles the verification routine (eg. garage) keeps some state somewhere it has no way to prevent replays.

i did not say replay was impossible. i said the statement in the article was overly broad, which it is. If it said "a single result could be hard-coded", it would be fine. but it said the function is constant, which it need not be.

But even that need not be true. here is how you could design that dongle to require no persistent state on RX and still not allow simple replay.

TX code:

   static u8 counter = 0;
   tmp = randU12() * 16 + (counter++);
   tmp2 = sha256(secret + tmp) & 0xffff;
   send32((tmp 
RX code: static u16 prevSeenCodes[16]; static u8 idx = 0;

   tmp = recv32();
   tmp2 = tmp & 0xffff;
   tmp >>= 16;
   if (sha256(secret + tmp) & 0xffff != tmp2)
      fail();
   if (tmp in prevSeenCodes)
      fail();
   prevSeenCodes[15 & idx++] = tmp;

now you need to replay at least a sequence of 16 codes

that array is in ram and need not persist across program runs. dongle can be powered off or can be left on. all will work

Re: Defeating a 40-year-old copy protection dongle

#266
post #143

This reminds me the old days of Windows 95 when I found a software to burn CDs that had a trial version which was limited to 150MB of data or so. If you tried to create a CD bigger than that it would refuse to burn and it would instead open a popup and tell you that the image exceeded the limit of XYZ blocks allowed by the trial version. So I first decompressed the executable program (Windows executable were often pa…

My grandma used to be playing casual games from a certain publisher on her PC. They were all trial versions, though, limited to 30 minutes or so. Turns out, the time left was stored in the registry, and didn’t have any validation – so when a 10 y.o. me made a quick edit, she was left with 4294967295 minutes of trial left.

you were lucky it was an unsigned var..

otherwise you could have gifted a very nasty trial time of -1 minute! a pretty nice anti-addiction feature :-)

Re: Defeating a 40-year-old copy protection dongle

#267
post #31

Earlier quoted context omitted.

Having to put a physical device on your parallel port at the back of the computer is kind of annoying, especially if every software you use has one. More common for games was to use the media itself for copy protection, using a variety of tricks to make copy more difficult. Other techniques involve printing some keys you have to enter using colors that don't render well in photocopies, or have you look at words a cer…

Makes me sad how many person-years of effort have been wasted over the years on futile dongle-engineering, copy-protection and DRM. They're pretty much all cracked. And the industry keeps insisting on trying!

Making games uncrackable is a solved problem: the game runs on the server and the server decides what happens, with the user connecting a client that simply sends input to the server and receives a scene to render.

This has many negative side effects, but if the game doesn't require twitchy reflexes it's usually not very noticable. It's also terrible for preservation.

Re: Defeating a 40-year-old copy protection dongle

#268

Why wasn't (isn't) this more widely used? It was clearly more effective than a cdkey. I know there is cost associated with the hardware, but surely the costumer can cough 15 more dollars. The only reason I can think of is wanting as wide adoption before max revenue as possible. But then, this has never been too popular, not even for games!

One problem is that they often couldn't be daisy chained, the connector on the back was only useful for an actual printer. So if everybody started doing it you would have to swap them constantly which is a headache. So they're mostly used for software where it's going to be the only thing running on the box. I find it interesting that they didn't make it into the USB era where you could easily have something that doe…

My dad worked for a company that had some involvement in this area. I know USB was used for dongles alongside parallel/serial, but I have a vague memory that there might actually be PCI-based authentication as well.

Re: Defeating a 40-year-old copy protection dongle

#269
post #143

This reminds me the old days of Windows 95 when I found a software to burn CDs that had a trial version which was limited to 150MB of data or so. If you tried to create a CD bigger than that it would refuse to burn and it would instead open a popup and tell you that the image exceeded the limit of XYZ blocks allowed by the trial version. So I first decompressed the executable program (Windows executable were often pa…

My grandma used to be playing casual games from a certain publisher on her PC. They were all trial versions, though, limited to 30 minutes or so. Turns out, the time left was stored in the registry, and didn’t have any validation – so when a 10 y.o. me made a quick edit, she was left with 4294967295 minutes of trial left.

I used to patch games for my mom that had a different mechanism but also 30 min of trial. got 5 bucks for each one and mom didn't have to pay 15-30. good times and the easiest money ever

Re: Defeating a 40-year-old copy protection dongle

#270
post #154

Earlier quoted context omitted.

Honestly, if they never need anything more from the developer, a perpetual license and never spending another dime seems fine. However, in modern times, OS vendors (especially one named after fruit) tend to break a ton of APIs and change rules with every "major release," meaning developers have to invest a ton of effort to at minimum meet all those new requirements every year (!) or else the app will at best look out…

Right, but then you're providing tangible value to the customer and thus it's warranted to charge again. The fairest thing to do is when a customer buys the software, they're entitled to that exact version forever. Or maybe 1 year of updates and bug fixes if you're feeling nice. If they want the next version that supports the next OS, it's fair to charge some more. This what IntelliJ does. When I buy their IDE I can…

> When a customer buys the software, they're entitled to that exact version forever

Sure. And if the audience is very broad that could be perpetually sustaining -- they're each year selling new licenses to people who just became old enough to want that type of software. You can see how a major IDE can afford to do that, right?

What it is really bad for is more niche software. This software often reaches its whole addressable audience in just a few years, and then revenue dips toward zero until the random occurrence of an OS breakage, which may take 1 year or 5 years. And some people even expect that "unbreaking" update to be free.

Obviously everyone has a right to refuse to buy under any business model other than a perpetual license if they wish. But I think that refusal to consider paying for subscription-based software under any circumstances greatly decreases the options that are going to be made at all, as the perpetual license model is absolutely unsustainable to all but the largest developers, and the apps with a very broad, naturally-replenishing audience. Everyone else will either quit or make ad-supported crap.

Post reply on HN