11

Я буду помогать облегчить курс, который использует лицензионное программное обеспечение. Программное обеспечение несколько дорогое и допускает лишь ограниченное количество одновременных установок, поэтому я сделаю один экземпляр на зашифрованном виртуальном диске с установленной Ubuntu (или другой разновидностью linux). Просто чтобы уменьшить вероятность возникновения ненужного пиратства, я планирую (используя cron) скрипт самоуничтожения запускаться сразу после последнего дня курса. (Или, самое позднее, при первой загрузке после последнего дня.)

Как бы я ни любил бесплатные и открытые проекты (и краудсорсинг в целом), я также отношусь с уважением к коммерческому программному обеспечению и ко времени и усилиям, которые разработчики вложили в создание хорошего продукта - я не хочу в конечном итоге непреднамеренно способствовать пиратству их крови, пота и слез.

Буду признателен за любую идею о том, как реализовать этот скрипт самоуничтожения на компьютере с Linux.

4 ответа4

5

Чтобы уничтожить все, кажется немного излишним, как насчет просто удалить / удалить вашу программу.

rm -rf /path/to/your/program/ 

Или как насчет того, чтобы внедрить обычный сервер лицензирования, с которым программа должна связаться, прежде чем она сможет запуститься?


Обновление: как открытый вопрос, планируете ли вы уничтожить данные пользователей, а также вашу программу? Или данные пользователей хранятся в другом месте?

И, возможно, пользователь должен получить какое-то ворчливое уведомление, что вы планируете уничтожить все! Что-то вроде

- «Это программное обеспечение самоуничтожится, если вы не заплатите больше денег, у вас осталось X дней».

Как пользователь, я был бы очень расстроен, если бы вы просто уничтожили что-то на моем компьютере, даже не сказав мне, что это должно было произойти (так что я, по крайней мере, получил некоторый шанс повлиять на результат).

Это немного плохо для вашей компании, если все ваши платящие клиенты будут ненавидеть вас.

3

Как уже упоминалось несколько раз, удаление зашифрованного изображения должно быть более чем достаточно. Другой подход - установить приложение на отдельный раздел и затем стереть его с помощью dd.

dd if=/dev/zero of=/dev/TARGETPARTITION bs=1M

Это заменит все с нуля, что достаточно, чтобы удалить данные без возможности восстановления.

2

Немного стар, но хорошо. В соответствии с этой настройкой, я бы предпочел просто зашифровать файловую систему ВМ, и во время сеансов (при условии, что они подключены к сети) вы могли бы удаленно войти в систему. Если бы они скопировали виртуальную машину, им пришлось бы взломать пароль, вряд ли, что ваши пользователи должны делать :)

например, если вы не возражаете, вы можете зашифровать точку монтирования: Примечание: эта система защиты является незаконной, по-видимому, в некоторых странах / штатах? (хорошо в США, но вы, кажется, из Англии?)

Настройка зашифрованного пароля:

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

(Каждый раз, когда вы хотите получить доступ к / программе снова сделать):

монтаж

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 

Когда закончите, сделайте папку программного обеспечения похожей на файл случайных байтов.

Вы также можете убедиться, что учетные записи пользователей, которые они используют во время сеанса виртуальной машины, не имеют прав su в случае, если они полностью копируют.

0

Я не знаю, какие у вас настройки, но если вы можете требовать, чтобы ваши пользователи были в сети, тогда вы можете использовать другую тактику - попробуйте загружать программное обеспечение через сетевое соединение всякий раз, когда они его запускают. Это только жизнеспособно, и это зависит от того, можете ли вы выдать какой-либо идентификатор отдельным пользователям. У вас будет заглушка на ВМ, и заглушка будет автоматически монтировать удаленный сервер и запускать бинарный файл оттуда. Ничего такого, что они не могли бы обойтись с небольшим количеством работы, но это будет по крайней мере сложнее, чем обойти авто-деструктор.

Кроме того, удаленный сервер может ответить ключами и сохранить зашифрованную версию программы на диске - заглушка запрашивает у сервера ключи, расшифровывает и запускает программу, удаляя дешифрованный двоичный файл соответствующим образом. Это также будет сложнее обойти, но опять же требует уникальных идентификаторов пользователя (что может быть невозможно для вас).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .