如何在指定时间之前对自己隐藏代码?

Ste*_*hen 5 linux security root permissions ubuntu

从本质上讲,我需要的是某种方法来生成和存储随机字符串(例如 20 个字符长)一段时间,这样我就无法恢复该字符串,直到该时间段结束。我正在运行标准的 Ubuntu 12.10。

使这变得困难的事情:

  • 我有根访问权限。
  • 在此期间,计算机可能会关闭和启动。
  • 期间结束之前,我需要没有办法恢复字符串。
  • 在此期间,我将无法访问互联网。

我需要这样做的原因是我对网络色情上瘾。大多数时候我可以控制它,但我会在深夜渴望。这更难,因为我使用电脑工作,而且我在家工作。所以最近我开始删除 /sbin/dhclient,这会禁用 Internet 连接(直到我可以获得 liveCD 并将文件复制回来,但这需要一段时间)。我想做的是为 dhclient 生成一个密码(通过加密 dhclient,或者只是使用该密码创建一个 zipfile),然后在第二天早上才将密码返回给我。基本上,我试图找到一个承诺装置,有点像酒鬼将酒倒入水槽。

一些可能的攻击途径:

  • 运行生成字符串并将其存储在内存中的程序,等待 n 秒,然后打印字符串。这将不起作用,因为如果计算机重新启动,进程将被终止,我可能会在程序的内存中查找字符串。
  • 让程序将root密码改成随机生成的字符串,去掉我的root权限;让它将字符串存储在一个只有 root 具有 r/w 访问权限的文件中,并让 root 重复运行一个程序来检查句点是否结束,如果是,给我字符串(以及 root 访问权限)。这听起来可行,但我可以通过更改 BIOS 中的时间来解决它。
  • 我刚刚有了一个想法:编写一个程序来删除 root 访问权限并将密码存储在一个需要 root 才能读取的文件中。然后让 root 使用 cron 每分钟运行一个程序,检查名为“delayed_root_request”的文件是否存在。每次运行时,如果delayed_root_request 存在,它就会增加一个存储在“root_timer”文件中的数字,只有root 才能读/写。(如果它不存在,它会创建它并使其包含“0”。)当 root_timer 中的数字达到 60*8=480 之类的时候,它使我可以读取存储 root 密码的文件,从而获得 root使用权。所以我可以运行一个脚本来删除 root 访问权限,将随机生成的密码存储在一个仅限 root 访问的文件中,并破坏 dhclient.conf 文件。当我想恢复互联网访问时,我创建了文件“delayed_root_request” 并且必须等待 8 个小时才能获得密码。如果在这 8 小时内的任何时候我认为 root 访问只会让我拖延,我只需删除该文件,然后我必须重新开始计数。如果计算机重新启动,计数就会暂停。我必须给 GRUB 一个密码(例如http://sourceforge.net/projects/grubpass/)。我仍然可以使用光学媒体,或者只是取出硬盘驱动器,但是我可以通过删除我拥有的 Ubuntu iso 文件的所有副本来使这不方便,并且我可以放弃我所有的 liveCD(并且不会能够在没有互联网访问的情况下制作更多)。

可能有一种非常简单的方法可以做到这一点,但我缺少 - 请告诉我您的任何想法。

对此的任何帮助将不胜感激!

Pau*_*ida 0

这是一个有趣的概念问题,但对于您的特定问题,我认为您正在尝试在您需要的上游解决它(嗯,在技术方面;关于您的实际问题,也许您应该尝试在更上游解决它。 ..)。您可以使用一些应用程序来阻止对互联网上某些网站的访问,例如适用于 Firefox 的 LeechBlock、适用于 Chrome 的 StayFocusd 或适用于 Windows 的 Cold Turkey。当然,它们不会 100% 安全,但任何其他完全依赖于您的方法也不会 100% 安全,并且这些程序的优点是让您使用互联网进行高效工作(您可以拥有白名单)。