ctf比赛linux文件监控和恢复shell

之前参加ctf比赛时候临时写的,有很多不足,不过可以用,就贴出来分享给大家,希望对大家有帮助。

脚本一:记录当前目录情况

#!/bin/bashfunction getdir(){    for element in `ls $1`    do          dirfile=$1"/"$element        if [ -d $dirfile ]        then             getdir $dirfile        else            #将目录结构和大小存为一个临时文件            echo `du -ab $dirfile` >> ./t.txt            #echo $dirfile >> ./dir.txt        fi      done}# 监控的目录DIR="/root/yxy"getdir $DIRfunction getdir1(){    for element in `ls $1`    do          dir_or_file=$1"/"$element        if [ -d $dirfile ]        then             getdir1 $dirfile        else            #将目录结构和大小存为一个临时文件            echo `du -ab $dirfile` > ./t1.txt            #echo $dirfile >> ./dir.txt        fi      done}DIR="/root/yxy"getdir1 $DIRecho `diff ./t.txt ./t1.txt` >> diff.txtrm ./t1.txt脚本二:对比脚本一的记录,恢复变化目录或文件#!bin/bashfunction backup(){#发生变化的文件,在备份目录下的完整路径backup_dir="/backup/"`tail -n1 ./diff.txt | awk '{print $4}' | cut -d / -f 3-`    #想要恢复的目录,将文件恢复到该目录下    backupfile=`cat ./diff.txt | awk '{print $4}' | cut -d / -f -3`     for element in `ls $1`     do           dirfile=$1"/"$element         if [ -d $dirfile ]         then              backup $dirfile         elif [[ -f $backup_dir && $backup_dir != $dirfile ]]         then             cp $backup_dir $backupfile         else             #要删除的文件             dir=$DIR`tail -n1 diff.txt | awk -F"/" '{print "/"$NF}'`             #这里不能用-r,diff.txt没有不同时,加-r会删除整个目录             rm  -f $dir         fi     done}#监控目录DIR="/root/yxy"backup $DIR

53人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册