我将协助开展使用授权软件的课程。该软件有点昂贵,并且只允许有限数量的并发安装,因此我将在安装了 Ubuntu(或其他版本的 Linux)的加密虚拟磁盘上安装一个实例。为了减少发生任何不必要的盗版的可能性,我打算安排(使用 cron)一个自毁脚本在课程最后一天后立即运行。(或最迟在最后一天后第一次启动时运行。)
虽然我热爱免费软件和开源项目(以及一般的众包),但我也非常尊重商业软件以及开发人员为开发好产品所投入的时间和精力——我不想最终无意中助长他们的血汗和泪水被盗版。
如果能提供有关如何在 Linux 机器上实现此自毁脚本的任何想法,我将不胜感激。
答案1
正如多次提到的,删除加密映像应该足够了。另一种方法是将应用程序安装在其自己的分区上,然后用 dd 擦除它。
dd if=/dev/zero of=/dev/TARGETPARTITION bs=1M
这将用零覆盖所有内容,足以删除无法恢复的数据。
答案2
摧毁一切似乎有点过头了,不如直接删除/卸载你的程序吧。
rm -rf /path/to/your/program/
或者您如何实现一个程序在启动之前必须联系的正常许可服务器?
更新: 作为一个开放的问题,您是否计划销毁用户数据以及您的程序?或者用户数据存储在其他地方?
也许用户应该得到某种提醒,告知你计划摧毁一切!比如
-“如果您不支付更多钱,该软件将自毁,您只剩下X天的时间了。”
作为用户,如果您在没有告知我即将发生这种情况的情况下破坏了我计算机中的某些内容(这样我至少有机会影响结果),我会非常沮丧。
如果所有付费客户最终都讨厌你,那么这对你的公司来说就有点糟糕了。
答案3
有点旧了,但还行。根据该设置,我宁愿只加密虚拟机文件系统,在会话期间(假设它们是联网的),您可以远程登录。如果他们要复制虚拟机,他们就必须暴力破解密码,而您的用户几乎不应该这样做 :)
即如果您不介意的话,您可以加密挂载点:注意:这种保护系统在某些国家/州显然是非法的?(在美国是的,但您似乎来自英国?):
设置加密的密码挂载:
dd if=/dev/urandom of=/home/user/virtualfolder bs=16065b count=100
modprobe loop
modprobe cryptoloop
modprobe aes
losetup -e aes /dev/loop1 ./virtualfolder
password: <enter your password here which you don't show to the users>
mkreiserfs /dev/loop1
mkdir /theprogram
mount -o loop,encryption=aes,acl ./virtualdrive /theprogram
password:<enter the same passy>
现在将你的程序安装/移动到/theprogram
(每次您想再次访问/theprogram时请执行):
安装
mount -o loop,encryption=aes,acl ./virtualdrive /theprogram
password:<enter the same passy>
卸载
umount /theprogram
losetup -d /dev/loop1
rmmod aes
rmmod cryptoloop
rmmod loop
完成后,使软件文件夹看起来就像一个随机字节的文件。
您还可以确保他们在 VM 会话期间使用的用户帐户没有su
权限,以防他们复制整个内容。
答案4
我不知道您的设置是什么,但是如果您可以要求用户在线,那么您可能需要采取不同的策略 - 尝试在他们运行软件时通过网络连接加载软件。这才是可行的,并且取决于您是否能够向各个用户发出某种 ID。您将在 VM 上有一个存根,存根会自动安装远程服务器并从那里运行二进制文件。没有什么是他们无法通过一点努力解决的,但这至少比绕过自动销毁更难。
或者,您可以让远程服务器使用密钥进行响应,并在磁盘上保留程序的加密版本 - 存根向服务器查询密钥,解密并运行程序,并根据需要删除解密的二进制文件。这也更难绕过,但同样需要唯一的用户 ID(这对您来说可能是不可能的)。