2014-01-09 17:52:17 +01:00
|
|
|
#!/usr/bin/env bash
|
2014-01-09 21:16:40 +01:00
|
|
|
parallel=50
|
2014-04-26 22:43:44 +02:00
|
|
|
max_bg=50
|
2014-01-09 17:52:17 +01:00
|
|
|
[ ! -e "results" ] && mkdir results
|
2014-04-04 20:12:50 +02:00
|
|
|
|
|
|
|
function wait_for_jobs() {
|
|
|
|
local no_jobs
|
|
|
|
no_jobs=$(jobs | wc -l)
|
|
|
|
|
|
|
|
while [ $no_jobs -gt $1 ]; do
|
|
|
|
sleep 1
|
|
|
|
no_jobs=$(jobs | wc -l)
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2014-04-26 22:43:44 +02:00
|
|
|
function scan_host() {
|
2014-05-08 02:03:50 +02:00
|
|
|
tcping -u 10000000 $2 443;
|
|
|
|
if [ $? -gt 0 ]; then
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
../cipherscan -json -servername $1 $2:443 > results/$1@$2
|
|
|
|
}
|
|
|
|
|
|
|
|
function scan_hostname() {
|
|
|
|
local host_ips=$(host $1 | awk '/has address/ {print $4}')
|
|
|
|
local www_ips=$(host www.$1 | awk '/has address/ {print $4}')
|
|
|
|
if [ ! -z "$host_ips" ] && [ ! -z "$www_ips" ]; then
|
|
|
|
# list of IPs that are in www but not in host
|
|
|
|
local diff=$(grep -Fv "$host_ips" <<< "$www_ips")
|
|
|
|
while read ip; do
|
|
|
|
scan_host $1 $ip
|
|
|
|
done <<< "$host_ips"
|
|
|
|
if [ ! -z "$diff" ]; then
|
|
|
|
while read ip; do
|
|
|
|
scan_host www.$1 $ip
|
|
|
|
done <<< "$diff"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
if [ ! -z "$host_ips" ]; then
|
|
|
|
while read ip; do
|
|
|
|
scan_host $1 $ip
|
|
|
|
done <<< "$host_ips"
|
|
|
|
fi
|
|
|
|
if [ ! -z "$www_ips" ]; then
|
|
|
|
while read ip; do
|
|
|
|
scan_host www.$1 $ip
|
|
|
|
done <<< "$www_ips"
|
|
|
|
fi
|
|
|
|
fi
|
2014-04-26 22:43:44 +02:00
|
|
|
}
|
|
|
|
|
2014-04-04 20:12:50 +02:00
|
|
|
i=0
|
|
|
|
count=$(wc -l top-1m.csv | awk '{print $1}')
|
|
|
|
while [ $i -lt $count ]
|
2014-01-09 17:52:17 +01:00
|
|
|
do
|
2014-01-09 21:16:40 +01:00
|
|
|
echo processings sites $i to $((i + parallel))
|
2014-04-04 20:12:50 +02:00
|
|
|
for t in $(tail -$(($count - $i)) top-1m.csv | head -$parallel |cut -d ',' -f 2)
|
2014-01-09 17:52:17 +01:00
|
|
|
do
|
2014-05-08 02:03:50 +02:00
|
|
|
(scan_hostname $t)&
|
2014-01-09 17:52:17 +01:00
|
|
|
done
|
2014-01-09 21:16:40 +01:00
|
|
|
i=$(( i + parallel))
|
2014-04-04 20:12:50 +02:00
|
|
|
wait_for_jobs $max_bg
|
2014-01-09 17:52:17 +01:00
|
|
|
done
|
2014-04-04 20:12:50 +02:00
|
|
|
wait
|