#!/bin/bash

#Grab script was build by peterpt exclusively for fatrat 1.9.4
#Grab script waits for a msfconsole script output and then copy that output to a final folder ,
#Grab script will close automatically the msfconsole window generated by fatrat
#closes the active msfconsole terminal automatically and autoclose itself .
#This script cannot work indenpendently from fatrat

#colours variables
cyan='\e[0;36m'
green='\e[0;34m'
okegreen='\033[92m'
lightgreen='\e[1;32m'
white='\e[1;37m'
red='\e[1;31m'
yellow='\e[0;33m'
BlueF='\e[1;34m' #Biru
RESET="\033[00m" #normal
orange='\e[38;5;166m'

path=`pwd` #Set path variable
file=temp/msff #Filename to search in metasploit output folder
conf=config/grab.conf #Maximum time to wait for all process to be done

#If timeout configuration file does not exist then abort script
if [ ! -f "$conf" ]
then
echo "Timeout configuration was not found"
echo "Aborting"
exit
else

#timeout configuration file found , read the 4th line
tmo=`sed -n 4p $conf`
fi

#Clean metasploit output folder (in case a previous file with same name was created)
rm -rf $HOME/.msf4/local/* >/dev/null 2>&1

# Look for the name of the file to be search in metasploit output in msff
# msff file will be created by fatrat

if [ -f "$file" ]
then

#msff file exists then read 1st line (filename to search)
var=`sed -n 1p $file`
else
#msff does not exist , abort
exit 1
fi
function outf(){
clear
echo -e $orange   "---------------------------------------------------"
echo -e $orange "|$okegreen       Grab Script 1.0 (fatrat 1.9.4 edition)$orange    |"
echo -e $orange   "---------------------------------------------------"
echo -e $okegreen "Second : $sleep  - Timeout : $tmo"
echo ""
echo -e $okegreen "Waiting for msfconsole output to be generated in Xterm Window"
#set directory to search for file , and filename
out="$HOME/.msf4/local/$var"

#sleep variable is equal to itself + 1 second
sleep=$((sleep+1))
if [ $sleep == "$tmo" ] 
then

#in case timeout value achieved without any metasploit output file created
#then exits this script

echo "Metasploit did not generated any output or your timeout is short"
pkill -f Microsploit > /dev/null 2>&1
exit 1
fi

#File was created by metasploit , copy it to final destination , kill msfconsole window and auto-close this script
if [ -f $out ]; then
mv $HOME/.msf4/local/$var $HOME/Fatrat_Generated/$var

#Look in active processes a process name "Microsploit" and kill it
pkill -f Microsploit > /dev/null 2>&1
exit 1
else

#metasploit output file was not yet found , wait 1 second
sleep 1

# start again
outf
fi
}
echo -e $orange   "---------------------------------------------------"
echo -e $orange "|$okegreen       Grab Script 1.0 (fatrat 1.9.4 edition)$orange    |"
echo -e $orange   "---------------------------------------------------"
echo -e $okegreen " Dont close this window , it will autoclose itself"
echo ""
echo -e $okegreen "Waiting for msfconsole output to be generated in Xterm Window"
echo -e $orange "Max waiting time = $tmo seconds"
#if the current value from msff is empty then abort this script
#this will mean that msff file exists but does not have anything written
if [ -z "$var" ]
then 
exit 1
fi

#set sleep variable to 1 second
sleep="1"

#Everything is ok until this point , start loop until timeout 
outf
