#!/usr/bin/env bash YARA=$(type -P yara) CONFIG_PATH='/etc/phpmalwarefinder/malwares.yara' IONICE_BIN=$(type -P ionice) NICE_BIN=$(type -P nice) if [ ! -f "$YARA" ] then YARA='./yara' fi if [ ! -f "$CONFIG_PATH" ] then CONFIG_PATH='./malwares.yara' fi if [ -f "${IONICE_BIN}" ] then NICE=${IONICE_BIN} NICE_OPTS="-c 3" else if [ -f "${NICE_BIN}" ] then NICE=${NICE_BIN} NICE_OPTS="-n 20" fi fi # before starting yara, check if the file one_line_trick() { for file in $(find $@ -type f); do line_num=$(wc -l $file | cut -d' ' -f1) char_num=$(wc -c $file | cut -d' ' -f1) if [ "$line_num" -le "2" ]; then # humm, 2 lines long file ? if [ "$char_num" -ge "300" ]; then echo TooShort $file fi; fi; done; } show_help() { cat << EOF Usage ${0##*/} [-cfhw] ... -c Optional path to a configuration file -f Fast mode -h Show this help message -v Verbose mode EOF } OPTIND=1 while getopts "c:fhv" opt; do case "$opt" in h) show_help exit 0 ;; f) OPTS="${OPTS} -f" ;; c) CONFIG_PATH=${OPTARG} ;; v) OPTS="${OPTS} -s" ;; '?') show_help exit 1 ;; esac done shift "$((OPTIND-1))" if [ ! -e ${YARA} ] then echo "Can't find yara. Did you installed it?" exit 1 fi if [ ! -e ${CONFIG_PATH} ] then echo "${CONFIG_PATH} doesn't exist. Please give me a valid file." exit 1 fi if [ -z $@ ] then show_help exit 1 fi if [ ! -e ${NICE} ] then echo "No nice program available. Please install ionice or nice." exit 1 fi OPTS="${OPTS} -r ${CONFIG_PATH}" one_line_trick $@ ${NICE} ${NICE_OPTS} $YARA $OPTS $@