Having perhaps made an error of judgement at Morality of posting Perl "virus" code? after discovering a new Perl toy to play with I now feel the need to atone. Here is a short piece of code that you could add to a script to prevent it from running if it has been modified by *say* a virus but in all liklihood you!
This begin block could be placed anywhere in a script and appends a simple checksum to the end of that script the first time it is executed. On following executions it checks against this checksum for a change and aborts if a change is noted. A simple edit will remove the checksum from the end of the file reseting this protection. The length of the file is used as the checksum for speed but you could get as elaborate as you liked.
This script is not a virus but does change any file it is run within. The appended checksum is removed prior to execution so will cause no problems.
cheers
tachyon
#!/usr/bin/perl -w print "Hello World!\n"; BEGIN { local $/; open (ME,$0); my $me = <ME>; close ME; unless ($me =~ m/#avshc='\d+'$/) { my $length = length $me; open (ME, ">>$0"); print ME "#avshc='$length'"; close ME; $me .= "#avshc='$length'"; } $me =~ s/#avshc='(\d+)'$//; die "File $0 has changed ?viral infection?\n" unless $1 == length +$me; }
In reply to Virus protection for Perl scripts by tachyon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |