PC Review


Reply
Thread Tools Rate Thread

Can a unique ID be created for each PC?

 
 
Robert
Guest
Posts: n/a
 
      12th Jan 2004
I am helping in the development of a shareware program and we would
like to find a way to link our registration codes to the physical
machines our software is installed on.

We need a reliable way to tell if the machine our software is run on is
the same machine it was installed on.

Could you please suggest a reliable way to create such a unique
identification number for each PC our software is installed on?

Or could you please direct us to a good (Internet) source of
information?

Thank you very much for any help.
--
Cheers,
Robert
 
Reply With Quote
 
 
 
 
Project722
Guest
Posts: n/a
 
      12th Jan 2004
Cant tell you exactly how to do it, but the idea would be to do it the
same way MS does WPA. (windows product activation). You associate your
reg codes to the hardware config of the machine its installed on. Create
a "hardware hash" which is made up of a number of hardware components
that characterize the machine. The hash is then combined with the reg
codes to give you the Installation ID. Which is then verified by you
before or during the install.



Robert wrote:

> I am helping in the development of a shareware program and we would
> like to find a way to link our registration codes to the physical
> machines our software is installed on.
>
> We need a reliable way to tell if the machine our software is run on is
> the same machine it was installed on.
>
> Could you please suggest a reliable way to create such a unique
> identification number for each PC our software is installed on?
>
> Or could you please direct us to a good (Internet) source of
> information?
>
> Thank you very much for any help.


 
Reply With Quote
 
Robert
Guest
Posts: n/a
 
      12th Jan 2004
Project722 wrote:

> Cant tell you exactly how to do it, but the idea would be to do it
> the same way MS does WPA. (windows product activation). You associate
> your reg codes to the hardware config of the machine its installed
> on. Create a "hardware hash" which is made up of a number of hardware
> components that characterize the machine. The hash is then combined
> with the reg codes to give you the Installation ID. Which is then
> verified by you before or during the install.
>
>
>
> Robert wrote:
>
> > I am helping in the development of a shareware program and we would
> > like to find a way to link our registration codes to the physical
> > machines our software is installed on.
> >
> > We need a reliable way to tell if the machine our software is run
> > on is the same machine it was installed on.
> >
> > Could you please suggest a reliable way to create such a unique
> > identification number for each PC our software is installed on?
> >
> > Or could you please direct us to a good (Internet) source of
> > information?
> >
> > Thank you very much for any help.

_________________________________
Hi!
Big PC manufacturers make thousands of completely identical PCs with
same motherboard, chipset, BIOS, graphic card, OS.
We need to find a way to create a unique ID even on these
run-of-the-mill PCs.
--
Cheers,
Robert
 
Reply With Quote
 
Project722
Guest
Posts: n/a
 
      12th Jan 2004
Thats why you configure your software to generate unique installation
ID's, taken from the combination of the hardware hash(which doesn't have
to be the same just because the hardware is the same on all machines)
and your reg codes.








Robert wrote:
> Project722 wrote:
>
>
>>Cant tell you exactly how to do it, but the idea would be to do it
>>the same way MS does WPA. (windows product activation). You associate
>>your reg codes to the hardware config of the machine its installed
>>on. Create a "hardware hash" which is made up of a number of hardware
>>components that characterize the machine. The hash is then combined
>>with the reg codes to give you the Installation ID. Which is then
>>verified by you before or during the install.
>>
>>
>>
>>Robert wrote:
>>
>>
>>>I am helping in the development of a shareware program and we would
>>>like to find a way to link our registration codes to the physical
>>>machines our software is installed on.




>>>
>>>We need a reliable way to tell if the machine our software is run
>>>on is the same machine it was installed on.
>>>
>>>Could you please suggest a reliable way to create such a unique
>>>identification number for each PC our software is installed on?
>>>
>>>Or could you please direct us to a good (Internet) source of
>>>information?
>>>
>>>Thank you very much for any help.

>
> _________________________________
> Hi!
> Big PC manufacturers make thousands of completely identical PCs with
> same motherboard, chipset, BIOS, graphic card, OS.
> We need to find a way to create a unique ID even on these
> run-of-the-mill PCs.


 
Reply With Quote
 
D.Currie
Guest
Posts: n/a
 
      13th Jan 2004

