【问题标题】:How can I to "mark" a computer in that way I could recognize it later on Python?我怎样才能“标记”一台计算机,以便以后在 Python 上识别它?
【发布时间】:2020-09-30 09:41:19
【问题描述】:

我正在寻找一种在 Python 中“标记”计算机的方法,以便稍后为程序提供识别计算机的选项。

如您所知,我需要计算机中独一无二的东西,或者制作无法真正操纵的复杂东西。

为了更好地理解:

我实际上是在尝试阻止在另一台计算机上使用具有相同数据(我将在其中放置有关计算机的独特事物或信息)的程序。

【问题讨论】:

  • 听起来您只是在寻找许可证密钥机制。
  • 很抱歉没有在帖子中提及它,我需要在没有任何服务器的情况下识别它(程序应该识别它),正如您所知,这意味着我无法真正创建许可证密钥机制。另外我不想限制对程序的访问,我希望数据不会被复制并使用唯一元素在另一个程序中使用(所有数据都将使用区块链加密,所以另一方并不真正可以改)
  • 首先:不可能使这项工作在 100% 的情况下以及针对非常熟练/投资的攻击者。你对这个好吗?第二:这是一个你想在这方面投入多少努力的问题。仅仅足以挫败脚本小子蒂米,还是足以使用充满技巧的工具包挫败熟练的海盗?

标签: python detect


【解决方案1】:

它会为此使用 MAC 地址或主板 UUID。但是,MAC 地址不是每台计算机唯一的,而是每个网络接口唯一的。例如,当您更换网卡时,MAC 地址会发生变化。更多 Python 中获取 MAC 地址的方法可以查看here

from getmac import get_mac_address as gma

print(gma())

另一种看待这个的方式是;是什么让计算机与众不同?是网络设备、主板还是硬盘?或者也许是所有的组合?获取主板串口示例:

import os
import sys

os_type = sys.platform.lower()

if os_type.startswith('win'):
    command = "wmic bios get serialnumber"
elif "linux" in os_type:
    command = "hal-get-property --udi /org/freedesktop/Hal/devices/computer --key system.hardware.uuid"
elif "darwin" in os_type:
    command = "ioreg -l | grep IOPlatformSerialNumber"

print(os.popen(command).read())

【讨论】:

  • 1) 电脑没有MAC地址,网络接口有MAC地址; 2) MAC 地址很容易操作
  • 注意:uuid.getnode 确实会在找不到硬件地址时返回随机值。
【解决方案2】:

您可以为此使用计算机的 MAC 地址:

https://www.geeksforgeeks.org/extracting-mac-address-using-python/

【讨论】:

  • 1) 电脑没有MAC地址,网络接口有MAC地址; 2) MAC 地址很容易操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2011-11-17
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多