MAC网卡地址正在改变

MAC address of NIC card is changing

我有一个软件客户端,我要卖给一个非常小众的市场。我提供 30 天的免费试用期,我想确保未购买产品激活密钥的人在首次使用软件后 30 天后无法使用该软件。我环顾四周,看到人们建议使用机器的第一个 NIC 卡的 MAC 地址作为机器的唯一标识。

我卖出了十几份软件,一切正常。然后在过去的一周里,两个新买家遇到了问题。当该软件检查我的网站时,它还会存储日志文件,告诉我 MAC 地址在这两个客户端的会话之间发生了变化。

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

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

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

我刚注意到这两个客户都在加拿大。不知道这是否重要,虽然这看起来确实很巧合......

一个客户端不是运行 VMWare。她的机器是 运行 "Trend Micro" 安全的,如果这很重要...hhhmmm...

可能是虚拟机:

Maintaining the MAC Address of a Virtual Machine (VMWare-specific)

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

另外,他们可能只是在敲诈你。 :D 当在您的博客上记录 MAC 地址时,记录该计算机的其他一些简单属性以排除这种可能性(或至少降低这种可能性)可能也很好。

请记住,如果他们配置单个 VM,并将其复制给同事,VMWare 站点的 link 表示这将导致不同的 MAC 地址...如果这不是您希望支持的商业模式,您必须考虑这个用例。

我使用了 Reliable method to get machine's MAC address in C# 中的技术来列出我机器上的设备。

    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

问题是我总是选择列表中的第一项。带有 Blackberry VPN(可能还有其他东西,包括 VM)的网络会在他们认为合适的地方插入新设备。包括列表的开头。对他们来说,榜单的顺序变化很大。

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

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