"Robert" <(E-Mail Removed)> wrote in message
news:u57mW$(E-Mail Removed)...
> Project722 wrote:
>
> > Cant tell you exactly how to do it, but the idea would be to do it
> > the same way MS does WPA. (windows product activation). You associate
> > your reg codes to the hardware config of the machine its installed
> > on. Create a "hardware hash" which is made up of a number of hardware
> > components that characterize the machine. The hash is then combined
> > with the reg codes to give you the Installation ID. Which is then
> > verified by you before or during the install.
> >
> >
> >
> > Robert wrote:
> >
> > > I am helping in the development of a shareware program and we would
> > > like to find a way to link our registration codes to the physical
> > > machines our software is installed on.
> > >
> > > We need a reliable way to tell if the machine our software is run
> > > on is the same machine it was installed on.
> > >
> > > Could you please suggest a reliable way to create such a unique
> > > identification number for each PC our software is installed on?
> > >
> > > Or could you please direct us to a good (Internet) source of
> > > information?
> > >
> > > Thank you very much for any help.

> _________________________________
> Hi!
> Big PC manufacturers make thousands of completely identical PCs with
> same motherboard, chipset, BIOS, graphic card, OS.
> We need to find a way to create a unique ID even on these
> run-of-the-mill PCs.
> --
> Cheers,
> Robert


Even so, serial numbers on the hard drive and processor would be different,
as would the mac address on the network card, if it existed. And the serial
number on the motherboard as well. You could pick one or more of those as
your ID, but whatever you choose, you will have users who will tell you that
they upgraded that component and want to keep the software.


 
Reply With Quote
 
Robert
Guest
Posts: n/a
 
      13th Jan 2004
D.Currie wrote:

>
> "Robert" <(E-Mail Removed)> wrote in message
> news:u57mW$(E-Mail Removed)...
> > Project722 wrote:
> >
> > > Cant tell you exactly how to do it, but the idea would be to do it
> > > the same way MS does WPA. (windows product activation). You
> > > associate your reg codes to the hardware config of the machine
> > > its installed on. Create a "hardware hash" which is made up of a
> > > number of hardware components that characterize the machine. The
> > > hash is then combined with the reg codes to give you the
> > > Installation ID. Which is then verified by you before or during
> > > the install.
> > >
> > >
> > >
> > > Robert wrote:
> > >
> > > > I am helping in the development of a shareware program and we
> > > > would like to find a way to link our registration codes to the
> > > > physical machines our software is installed on.
> > > >
> > > > We need a reliable way to tell if the machine our software is
> > > > run on is the same machine it was installed on.
> > > >
> > > > Could you please suggest a reliable way to create such a unique
> > > > identification number for each PC our software is installed on?
> > > >
> > > > Or could you please direct us to a good (Internet) source of
> > > > information?
> > > >
> > > > Thank you very much for any help.

> > _________________________________
> > Hi!
> > Big PC manufacturers make thousands of completely identical PCs with
> > same motherboard, chipset, BIOS, graphic card, OS.
> > We need to find a way to create a unique ID even on these
> > run-of-the-mill PCs.
> > --
> > Cheers,
> > Robert

>
> Even so, serial numbers on the hard drive and processor would be
> different, as would the mac address on the network card, if it
> existed. And the serial number on the motherboard as well. You could
> pick one or more of those as your ID, but whatever you choose, you
> will have users who will tell you that they upgraded that component
> and want to keep the software.

_________________________________

Hi!
Thanks to everybody for the help.
Could anyone give some indication on how to proceed programmatically to
get all these hardware serial numbers?
--
Cheers,
Robert
 
Reply With Quote
 
Joshua Smith [MSFT]
Guest
Posts: n/a
 
      13th Jan 2004
From MSDN this is an API you can use to get the MAC address... Hope it
helps.

FILTEROBJECT

The FILTEROBJECT structure defines a single object of a display filter. The
FilterAddObject function uses FILTEROBJECT to build a display filter.


typedef struct _FILTEROBJECT { FILTERACTIONTYPE Action; HPROPERTY
hProperty; union { VALUETYPE Value; HPROTOCOL hProtocol; LPVOID
lpArray; LPPROTOCOLTABLETYPE lpProtocolTable; LPADDRESS lpAddress;
ULPLARGEINT lpLargeInt; ULPTIME lpTime; LPOBJECT_IDENTIFIER lpOID; };
union { WORD ByteCount; WORD ByteOffset; }; struct _FILTEROBJECT*
pNext;
} FILTEROBJECT, *LPFILTEROBJECT;Members
Action
Flag that specifies the FILTEROBJECT action. A flag can specify a
property, value, or operator.
The following table lists Action member property flags.

Value Meaning
FILTERACTION_PROPERTY Contains this property.
FILTERACTION_PROPERTYEXIST Indicates that a filter action property
is already defined.

The following table lists Action member value flags.

Value Meaning
FILTERACTION_VALUE Contains this value.
FILTERACTION_STRING Contains this string.
FILTERACTION_ARRAY Contains this array.
FILTERACTION_CONTAINSNC Indicates that a property contains a
case-insensitive substring.
FILTERACTION_CONTAINS Indicates that a property contains a case
sensitive substring.
FILTERACTION_ADDRESS Contains the MAC address.
FILTERACTION_ADDRESSANY Matches any MAC address.
FILTERACTION_FROM Indicates the From MAC address.
FILTERACTION_TO Indicates the To MAC address.
FILTERACTION_FROMTO Indicates a From/To pairing of MAC addresses.
FILTERACTION_LARGEINT Contains a large integer.
FILTERACTION_TIME Contains a SYSTEMTIME structure.
FILTERACTION_ADDR_ETHER Contains an Ethernet MAC address.
FILTERACTION_ADDR_TOKEN Contains a token ring MAC address.
FILTERACTION_ADDR_FDDI Contains a FDDI MAC address.
FILTERACTION_ADDR_IPX Contains an IPX MAC address.
FILTERACTION_ADDR_IP Contains an IP MAC address.
FILTERACTION_OID Contains an Object Identifier (OID).

The following table lists Action member operator flags.

Value Meaning
FILTERACTION_INVALID Indicates an invalid filter action.
FILTERACTION_AND Indicates a logical AND statement.
FILTERACTION_OR Indicates a logical OR statement.
FILTERACTION_XOR Indicates a logical exclusive OR (XOR) statement.
FILTERACTION_NOT Indicates a logical NOT statement.
FILTERACTION_EQUALNC Filter action is equal and case insensitive.
FILTERACTION_EQUAL Filter action is equal and case sensitive.
FILTERACTION_NOTEQUALNC Logical NOT statement is equal and case
insensitive.
FILTERACTION_NOTEQUAL Logical NOT statement is equal and is case
sensitive.
FILTERACTION_GREATERNC Filter action is greater than (>) and case
insensitive.
FILTERACTION_GREATER Filter action is greater than (>) and case
sensitive.
FILTERACTION_LESSNC Filter action is less than (<) and case
insensitive.
FILTERACTION_LESS Filter action is less than (<) and case sensitive.
FILTERACTION_GREATEREQUALNC Filter action is greater than or equal
to (>=) and case insensitive.
FILTERACTION_GREATEREQUAL Filter action is greater than or equal to
(>=) and case sensitive.
FILTERACTION_LESSEQUALNC Filter action is less than or equal to (<=)
and case insensitive.
FILTERACTION_LESSEQUAL Filter action is less than or equal to (<=)
and is case sensitive.
FILTERACTION_PLUS Add operator (+).
FILTERACTION_MINUS Subtract operator (-).
FILTERACTION_AREBITSON Indicates BIT-wise operation.
FILTERACTION_AREBITSOFF Indicates non-BIT-wise operation.
FILTERACTION_PROTOCOLSEXIST Indicates that the selected protocols
exist.
FILTERACTION_PROTOCOLEXIST Indicates that the selected protocol
exists.
FILTERACTION_ARRAYEQUAL Indicates that array contents are equal. The
flag must be used with a FILTERACTION_ARRAY structure.
FILTERACTION_DEREFPROPERTY Describes a pattern match at an offset
(in bytes), from the protocol.
FILTERACTION_OID_CONTAINS Evaluates a substring within an object
identifier. The action must be used with the FILTERACTION_OID structure.
FILTERACTION_OID_BEGINS_WITH Evaluates a substring that begins an
object identifier. The flag must be used with FILTERACTION_OID.
FILTERACTION_OID_ENDS_WITH Evaluates a substring that ends an object
identifier. The flag must be used with FILTERACTION_OID.
FILTERACTION_ADDR_VINES Contains a Vines MAC address.
FILTERACTION_EXPRESSION Contains an action expression.
FILTERACTION_BOOL Contains a BOOL data type.
FILTER_DIRECTION_NEXT Controls sequential direction (Next frame)
within a capture file.
FILTER_DIRECTION_PREV Controls sequential direction (Previous frame)
within a capture file.

