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


之前參加ctf比賽時候臨時寫的,有很多不足,不過可以用,就貼出來分享給大家,希望對大家有幫助。

腳本一:記錄當前目錄情況

#!/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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM