ctf比賽linux文件監控和恢復shell

以前參加ctf比賽時候臨時寫的,有不少不足,不過能夠用,就貼出來分享給你們,但願對你們有幫助。bash

腳本一:記錄當前目錄狀況element

#!/bin/bash
function 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 $DIR

function 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 $DIR
echo `diff ./t.txt ./t1.txt` >> diff.txt
rm ./t1.txt

腳本二:對比腳本一的記錄,恢復變化目錄或文件
#!bin/bash
function 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


get

相關文章
相關標籤/搜索