по существу, мне нужен какой-то способ генерировать и хранить случайную строку (20 символов, скажем) в течение некоторого периода времени, так что для меня нет способа восстановить строку до конца этого периода. Я использую стандартный Ubuntu 12.10.
вещи, которые делают это трудно:
- у меня есть root доступ.
- компьютер может выключиться и запуститься в течение этого периода.
- там не должно быть никакого способа для меня, чтобы восстановить строку до окончания месячных.
- Я не имеют доступа к интернету на период.
причина, по которой я должен сделать это, что у меня есть зависимость от интернет-порно. Большую часть времени я могу контролировать его, но я получаю тягу поздно ночью. Это еще сложнее, потому что я использую компьютер для моей работы, и я работаю из дома. Поэтому в последнее время я начал удалять /sbin/ dhclient, который отключает подключение к интернету (пока я не смогу получить liveCD и скопировать файл обратно, но это занимает некоторое время.) Вместо этого я хочу сгенерировать пароль для dhclient (зашифровав dhclient или просто создав zipfile с этим паролем), а затем получить пароль только на следующее утро. В основном я пытаюсь найти обязательств, немного похоже на алкоголика, наливающего свой ликер в раковину.
некоторые возможные пути нападения:
- запустить программу, которая сгенерирует строку и сохранит ее в памяти, ждет n секунды, затем печатает строку. Это не будет работать, потому что процесс будет убит, если компьютер перезагрузится, и я мог бы посмотреть в памяти программы, чтобы найти строку.
- пусть программа изменит пароль root на случайно сгенерированную строку, удалив root-доступ у меня; пусть она хранит строку в файле, к которому имеет доступ только root, и пусть root повторно запускает программу, которая проверяет, закончился ли период, и если да, дайте мне строку (и, таким образом, root-доступ). Это звучит так, как будто это сработает, но я могу обойти это, изменив время в BIOS.
- идея, которую я только что имел: написать одну программу, которая удаляет root-доступ и сохраняет пароль в файле, который требует root для чтения. Затем позвольте root использовать cron для запуска программы каждую минуту, которая проверяет существование файла с именем "delayed_root_request". Каждый раз, когда он запускается, если delayed_root_request существует, он увеличивает число, хранящееся в файле "root_timer", который может читать/писать только root. (Если это не существует, он создает его и делает его содержать "0".) Когда число в root_timer достигает 60*8=480, это дает мне доступ для чтения к файлу, в котором хранится пароль root и, следовательно, доступ root. Поэтому я могу запустить сценарий, который удаляет корневой доступ, сохраняет случайно сгенерированный пароль в файле только для корневого доступа и ломает dhclient. Когда я хочу, чтобы доступ в интернет вернулся, я создаю файл "delayed_root_request" и должен ждать 8 часов для пароля. Если в любое время во время тех 8 часы, которые я решаю, корневой доступ просто заставит меня отложить, я просто удалю файл, и мне придется начать отсчет. Если компьютер перезагружается, подсчет делает. Мне придется дать жратвы пароль (например,http://sourceforge.net/projects/grubpass/). Могу ли я получить с оптических носителей, или просто вынимая жесткий диск, но я могу сделать что неудобно, удалив все копии Убунту ISO-файл, который у меня есть, и я могу отдать все мои LiveCD дистрибутивами (и не сможет сделать больше без доступа в интернет).
там может быть очень простой способ сделать это, что мне не хватает - скажите, пожалуйста, какие идеи у вас есть.
любая помощь с этим будет действительно оценили!