hProperty
Handle to a property key.
Value
Value of an object.
hProtocol
Handle to display filter protocol.
lpArray
Pointer to an array.
lpProtocolTable
Pointer to a protocol list designed to test the existence of protocol in a
frame.
lpAddress
Pointer to the kernel type address. For example, MAC or IP.
lpLargeInt
Double DWORD used in Windows NT/Windows 2000 applications.
lpTime
Pointer to a SYSTEMTIME structure.
lpOID
Pointer to the OBJECT_IDENTIFIER (OID) structure.
ByteCount
Number of bytes in the frame.
ByteOffset
Offset byte value of the FILTEROBJECT structure used to compare arrays.
pNext
Reserved.
Requirements
Client: Included in Windows XP, Windows 2000 Professional, and Windows NT
Workstation 4.0.
Server: Included in Windows Server 2003, Windows 2000 Server, and Windows NT
Server 4.0.
Header: Declared in Filter.h.





Joshua Smith
DirectInput Test Lab
Microsoft
-----
Get Secure! www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights



"Robert" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> D.Currie wrote:
>
>>
>> "Robert" <(E-Mail Removed)> wrote in message
>> news:u57mW$(E-Mail Removed)...
>> > Project722 wrote:
>> >
>> > > Cant tell you exactly how to do it, but the idea would be to do it
>> > > the same way MS does WPA. (windows product activation). You
>> > > associate your reg codes to the hardware config of the machine
>> > > its installed on. Create a "hardware hash" which is made up of a
>> > > number of hardware components that characterize the machine. The
>> > > hash is then combined with the reg codes to give you the
>> > > Installation ID. Which is then verified by you before or during
>> > > the install.
>> > >
>> > >
>> > >
>> > > Robert wrote:
>> > >
>> > > > I am helping in the development of a shareware program and we
>> > > > would like to find a way to link our registration codes to the
>> > > > physical machines our software is installed on.
>> > > >
>> > > > We need a reliable way to tell if the machine our software is
>> > > > run on is the same machine it was installed on.
>> > > >
>> > > > Could you please suggest a reliable way to create such a unique
>> > > > identification number for each PC our software is installed on?
>> > > >
>> > > > Or could you please direct us to a good (Internet) source of
>> > > > information?
>> > > >
>> > > > Thank you very much for any help.
>> > _________________________________
>> > Hi!
>> > Big PC manufacturers make thousands of completely identical PCs with
>> > same motherboard, chipset, BIOS, graphic card, OS.
>> > We need to find a way to create a unique ID even on these
>> > run-of-the-mill PCs.
>> > --
>> > Cheers,
>> > Robert

>>
>> Even so, serial numbers on the hard drive and processor would be
>> different, as would the mac address on the network card, if it
>> existed. And the serial number on the motherboard as well. You could
>> pick one or more of those as your ID, but whatever you choose, you
>> will have users who will tell you that they upgraded that component
>> and want to keep the software.

> _________________________________
>
> Hi!
> Thanks to everybody for the help.
> Could anyone give some indication on how to proceed programmatically to
> get all these hardware serial numbers?
> --
> Cheers,
> Robert





 
Reply With Quote
 
Robert
Guest
Posts: n/a
 
      14th Jan 2004
Robert wrote:

> I am helping in the development of a shareware program and we would
> like to find a way to link our registration codes to the physical
> machines our software is installed on.
>
> We need a reliable way to tell if the machine our software is run on
> is the same machine it was installed on.
>
> Could you please suggest a reliable way to create such a unique
> identification number for each PC our software is installed on?
>
> Or could you please direct us to a good (Internet) source of
> information?
>
> Thank you very much for any help.

_________________________________

Hi again!
Actually processor IDs are either inexistent or unretrievable.
Other people suggested using the MAC address of the netowrk card.
But many PCs have no such card.
Others also suggested getting information from the registry or writing
registration codes into the registry. But any hacker could easily
outwit these naive tactics.

Apparently the best approach would be to retrieve

the CPU make and model
the motherboard chipset make model and serial number
the motherboard make, model and serial number
the BIOS type and serial number
the OS type and version
the graphic card make model and serial number

and build a unique ID from these.

The problem is how can one retrieve all this information
programmatically from a host PC?
--
Cheers,
Robert
 
Reply With Quote
 
Joshua Smith [MSFT]
Guest
Posts: n/a
 
      14th Jan 2004
If you are looking for a reasonable means of securing a registration key you
can use the LsaStorePrivateData() API to encrypt private data. If you don't
use MSDN there is a lot of good information about security and encryption,
among everything else.

This link discusses the LsaStorePrivateData() API:
http://msdn.microsoft.com/library/de...rivatedata.asp

This is the MSDN home page you can use for research:
http://msdn.microsoft.com/library/default.asp

Joshua Smith
DirectInput Test Lab
Microsoft
-----
Get Secure! www.microsoft.com/security
This posting is provided "AS IS" with no warranties, and confers no rights

