   [.net] Copy protection (C#)
  Hello!I was wondering how could I achieve a good copy protection system within C# ? The primary goal is to deploy a compiled C# Application to the customer and it should work on any cumputer in their network. But only in theirs. The customer may not be able to copy the application outside its company.MAC filer method is too agressive. I mean if they buy a new computer I don't care. They can use the software anyway.PUBLIC IP i think this it the best way, but I do not know how to get the public IP from a customer.Does anyone have a better idea?Feel free to post.Thank you in advance!   
  Public IP changes and costs a fair amount to keep static. Possible for large corporations, but would not be good for individuals or maybe even small companies.   ;  I heard that SillyBilly came up with a universal anti piracy system lately... SCNRBut seriously: why do you think you'd need such a copy protection? How many applications do you use that have such a copy protection? Probably none. Most often the more advanced a copy protection mechanism is the more probably one of the (legitimate) users have problems with it. So after all, you're punishing your clients. What I want to say: use some simple license validation mechanism (like license keys) during installation and for the rest don't implement any crazy copy protection. If your app is useful companies will generally pay for licenses without problems. If the app doesn't work properly because some stupid IP subnet base copy protection your client will probably not consider buying license from you now or in the future.If your project for some unknown reason really really REALLY needs this kind of copy protection (though I can't think of a reason), the things said above don't apply of course.   ;Quote:Original post by EzbezPublic IP changes and costs a fair amount to keep static.I can cite that. As my ISP grows, the range of IPs I get in any given week is growing. I used to always have 64.x.x.x.x, but now I range from there to the 70+.x.x.x. range.;  My problem is, that some of my clients allready tried to re-sell my software without any question. If I send a serial key to my customer, and this customer re-sells my software with the same S/N it is useless. In that case I need a SERVER to veryfy double S/N and take some actions.If I do not include any copy protection, I would never know unauthorised parties are using the software.   ;  I think you'll just have to face the fact that those things are going to happen, no matter how frustrating it is for you. You should concentrate more on your paying customers, because no technical means will stop skilled people from cracking your software if it's worth it.Let's take Spore as a current example. Many(!) people got very pissed about the copy protection used in the game. Its copy protection mechanism requires online activation and authentication, limits the software to three activations and has characteristics similar to that of malware. Did it prevent Spore from being cracked and spread illegally? Nope, a crack was apparently available even before the release. Guess who was the loser in this farce? The honest user who bought the game. They are limited by SecuROM, gamers who just stole the game through file shares etc. play happily without any hindrance.Obviously that's not the way you make customers happy (look at the Amazon ratings for Spore). Instead of trying to prevent illegal distribution of your software, put your energy in concentrating on improvements and extra services, like a superb support for example. People, especially professionals dig it and are willing to pay for it.You could of course go the extreme way and simply make your product open source and have companies pay only for customizations, consultancy and support. Sometimes this seems to work pretty well.   ;  Don't know if this is an applicable solution for you, but a number of apps that I've had experience with use an on-site license server deamon that just runs on one of the big central servers for a company.  When the program starts up, it fetches a license from this central license server and proceeds with the key that the server sends to it.  The central server then has control over who gets what, and handles all the management details.  It also prevents individual users from using the software in locations where the program cannot contact this license server [such as, at home, or really anywhere outside of the local network].  The program cannot receive a license, and thus tanks out.It works pretty well so long as it is just individual employees who are conspiring against your program's security, and so long as they are not willing to hack up your program.  If the company as a whole decides to distribute your software, then of course you're out of luck, as they would also have access to the running server deamon.  It is a pretty effective first-step though, and it even would allow for use of your software remotely through VPN and whatnot.Nothing'll stop a dedicated and sufficiently smart person from pirating your software though.  You can make it tough on them though, and you can implement measures to deter all of those without expert experience in this field though.   ;  A small amendment to Drigovas server deamon to help if the whole company is trying to resell your software.give the server deamon a unique serial and have that deamon phone home over the internet every day or such. if 2 seperate ip adress are using the same serial and the same time then you know the company is redistributing your sofware.   ;Quote:Original post by thePyro_13give the server deamon a unique serial and have that deamon phone home over the internet every day or such. if 2 seperate ip adress are using the same serial and the same time then you know the company is redistributing your sofware.What the server that checks the IPs isn't reachable? This could have many reasons: technical failure, the deliberate choice of the company not to allow access to the Internet from the license server etc.I've to admit, the idea of a license server in general isn't that bad, though. Although it won't stop skilled people from cracking it, of course, as has been mentioned in this thread before.   ;  Hi Samurai Jack,In response to your posts:Quote:Original post by Samurai JackHello!I was wondering how could I achieve a good copy protection system within C# ? The primary goal is to deploy a compiled C# Application to the customer and it should work on any cumputer in their network. But only in theirs. The customer may not be able to copy the application outside its company.MAC filer method is too agressive. I mean if they buy a new computer I don't care. They can use the software anyway.PUBLIC IP i think this it the best way, but I do not know how to get the public IP from a customer.Does anyone have a better idea?Feel free to post.Thank you in advance!Quote:Follow-up post by Samurai JackMy problem is, that some of my clients allready tried to re-sell my software without any question. If I send a serial key to my customer, and this customer re-sells my software with the same S/N it is useless. In that case I need a SERVER to veryfy double S/N and take some actions.If I do not include any copy protection, I would never know unauthorised parties are using the software.I would like to introduce you to the ByteShield Software Usage Management Service. The ByteShield system does everything you are asking for in your posts. Since the ByteShield system actually controls number of users, not number of installations, end users are not constrained from installing on multiple machines.  The publisher can choose how many of those installations can be activated, thereby effectively limiting the number of machines.  That means an end user is able to install the application wherever needed.  Each instance must be activated, and when that occurs, the system will validate how many active instances are allowed.  Activation permissions can be given to new machines as needed. Further the system can either constrain the IP groups for an individual customer or you can get data from us about the IP addresses of the PCs logging in. Also every activation key (Serial Number) only allows a certain number of activations and the ByteShield system shows whether additional activations are attempted.For more information see the whitepaper "Is Anti-Piracy/DRM the Cure or the Disease for PC Games?" which can be downloaded here www.byteshield.net/byteshield_whitepaper_0005.pdf.ThxChristian   