【问题标题】:How can I make a program that runs only when I insert the USB drive?如何制作仅在插入 USB 驱动器时运行的程序?
【发布时间】:2011-02-12 12:48:18
【问题描述】:

让我解释一下它是什么样的。 我想要一个安装在 PC 中的程序,但您无法运行它,除非您插入 USB 驱动器来存储程序的某些部分。 所以关键是,如果您没有 PC 和 USB 驱动器,该程序将毫无用处。 既然要在 Windows 上运行,除了 .NET 和 C#,我还应该使用哪种语言呢?

我可以用 Python 完成吗?

【问题讨论】:

  • 您对 USB 驱动器上的额外代码有多担心?因为几乎没有办法区分 USB 驱动器上的代码和内部硬盘上特定位置的代码之间的区别。或者在网络共享上。它只是文件。
  • 这只是所有文件,但我想要的是,如果 USB 和 PC 不匹配,则程序不能访问。

标签: python windows


【解决方案1】:

如果您尝试为复制保护或许可证管理执行此操作,则有一些很难(但并非不可能)击败的商业解决方案。让您开发强大的产品最终会花费您比从 Pace 或 Aladdin 或其任何竞争对手处获得许可的解决方案的成本更高。

【讨论】:

    【解决方案2】:

    商业解决方案通常具有带有微芯片的 (usb) 设备,可以进行公钥加密。这排除了伪造设备的可能性。

    示例: 程序生成一个质询码,用公钥对其进行加密 -> 设备用它的密钥(存储在微芯片中)对其进行解密,然后将质询码返回以供验证。

    攻击者只能攻击程序与设备之间的通信或直接攻击程序。这是代码混淆,按需代码解密,......开始发挥作用。非常复杂 :) 没有系统是 100% 安全的。

    【讨论】:

      【解决方案3】:

      您可以将整个程序安装在计算机上,并允许它仅在插入特定 USB 驱动器时启动。

      例如,您可以读取驱动器的序列号(每个 USB 驱动器都有一个唯一的)。

      有关如何执行此操作的更多信息,请查看here

      【讨论】:

      • 这很容易在虚拟机上进行伪造,而不是太难从您安装的任何东西中破解。
      • 一旦进入虚拟机领域,任何解决方案都将很容易被伪造。
      • 也许 USB 密钥将由某人实际持有,以便程序仅在该受信任的人在场时运行?我们不知道!! OP请赐教吗?这里真正的问题是什么??? (好吧,我现在冷静一下)
      • 这比仅将部分程序保存在 USB 上的解决方案更难伪造。两者结合会很好,但就像乔纳森所说,没有什么是很难伪造的。要获得安全的解决方案,您需要在 USB 密钥上使用一些专业硬件,我想
      【解决方案4】:

      回到 OP 的问题,您肯定会想要我们 (Wibu-Systems)、Aladdin(现在是 SafeNet 的一部分)、KeyLok 或其他类似产品的加密狗。每个都有优点和缺点。例如,我们的系统从未被破解过,并且可以防止虚拟机上的许可证违规。

      价格各不相同。

      我知道我们的产品和 SafeNet 将允许您使用 C++、C# 和可能的 Python 编写您的应用程序,因为他们正在加密您的最终二进制文件(大多数情况下他们并不关心它是如何创建的)。需要进行一些研究;我列出的所有供应商都有免费的 SDK,为您提供实际的硬件设备和测试应用所需的工具。

      自行滚动,或检查 USB 闪存驱动器的 SN,几乎肯定会出现问题。 SN 很容易破解和伪造。好的软件保护设备将大量的思想、开发时间和技术融入到一个外观简单的小工具中。您也可以编写自己的 BIOS 或构建自己的主板,但何必呢?

      【讨论】:

        【解决方案5】:

        如果您可以在插入 USB 驱动器后启动程序,那就很容易了。 您可以将实际执行程序应该执行的操作的代码放在单独的模块中,在 PC 上运行的程序部分导入(例如使用imp module),然后启动主要部分(已导入从 USB 驱动器)。

        【讨论】:

        • 如何停止复制 U 盘的内容?您可以简单地保持路径相同(例如映射网络驱动器,添加额外的磁盘分区以使其保留驱动器号)
        • 问题是没有复制内容。如果他们只有 USB 驱动器或 PC,它可以被复制,但将无法运行或从程序中获取数据。
        • 插入U盘后即可运行程序。用 Java 也可以做到吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 2017-09-05
        • 1970-01-01
        相关资源
        最近更新 更多