"Robert" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Robert wrote:
>
>> I am helping in the development of a shareware program and we would
>> like to find a way to link our registration codes to the physical
>> machines our software is installed on.
>>
>> We need a reliable way to tell if the machine our software is run on
>> is the same machine it was installed on.
>>
>> Could you please suggest a reliable way to create such a unique
>> identification number for each PC our software is installed on?
>>
>> Or could you please direct us to a good (Internet) source of
>> information?
>>
>> Thank you very much for any help.

> _________________________________
>
> Hi again!
> Actually processor IDs are either inexistent or unretrievable.
> Other people suggested using the MAC address of the netowrk card.
> But many PCs have no such card.
> Others also suggested getting information from the registry or writing
> registration codes into the registry. But any hacker could easily
> outwit these naive tactics.
>
> Apparently the best approach would be to retrieve
>
> the CPU make and model
> the motherboard chipset make model and serial number
> the motherboard make, model and serial number
> the BIOS type and serial number
> the OS type and version
> the graphic card make model and serial number
>
> and build a unique ID from these.
>
> The problem is how can one retrieve all this information
> programmatically from a host PC?
> --
> Cheers,
> Robert



 
Reply With Quote
 
Robert
Guest
Posts: n/a
 
      15th Jan 2004
Joshua Smith [MSFT] wrote:

> If you are looking for a reasonable means of securing a registration
> key you can use the LsaStorePrivateData() API to encrypt private
> data. If you don't use MSDN there is a lot of good information about
> security and encryption, among everything else.
>
> This link discusses the LsaStorePrivateData() API:
> http://msdn.microsoft.com/library/de...ry/en-us/secur
> ity/security/lsastoreprivatedata.asp
>
> This is the MSDN home page you can use for research:
> http://msdn.microsoft.com/library/default.asp
>
> Joshua Smith
> DirectInput Test Lab
> Microsoft
> -----
> Get Secure! www.microsoft.com/security
> This posting is provided "AS IS" with no warranties, and confers no
> rights
>
> "Robert" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > Robert wrote:
> >
> >> I am helping in the development of a shareware program and we would
> >> like to find a way to link our registration codes to the physical
> >> machines our software is installed on.
> > >
> >> We need a reliable way to tell if the machine our software is run

> on >> is the same machine it was installed on.
> > >
> >> Could you please suggest a reliable way to create such a unique
> >> identification number for each PC our software is installed on?
> > >
> >> Or could you please direct us to a good (Internet) source of
> >> information?
> > >
> >> Thank you very much for any help.

> > _________________________________
> >
> > Hi again!
> > Actually processor IDs are either inexistent or unretrievable.
> > Other people suggested using the MAC address of the netowrk card.
> > But many PCs have no such card.
> > Others also suggested getting information from the registry or
> > writing registration codes into the registry. But any hacker could
> > easily outwit these naive tactics.
> >
> > Apparently the best approach would be to retrieve
> >
> > the CPU make and model
> > the motherboard chipset make model and serial number
> > the motherboard make, model and serial number
> > the BIOS type and serial number
> > the OS type and version
> > the graphic card make model and serial number
> >
> > and build a unique ID from these.
> >
> > The problem is how can one retrieve all this information
> > programmatically from a host PC?
> > --
> > Cheers,
> > Robert

_________________________________

Hi!
Thanks for the tip about encryption but encryption would not help.
Before doing encryption (which we already have), we need to find a way
to create a unique hardware ID for each physical machine our software
is installed on. In other words, we need to make sure that the machine
our software is running on is the same machine it was originally and
uniquely installed on. As I already said, the problem is how can one
retrieve all necessary hardware information programmatically from a
host PC?
--
Cheers,
Robert
 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

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 On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Unique object name for every object created David Hubball Microsoft C# .NET 10 30th Sep 2009 02:57 PM
Error message - unique index created on two different fields jaworski_m Microsoft Access Form Coding 3 4th Nov 2008 08:04 PM
TableAdapter Wizard Unique Keys Not Created Automatically =?Utf-8?B?VGVycnkgV2FobA==?= Microsoft ADO .NET 0 12th Jul 2007 02:12 PM
I need a unique number to be created per worksheet =?Utf-8?B?Um95IFRhbWly?= Microsoft Excel Misc 2 21st Apr 2006 01:40 PM
How do I assign a unique ID number to an invoice sheet I created? =?Utf-8?B?TWF0dA==?= Microsoft Excel Worksheet Functions 2 30th Mar 2006 06:08 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 03:12 AM.