How to set a Linux Ditribution to self-destruct (to wipe everything from the system partition) via a script
As mentioned several times, deleting the encrypted image should be more than enough. Another approach would be to install the application on its own partition and wipe it afterwards with dd.
dd if=/dev/zero of=/dev/TARGETPARTITION bs=1M
This will overwrite everything with zero which is enough to delete the data beyond recovery.
To destroy everything seems to be a little overkill, how about to just remove/unstall your program.
rm -rf /path/to/your/program/
Or how about you implement a normal licensing server that the program must contact before it can start?
Update: As a open question, do you plan to destroy the users data as well as your program? Or are the users data stored elsewhere?
And maybe the user should get some kind of nagware notice that you plan destroy everything! Something like
-"This software will self destruct if you don't pay more money, you have X days left."
As a user I would be really upset if you just destroyed something in my computer without even telling me that this was about to happen (so I at least got some chance of affecting the outcome).
It is kind of bad for your company if all your paying costumers would end up hating you.
A bit old but ok. According to that setup, I would rather indeed just encrypt the VM filesystem, and during sessions (assuming they are networked) you would remotely login. If they would copy the VM they would have to bruteforce the password, hardly what your users should be up to :)
i.e. if you don't mind you can encrypt a mountpoint: Note: this protection system is illegal apparently in some countries/states? (well in US but you seem to be from England?):
Setting up an encrypted, passworded mount:
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>
Now install/move your program into /theprogram
(Each time you want to access /theprogram again do):
mounting
mount -o loop,encryption=aes,acl ./virtualdrive /theprogram
password:<enter the same passy>
unmounting
umount /theprogram
losetup -d /dev/loop1
rmmod aes
rmmod cryptoloop
rmmod loop
When done, make the software folder look like just a file of random bytes.
You can also make sure the user accounts they use during the VM session do not have su
rights in case they copy whole thing.