uniquely identify a computer -- use which Mac address?

R

Ryan Liu

Hi,

If I want to uniquely identify a computer. I can read CPU ID or Mac Address.

I heard, but is this true: some BIOS can block CPU ID from being read? (In
this case, will I get an exception, null or empty string for method
managementObject.Properties["ProcessorId"]?)

So maybe Mac address is better way. But when I read Mac address for my
laptop, I got:


Mac: 50:50:54:50:30:30 TcpNumConnections: SettingID:
{737A20C3-2927-422C-9420-698FD1EDC3D1} Caption: [00000001] WAN ΢ÐͶ˿Ú
(PPTP) Description: WAN ΢ÐÍ¶Ë¿Ú (PPTP) Index: 1 IPAddress:

Mac: 33:50:6F:45:30:30 TcpNumConnections: SettingID:
{180F0C5B-E52F-42D0-9872-09CAE6FF6621} Caption: [00000002] WAN ΢ÐͶ˿Ú(PPPOE)
Description: WAN ΢ÐͶ˿Ú(PPPOE) Index: 2 IPAddress:

Mac: 00:1A:A0:FD:DB:9B TcpNumConnections: SettingID:
{3F1DA70A-7956-4E9B-944F-AE4D27373C1D} Caption: [00000004] Broadcom
NetLink (TM) Fast Ethernet Description: Broadcom NetLink (TM) Fast
Ethernet Index: 4 IPAddress: System.String[]

Mac: 02:00:54:55:4E:01 TcpNumConnections: SettingID:
{CFC0D5EC-E14D-47BF-9C78-C6E1C6B97AD5} Caption: [00000005] Microsoft Tun
Miniport Adapter Description: Microsoft Tun Miniport Adapter Index: 5
IPAddress:

Mac: 00:1B:77:94:80:52 TcpNumConnections: SettingID:
{A8F431A8-D0FE-4F00-A63C-53C643B4FB85} Caption: [00000008] Intel(R)
PRO/Wireless 3945ABG Network Connection Description: Intel(R) PRO/Wireless
3945ABG Network Connection Index: 8 IPAddress:


Ocz, I don't want to use those of PPTP. I really want to is the Mac address
of the NIC for wired local network.

Since it is the most reliable one and the NIC is not a pluggable card. But
I haven't find a suitable property to locate it.

What is the best one to find it among all those Mac address in my code? Or
there is better way to unique identify a computer?

Thanks a lot!



~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.

Ryan Liu

Shanghai Fengpu Software Co. Ltd
Shanghai , China

http://www.PowerCATI.com Powerful CATI!
http://www.fpsoft.net.cn
~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.
 
P

Peter Duniho

[...]
What is the best one to find it among all those Mac address in my code?
Or there is better way to unique identify a computer?

There is no 100% reliable way to uniquely identify a computer. The MAC
address is in particular unreliable, since network hardware can change
very easily (false negative), and the hardware-supplied MAC address can be
overridden (false positive).

Pete
 
L

Lasse Vågsæther Karlsen

Ryan said:
Hi,

If I want to uniquely identify a computer. I can read CPU ID or Mac
Address.

Why do you need to do that?

As posted by Peter, there is no reliable way to do that, but perhaps if
you tell us about the problem you're trying to solve, someone might have
a better idea of how to help you.
 
P

Peter Bromberg [C# MVP]

As has been pointed out already, there is no 100% failsafe way to uniquely
identify a PC via Hardware id's. However, of the 2 choices, the CPU ID is the
least likely to change. MAC addresses can be easily changed at will without
even changing the network card. For example, Etherchange is a free utility
that will do this.
-- Peter
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
MetaFinder: http://www.blogmetafinder.com
 
R

Ryan Liu

Peter Duniho said:
[...]
What is the best one to find it among all those Mac address in my code?
Or there is better way to unique identify a computer?

There is no 100% reliable way to uniquely identify a computer. The MAC
address is in particular unreliable, since network hardware can change
very easily (false negative), and the hardware-supplied MAC address can be
overridden (false positive).

Pete


Thanks for all the reply.

I have an client/server application, and I want to control the license seat
of client. The problem is the client does not always connected to server.

Ryan
 
P

Peter Duniho

I have an client/server application, and I want to control the license
seat of client. The problem is the client does not always connected to
server.

Well, you can't do that with 100% reliability. So the question comes down
to just how reliable do you need it?

IMHO, software publishers' desire to control licensing and user activity
is over-done. I've said it many times, and I'll say it again: copy
protection carries a huge cost in terms of being friendly, or even usable
in some situations, for your paid users, and that cost is not justified by
whatever marginal increase in sales copy protection might result in (and
I've yet to see any scientifically valid study that shows that copy
protection leads to _any_ increase in actual sales).

Even if you go with a hardware-based approach, like supplying a dongle to
users, someone can always hack your software so that the dongle is not
needed. There is literally no way to prevent software that's supposed to
run standalone from being illegally copied, and even using a server-based
licensing scheme that requires the user to contact the license server can
be hacked. There's just no way to control what happens on a computer that
is not in your physical control.

If you search this newsgroup you'll find a number of threads regarding the
exact same topic. So there's probably no need to rehash it all again.
Just Google on keywords like "license", "copy protection", etc. Suffice
to say, I have a lot of skepticism regarding how worthwhile your goal is,
and whether it's even achievable.

Personally, I'd say that you should ensure that the client/server aspect
of your application is strong enough that it makes it worth paying for,
and don't worry about whether people are using the application without
your paid server support. That approach will get you practically the same
number of customers you'd have otherwise, possibly even more, and as a
bonus you won't waste any time on implementing complicated licensing
schemes, nor will your paid users have to waste their valuable time trying
to figure out problems caused by a complicated licensing scheme that
doesn't work perfectly.

Or look at it another way: your customers paid YOU for the privilege of
using your product, so that the product can serve THEIR needs. In what
way does it make sense to deliver to your customer any feature that
instead of serving their needs, serves your own (perceived or real)?

If you must implement some sort of licensing scheme, keep it simple...just
enough to keep honest users honest, without _any_ chance whatsoever of
interfering with a user's ability to use the software. Trying to come up
with some sort of "tied to the installed computer" licensing scheme is
doomed to failure; I've got the scars from dealing with Microsoft asinine
"Product Activation" crap to prove it (and only because I paid for my
software...the pirates have no such troubles).

Pete
 
C

christery

"Product Activation" crap to prove it (and only because I paid for my  
software...the pirates have no such troubles).

Pete

Just right, check CPU ID, MAC Address, graphic card and voltage,
temperature (why not) - but have a nice helpdesk that helps your
customers with problems
bying a new computer, changing ethernet card, going wlan, upgrading
cpu, memory, mouse, keyboard,
anything... as long as thy can fix it in 20 sec from the customer
realizes he/she has a problem
then it should not be a problem...

dont really know how to spell it but "asinine" is probably right..
will check out what that means, but I have a fairly good idea...
why not "user complexotoxic"? beat the hackers, lost the customers to
google...

//CY
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top