#!/bin/bash set -xe # Setting env SCAN_DATE=`date "+%F-%H-%M"` export SHALLOT_DIR="/tmp/shallot-$SCAN_DATE" mkdir -p $SHALLOT_DIR echo "Shallot scritp v0.0.2" if [[ $# -eq 0 ]] ; then echo "[ERROR] No arguments was passed, exiting..." exit 1 fi if [[ $# -ge 2 ]] ; then echo "[WARRNING] Too much argument was passed, this script uses only first one." fi export ONIONSITE=$1 echo "[INFO] Checking if Tor Browser proxy is running..." NETSTAT_OUTPUT=`netstat -tlnp 2> /dev/null` #IF_TOR_RUNNING=`echo $NETSTAT_OUTPUT | grep -Ezqv "/tor" && echo 0 || echo 1` IF_TOR_RUNNING=`ps -eaf | grep -i tor |sed '/^$/d' | wc -l` if [[ "$IF_TOR_RUNNING" > 1 ]] ; then echo "[INFO] Tor is running!" else echo "[ERROR] Tor is not running, start Tor Browser and connect to Tor, then restart this scritp" exit 1; fi echo "Checking Onion Service, address: $1" echo "" # OnionScan echo "Runnning OnionScan aginst address, this will take a while..." export ONIONSCAN_REPORT=$(onionscan --jsonReport --torProxyAddress "127.0.0.1:9150" $1 2>$SHALLOT_DIR/onionscan_error.log | jq) echo $ONIONSCAN_REPORT > $SHALLOT_DIR/onionscan_result.txt if [ $? ] ; then echo "OnionScan done! Saved in $SHALLOT_DIR/onionscan_result.txt" else echo "[ERROR] Error occured, exiting, check $SHALLOT_DIR/onionscan_error.log for details." exit 1 fi # HTTP Headers echo "Scanning HTTP headers, wait..." export HTTP_HEADERS=$(proxychains -q -f /etc/proxychains4.conf /usr/bin/curl -I -s $1 | tail -n +3 | sed 's/\r//g' | head -n -1 | jq -R 'split(":")|{(.[0]) : .[1]}' 2>$SHALLOT_DIR/http_headers_error.log) echo $HTTP_HEADERS > $SHALLOT_DIR/http_headers.txt if [ $? ] ; then echo "HTTP headers done! Saved in $SHALLOT_DIR/http_headers.txt" else echo "[ERROR] Error occured, check $SHALLOT_DIR/http_headers_error.log" exit 1 fi # Report analysis python3 main.py