C# NIC卡的MAC地址正在更改

C# NIC卡的MAC地址正在更改,c#,unique,nic,C#,Unique,Nic,我有一个软件客户,我正在向一个非常利基的市场销售。我提供30天的免费试用,我想确保没有购买产品激活密钥的用户在首次使用该软件30天后将无法使用该软件。我环顾四周,发现有人建议使用机器第一张网卡的MAC地址作为机器的唯一标识 我卖了大约12份软件,一切都很好。上周,两位新买家遇到了问题。当软件检查我的网站时,它还保存日志文件,告诉我这两个客户端的MAC地址在会话之间发生了更改 对于一台机器,它在第一次会话后更改一次。另一方面,它似乎每调用我的软件3到4次就改变一次 我现在在网上看到了关于能够欺骗M

我有一个软件客户,我正在向一个非常利基的市场销售。我提供30天的免费试用,我想确保没有购买产品激活密钥的用户在首次使用该软件30天后将无法使用该软件。我环顾四周,发现有人建议使用机器第一张网卡的MAC地址作为机器的唯一标识

我卖了大约12份软件,一切都很好。上周,两位新买家遇到了问题。当软件检查我的网站时,它还保存日志文件,告诉我这两个客户端的MAC地址在会话之间发生了更改

对于一台机器,它在第一次会话后更改一次。另一方面,它似乎每调用我的软件3到4次就改变一次

我现在在网上看到了关于能够欺骗MAC地址的文章。他们的防火墙或其他安全设置是否可能正在更改此MAC地址?我正在使用下面的C#代码检索MAC地址,这是不是给了我一些我没有预料到的东西

NetworkInterface.GetAllNetworkInterfaces()[0]。GetPhysicalAddress().ToString()

我刚刚注意到这两个客户都在加拿大。我不知道这是否重要,但这似乎是一个巧合


一台客户端未运行VMWare。她的机器正在运行“Trend Micro”安全性,如果这很重要的话…hhmmm…

它可能是一台虚拟机:

如果他们使用的是虚拟机,那么很明显,他们必须采取这些步骤才能使用您的软件

而且,可能只是他们在骗你D在您的博客上记录MAC地址时,最好记录该计算机的其他一些简单属性,以排除这种可能性(或者至少降低这种可能性)

请记住,如果他们配置单个VM,并将其复制给同事,则指向VMWare站点的链接表明这将导致不同的MAC地址。。。如果这不是您希望支持的业务模式,那么您必须考虑这个用例。

我使用了中的技术来列出我机器上的设备列表

    Status  NetworkInterfaceType    Speed       GetPhysicalAddress()    Description
0   Down    Wireless80211           0           XXXXXXXXXXXX            Realtek RTL8188CUS Wireless LAN 802.11n USB Slim Solo
1   Down    Wireless80211           0           XXXXXXXXXXXX            Microsoft Wi-Fi Direct Virtual Adapter
2   Up      Ethernet                100000000   XXXXXXXXXXXX            Realtek PCIe GBE Family Controller
3   Down    Ethernet                3000000     XXXXXXXXXXXX            Bluetooth Device (Personal Area Network)
4   Up      Loopback                            XXXXXXXXXXXX            Software Loopback Interface 1
5   Up      Tunnel                  100000      00000000000000E0        Microsoft Teredo Tunneling Adapter
6   Down    Tunnel                  100000      00000000000000E0        Microsoft ISATAP Adapter
问题是我总是把清单上的第一项列在第一位。带有黑莓VPN(可能还有其他东西,包括虚拟机)的网络会在他们认为合适的地方插入新设备。包括列表的开头。对他们来说,列表的顺序变化很大

因此,我的解决方案是让我的客户在一个管道分隔字段中发送列表上的每个物理地址。服务器将存储一个地址,但会查看发送给它的每个项目。如果有任何匹配项,则客户端可能会启动


这就留下了一个问题,在我注册时,我如何知道我选择的地址将保留在列表中(而不是与可能离开的移动设备相关的地址)。我曾考虑将整个列表存储在服务器上,但这很快就会变得复杂。相反,我将把第一个活动的存储在服务器上(第一次登录时)。然后,我会监控谁被拒绝,并更新他们的地址,尝试捕捉模式,然后看看是否可以编写一个自力更生的解决方案。这样做的诀窍是不否定我所做的所有检查。

他们在真正的硬件上运行吗?MAC地址可以在Windows和Linux上更改如果他们更改他们的MAC地址,这很奇怪,因为服务器通常(!)获得静态IP租约(绑定到MAC地址)。你应该依赖一些不能更改的东西,我给用户发了一封电子邮件,询问他们是否正在运行此功能。这很好,但接下来,您可能应该在安全策略中考虑虚拟化。。。它不会很快消失。他们没有运行VM。关于“翻录”评论,我在我的软件中添加了一个表单,允许他们在一台机器上取消激活该软件,以便在另一台机器上再次激活该软件。我的网关仍然强制执行一个概念,即一个给定的激活密钥一次只能在一台机器上激活。这是为了防止有人发送他们的PIN和“撕毁我”。因为他们有能力从一台机器移动到另一台机器,所以他们报告的问题是没有意义的,因为他们被允许这样做。(我从一开始就计划好了这个场景…)谢谢@Chuck很抱歉我帮不上什么忙-虚拟机几乎是我所有的东西。