1. 程式人生 > >ctf比賽linux文件監控和恢復shell

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

shell then bash ctf tdi don 文件恢復 ech 目錄

之前參加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


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