LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 10-07-2005, 12:11 PM   #1
ftenario
Member
 
Registered: Jul 2003
Location: Camarillo, CA
Distribution: Debian
Posts: 48

Rep: Reputation: 15
programming for software activation key


Hello,

I have a server software that needs to be license on a monthly basis. Client will pay per transaction on a monthly period. It is running on linux and created in C/C++. How do I make a program that will allow this server program to run only in a particluar time and tied up only to a particular IP or MAC address?

My idea is this:

1. Create a program (run on client side) that looks for a particular IP or a particluar MAC address and make this the license key generator

2. Generates a random string based on this key

3. Client send the license key to our office

4. A program in our office will read the license key and generates the software license registration based on this MAC or IP together with the date it is allowed to run.

5. We send th license registration back to the client

6. Client install it on their server

7. Server reads license periodically

8. Server notifies client (via log file, email) if license is already expired

So, what do you think of this? Is this a good idea or is there something better to implement this licensing system


Thanks,

Ferdinand
Thanks
 
Old 10-08-2005, 08:58 PM   #2
primo
Member
 
Registered: Jun 2005
Posts: 542

Rep: Reputation: 34
You could apply the "one time password" approach to this.
 
Old 10-09-2005, 12:44 PM   #3
ftenario
Member
 
Registered: Jul 2003
Location: Camarillo, CA
Distribution: Debian
Posts: 48

Original Poster
Rep: Reputation: 15
A "one time password" may not be applicable since the software is renewable on a monthly basis.
 
Old 10-10-2005, 09:32 PM   #4
primo
Member
 
Registered: Jun 2005
Posts: 542

Rep: Reputation: 34
What about substituting "daily" with "monthly" basis?
http://www.faqs.org/rfcs/rfc2289.html
 
Old 10-11-2005, 10:03 AM   #5
ftenario
Member
 
Registered: Jul 2003
Location: Camarillo, CA
Distribution: Debian
Posts: 48

Original Poster
Rep: Reputation: 15
Thanks for the link. I'll read that one first.
 
Old 10-11-2005, 05:00 PM   #6
lm317t
Member
 
Registered: Jan 2005
Location: Raleigh, NC
Distribution: Debian Etch, Slackware 10.2, Ubuntu 6.10, OpenWRT
Posts: 66

Rep: Reputation: 15
This reminds me of the algorithm thats used to lock/unlock cars wirelessly. I think you could easily do something similar. Heres how:
Start both the customers' software and your server off with a pseudo-random # generator seeded with the same initial value. Have the customer's software request this number from your server. If it recieves the correct (same) # then both systems move on to the next # on their next transaction. In the case of a license deactivation, the customer machine never moves on because it fails, it stays stuck at the same value.

Of course the wireless algorithm this idea is based on compares the next 256 values, not just the next one, so that the two systems will likely stay in sync. In your case one comparison is all you need.

I hope this helps! I am sure something based on this idea will be useful.
 
Old 10-12-2005, 09:20 AM   #7
sundialsvcs
LQ Guru
 
Registered: Feb 2004
Location: SE Tennessee, USA
Distribution: Gentoo, LFS
Posts: 10,659
Blog Entries: 4

Rep: Reputation: 3941Reputation: 3941Reputation: 3941Reputation: 3941Reputation: 3941Reputation: 3941Reputation: 3941Reputation: 3941Reputation: 3941Reputation: 3941Reputation: 3941
The main thing that you need is a good contract.

Then you need a simple mechanism for recording some kind of a coded value which embeds a date. The software decodes the value, checks the date, and if the date has expired it does not run. (It should allow a "grace period.")

The main thing that you need to be certain of is that your mechanism is not so onerous that it pisses-off the customer. Seriously. Yes, you do need to "keep people honest." But you are not realistically very likely to be dealing with a super-duper clever-code-haxer who gets his jollies out of breaking your mechanism. (If you've ever watched these thieves go, I assure you, they will do it. But their impact upon actual, legitimate sales is much less than you may fear.)

An onerous, offensive "protection" mechanism can definitely prevent a sale. I know that I personally have declined to buy software simply because of its protection mechanism... not because of the fact that it existed, but because of how it was done.

People change disk-drives; disk drives fail. They want to move your software from one machine to another. Dongles get dropped on the ground and accidentally kicked behind a 400-pound filing cabinet. Oops. These things happen, often over weekends... and sometimes in the middle of the day in a time-zone which for you is the middle of the night! In my opinion it is much more important to make sure that your software does not create problems for them, than to absolutely, hermetically detect that they are cheating on you.

Have a good contract. Give great customer service. Provide immediate support when the license expiration period is about to end. Keep the whole thing simple.
 
Old 10-12-2005, 11:06 AM   #8
ftenario
Member
 
Registered: Jul 2003
Location: Camarillo, CA
Distribution: Debian
Posts: 48

Original Poster
Rep: Reputation: 15
We certainly have a good contract on our existing server app. But since the client is not US based, we're thinking of adding more protection to the new system.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Software Installations,GPG key jared78 Linux - Software 1 06-14-2005 03:38 AM
Programming the escape key rthak Programming 4 07-22-2004 03:11 AM
Installing software and C programming Questions ZhiYi Linux - Software 2 08-04-2003 02:59 PM
Programming the useless windoze key.. how? rivethead Linux - General 1 03-04-2003 06:45 PM
software programming tolls in Linux? apit Linux - Software 2 06-15-2002 03:55 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 06:48 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration