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

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

本质上,我需要某种方法来生成并存储一段随机字符串(比如说 20 个字符长),这样我就无法在该时间段结束之前恢复该字符串。我正在运行标准 Ubuntu 12.10。

导致这一过程困难的原因有:

  • 我有root权限。
  • 计算机可能会在此期间关闭并启动。
  • 在期限结束之前我必须没有办法恢复该字符串。
  • 在此期间我将无法访问互联网。

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

一些可能的攻击途径:

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

可能有一种我所忽略的非常简单的方法可以做到这一点 - 请告诉我您的任何想法。

任何帮助都将不胜感激!

答案1

从技术角度来看,也许可以采用类似http://www.timecave.com/timecave/about.jsp会工作?

答案2

这是您正在寻找的高科技解决方案::-)

  1. 生成随机字符串。
  2. 将 root 密码设置为随机字符串。
  3. 计算字符串的哈希值。(使用操作系统的“密码加密”可能就足够了,但是如果您使用独立的哈希工具(例如),以下步骤可能会更简单 md5sum)。将哈希值存储到磁盘。
  4. “忘记”该字符串(即root密码)。
  5. 通过遍历所有可能的字符串(参见步骤 1)、对其进行哈希处理并查看其是否与保存的哈希匹配来破解密码。为了便于重启,请定期检查您在列表中的进度。

当然,您应该对此进行调整,以便步骤 1 中的随机程序从需要您指定的时间(例如,八小时)进行扫描的密码空间中进行选择。

到目前为止,我发现的最大缺点是,如果步骤 1 随机选择空间开头附近的字符串(例如“ aaaaaq”),步骤 5 可能会非常快地完成。解决此问题的一个方法是让步骤 5 将其结果保存在只有 root 可读的文件中,然后扫描整个密码空间,即使在破解密码之后也是如此。更复杂的方法是:

  1. 产生n随机字符串,字符串1字符串2,…,字符串
  2. 将 root 密码设置为它们的连接形式:字符串1字符串2 … 字符串n
  3. 计算哈希值每个字符串。将哈希值存储到磁盘。
  4. “忘记”琴弦。
  5. 按顺序对每个字符串进行哈希搜索来破解密码。

如果你这样调弦,那么每根弦需要 8 小时/n破解密码的最大时间仍为 8 小时。而且它仍然有可能在更短的时间内破解密码,但现在概率分布呈钟形曲线,因此短时间破解的可能性较小。(不幸的是,长时间破解的可能性也较小;很可能需要 2 到 6 个小时。也许你应该算出你能忍受被锁定的最长时间,并将其代入公式中。)


显然,您可以通过从其他磁盘启动计算机来解决这个问题:另一个分区、外部驱动器或光盘。您有路由器吗?您可以调整上述内容以告诉路由器阻止访问,然后在路由器上更改密码吗?

答案3

好吧,我有点迟到了!但我已经设置了一个系统来实现这种自我色情过滤。我使用“qustodio”在移动设备和桌面上进行屏蔽(最多 5 台电脑/设备!)。这是一款全面的过滤软件,易于使用、设置和运行,对移动设备的影响最小。但您可以使用任何您喜欢的软件。在我看来,Funamo 在移动设备上效果更好,但不提供桌面过滤,所以我倾向于同时使用这两种软件,桌面使用 Qustodio,移动设备使用 funamo。

我通过 GMX 的电子邮件设置了这些([电子邮件保护]) 因为它不需要恢复电子邮件,所以如果我感觉很虚弱的话,它是完全无法破解的!并使用我不会记住的随机密码(必须是 16 个字符或更少,因为 GMX 有此限制)。此密码用于 GMX 电子邮件帐户和我的过滤软件。

我遇到的问题是隐藏这个密码(我把它存储在 USB 上),而不需要其他人参与。所以我使用“Kent”建议的方法,使用http://www.timecave.com/timecave/about.jsp,我可以每周按计划收到一次密码和电子邮件地址。这样,我可以在一天中的特定时间根据需要更改或重置软件,而一周中的其余时间则不受我控制,而且我不会看色情内容!

虽然订阅费用可能要花费 60 澳元(约 40 美元),但它是值得的!

虽然它并不完美(但几乎万无一失),但它足以激励我遏制色情成瘾,让我感觉我的生活又回来了。作为一名基督徒,我将其用作另一种工具来帮助我自我控制,但我的主要动机是我的成瘾对我与耶稣以及我周围人的关系的影响。虽然我确实同意有一个责任伙伴更有益。像我这样几乎没有社交技巧或牢固关系的人(哈哈),仍然可以在自己的时间内控制我们的成瘾,而无需依赖其他人(他们很烦人),所以它是无价的,但我想他们有更有效的方法。

答案4

从你写的内容来看,任何你能立即影响的机制都可能成为问题。那么换一家能帮你屏蔽色情内容的提供商怎么样?这可能意味着你需要打电话给他们来转移/解除屏蔽(如果他们做得好,可以屏蔽变通方法的话),这会造成相当大的时间延迟,希望能打消你的冲动。

相关内容