Showing results for 
Search instead for 
Did you mean: 

application copyright protection

I am getting ready to market a Labview application that will sell for around $500 per copy. I am in need of information on how to protect this application from users installing on multiple PCs and 'sharing' the CD. The CD I provide is only needed for the install process at this time. I am estimating my yearly sales to be about 50 copies.
0 Kudos
Message 1 of 4
High Greg,

There are two ways to do it.

1: Use Flexlm. This is done with a lot of products. NI also uses this for the remote front panel licensing and all software which will needed to be registered.

2: Use a hardware dongle. We use the dongle from WIBU. There are some other good products on the market. These dongles allow network installations which allow you to use one dongle to manage a group of users.

Unfotunatly I have no experience how to integrate the solutions into a LV application. 1 we have never used and 2 is a Visual C++ application.

Here is another thread about this problem.


Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
Don't forget to give Kudos to good answers and/or questions
0 Kudos
Message 2 of 4

If you still want to implement the copyright scheme yourself, this are some of my thoughts about that subject. I hope this can start a good topic of conversation:

If you want your program to run on a specific machine, you need to know about that machine so your software is somehow "made" exclusively for that machine. If you can make the software so it utilize resources very specific to the target computer, then you are ok. It is difficult to come up with the right analogy. Let say it is like somebody make a uniform specifically for you and take into consideration all your exact measurements like size, weight, etc. (we are assuming a little here, like those measurement won't change). It can be argued that there maybe somebody in the universe that is like you, but the chances can be sufficiently low so it is acceptable to you to take the risk. All this is usually very difficult and expensive.

A more common approach is to know information that can uniquely identify the computer and then create the application so it first ask the computer to identify itself. Upon correct identification, the application provide its services. An analogy is that I am the one who provide the services and I have your name and driver license number on file. If you request service, I ask you for those identifiers and once I verify your identity you are good to go.

A more secure approach will be that we share a secret like a password. I, as the application, ask you (the computer) to authenticate, that is, to provide identification and the password. An alternative is to have something that, although is not secret, it cannot be forged (at least, within certain probability). Let say I ask you for your signature. The bundle human presence + signature cannot be forged.

A way to implement the latest one may go like the following: each copy of your software has a unique identifier (SI) and a unique key (K) that enable the application. You ask the target computer for its unique identifiers (CUI). You generate a random string (R) for the secret and then create a function f such that: K = f(SI, CUI, R). To get the right key K that enable your software, all the other parameters must be the right ones.

If this is done right, the security of the application will depend on the secret (R), so you better generate and manage R right. Also, you want to make sure the function f() cannot be bypassed (i.e., direct insertion of K is not possible).

There are a lot of additional issues to deal here, but I'll stop for now. I need to run some errands....

0 Kudos
Message 3 of 4


Ihave seen other threads about this topic... Maybe you can use the Mac adress ( examples are found on this forum)  to generate an ID specific fo that PC. And let the customer contact you to generate an licensecode or file for that specific system, with an algorythm you specify. Now the VI should check if the MAC adress of the system its running from is ok with the provided lcensefile or code.  But you have to make the blockpanel inaccesible by making an executable or password protected your VI to protected you algorythm.


B Bakels

Labview CLD , Engineer/Manager

Promedes and DSM
using LV 7.1, 8.0, 8.2, 8.5 and 2009 SP1
0 Kudos
Message 4 of 4