/* // File : /cmds/adm/_tripwire.c // Desc : A security command to catch hackers inserting password loggers // in mudlib objects // 94-07-25 : Pallando wrote original code // This file is part of the TMI-2 distribution mudlib. // Please retain this header if you use any of this code. */ #include <priv.h> #include <mudlib.h> #include <daemons.h> #include <commands.h> #define DEFAULT ([ \ CMD_SU ".c" : 0, \ CMD_PASSWD ".c": 0, \ LOGIN_D ".c" : 0, \ ]) inherit DAEMON; int cmd_tripwire( string arg ) { mapping files; mixed *data; string *names; int loop; if( !mapp( files = (mapping)this_player()-> query( "tripwire" ) ) ) { write( "Setting default tripwire:\n" ); files = DEFAULT; } loop = sizeof( names = keys( files ) ); // Check each file in turn while( loop-- ) { // Check the file still exists if( sizeof( data = get_dir( names[loop], -1 ) ) ) { // See if the file has been touched since you last checked it if( files[names[loop]] != data[0][2] ) { printf( "%s :\n\tlast touched = %s\n\tlast checked = %s\n", names[loop], ctime( data[0][2] ), ( files[names[loop]] ? ctime(files[names[loop]]) : "never" )); files[names[loop]] = data[0][2]; } } else { write( names[loop] + " no longer exists.\n" ); } } this_player()-> set( "tripwire", files, MASTER_ONLY ); return 1; } string help() { return( @EndText Syntax: tripwire Effect: tests if files have been touched since you last checked them Usage: add the command to your .login file Nota Bene: "call" can be used to change which files you check it defaults to checking files that require the user to enter their password See also: sitecheck, get_dir EndText ); } /* EOF */