2010-06-21 25 views
8

Tôi đang cố gắng (nhiều hay ít) xác định duy nhất một hệ thống cho mục đích cấp phép. Tôi đã chọn địa chỉ MAC của bộ điều hợp mạng trên máy tính cho nhiệm vụ này, vì tôi có thể chắc chắn rằng mọi máy tính chạy phần mềm này thực sự có một phần mềm và điều này tránh tái kích hoạt khi thay đổi, ví dụ: đĩa cứng.Làm cách nào để nhận được địa chỉ MAC của bộ điều hợp mạng trên máy tính một cách đáng tin cậy?

Tôi gặp sự cố khi xác định đáng tin cậy bộ điều hợp mạng tích hợp.

Sử dụng "Win32_NetworkAdapterConfiguration" ManagementClass, tôi có thể nhận được rất nhiều địa chỉ MAC, bao gồm địa chỉ tôi thích, nhưng tôi không tìm thấy cách phân biệt một onboard từ bộ điều hợp ảo được cài đặt bởi Windows hoặc Virus Scanners. Danh sách này dường như được đặt hàng, mặc dù. Địa chỉ MAC mà tôi quan tâm là (trên máy của tôi) được liệt kê trước các bộ điều hợp mạng (thực) khác. (Danh sách được sắp xếp theo chỉ mục giao diện.)

Sử dụng NetworkInterface.GetAllNetworkInterfaces(), tôi nghĩ rằng tôi có thể xác định bộ điều hợp mạng thực bằng cách lọc trên .NetworkInterfaceType == NetworkInterfaceType.Ethernet, nhưng danh sách này dường như không có thứ tự (thẻ mạng được thêm xuất hiện trước bảng trên).

Lần đầu tiên sử dụng phương pháp thứ hai để nhận danh sách thẻ mạng thực và sau đó sắp xếp chúng theo thứ tự xuất hiện trong danh sách đầu tiên là cách xác định địa chỉ MAC mà tôi đang tìm kiếm? Chỉ số giao diện trong danh sách đầu tiên có thay đổi không? Tôi rất sẵn lòng nghe suy nghĩ của bạn!

Cảm ơn!

P .: Tôi biết rằng địa chỉ MAC có thể thay đổi dễ dàng, nhưng tôi có thể sống với điều đó. Tôi không thể sống với khách hàng không thể sử dụng phần mềm sau khi chỉ cần lắp một thanh WLAN =)

+0

Tại sao không lưu tất cả địa chỉ MAC của ethernet interfacetype? –

+0

@rdkleine: Điều này sẽ phá vỡ kích hoạt nếu một bộ điều hợp mạng khác được thêm vào. – Jens

+0

Bạn có thể so sánh tất cả các bộ điều hợp với tất cả các bộ điều hợp được lưu trong bộ nhớ cache. Một cặp là đủ, phải không? –

Trả lời

10

Giải pháp công nghệ khá thấp là gọi số netstat command và tìm địa chỉ MAC của bộ điều hợp có hợp lệ Địa chỉ IP. Tôi đã không bao giờ thấy lệnh netstat thất bại trên một máy tính trong khi tôi đã nhìn thấy WMI cho kết quả bất ngờ nhiều lần.

Trong mọi trường hợp, tôi đã thực hiện một hệ thống kích hoạt tương tự trước đây và tôi đã sử dụng địa chỉ MAC làm khóa xác định. Cuối cùng, nó bị thương trở nên rắc rối hơn nó đáng giá - cả cho tôi và khách hàng! Những gì tôi tìm thấy là một sự cân bằng tốt hơn nhiều và ít rắc rối là để có người dùng "đăng nhập" lần đầu tiên phần mềm được cài đặt. Với sự đồng ý của người dùng, bạn có thể gửi một số thông tin nhận dạng tới máy chủ như địa chỉ MAC của họ.

Sau đó, bạn chỉ cần định kỳ kiểm tra cơ sở dữ liệu kích hoạt của mình để tìm bằng chứng về vi phạm giấy phép chính và hủy kích hoạt các phím khi cần thiết. Là khách hàng ghét việc kích hoạt sản phẩm và ISV ghét vi phạm bản quyền phần mềm, tôi có thể thấy cả hai mặt của cuộc tranh luận và cách này tránh cho khách hàng ở vị trí không thoải mái khi thuyết phục bạn là người hợp pháp khi có điều gì đó (chắc chắn) sai rồi.

Chỉ cần nêu tên một vài lý do tại sao nhận diện MAC có thể không hoạt động ... Tôi sử dụng hai NIC (có dây và không dây) trong máy tính xách tay tùy thuộc vào việc tôi đang làm việc hay ở nhà. Một hoặc khác có thể bị vô hiệu hóa bất cứ lúc nào. Một điều khác cần lưu ý là tôi sử dụng các máy ảo khá một chút và không chỉ họ nhận được MAC của riêng mình mà tôi có thể chỉ định bất kỳ MAC nào mà tôi muốn. Sau đó, tất nhiên một ngày bạn sẽ tìm ra rằng bạn có như 100 người trong cơ sở dữ liệu của bạn với một MAC của tất cả các số không. :) Không có gì được đảm bảo ở đây.

+0

Cảm ơn bạn đã nhập!Vì lý do bạn đề cập, tôi muốn sử dụng bộ chuyển đổi on-board ngay cả khi bộ điều hợp khác có địa chỉ IP và bộ điều hợp trên bo mạch không có. Điểm tốt với máy ảo, nhưng tôi nghĩ rằng đây sẽ không phải là vấn đề lớn với khách hàng của chúng tôi ... Điều này sẽ trở lại và cắn tôi. =) – Jens

1

bạn nên xem xét một số thuộc tính khác từ WMI ngoài địa chỉ MAC.

Cách kích hoạt sản phẩm Windows xử lý việc này, xem các thuộc tính như địa chỉ MAC (cũng như thông tin nhận dạng khác về thẻ, chẳng hạn như thông tin nhà cung cấp PCI), cũng như một số thuộc tính chung của thiết bị (HDD) bộ điều khiển, bộ điều hợp hiển thị) và cơ sở cần phải kích hoạt lại trên các ngưỡng nhất định. Nếu quá nhiều thứ này thay đổi, thì cần phải kích hoạt lại.

Dưới đây là một bài viết tuyệt vời về chủ đề này và sẽ cung cấp cho bạn một số thực phẩm cho suy nghĩ về cách tiếp cận lựa chọn các thuộc tính tốt để xem xét cho hệ thống cấp phép/kích hoạt của riêng bạn:

http://aumha.org/win5/a/wpa.php

1

Nếu yêu cầu chính của bạn là nhận dạng duy nhất một PC, sau đó tôi đề nghị bạn hãy xem this question. Các cuộc đàm phán trả lời chấp nhận về một giải pháp cũng như những cạm bẫy của việc sử dụng các phương pháp MAC định danh địa chỉ

Hope this helps

1

Để truy cập chi tiết giao diện mạng trong Net, hãy tham khảo các phương pháp NetworkInterface.GetPhysicalAddress trong namespace System.Net.NetworkInformation.

Cách sử dụng là detailed on MSDN.

Tôi chắc chắn sẽ tham khảo the link Ryan has provided liên quan đến việc dựa vào địa chỉ MAC để nhận dạng.

Các vấn đề liên quan