mirror of
https://github.com/drwetter/testssl.sh.git
synced 2025-01-06 00:39:44 +01:00
- FIX (regression): -V
- logic of some ENV variables changed (attention!) - included some ENV as long options (not in the help yet) - decentralized http check for breach - if openssl is not executable it bails out better now - help function now exits
This commit is contained in:
parent
1043c40a60
commit
683e9dccab
144
testssl.sh
144
testssl.sh
@ -45,19 +45,20 @@ SWCONTACT="dirk aet testssl dot sh"
|
|||||||
# need all those features. Thus it's highly recommended to use the suppied binaries.
|
# need all those features. Thus it's highly recommended to use the suppied binaries.
|
||||||
# Except on-available local ciphers you'll get a warning about missing features
|
# Except on-available local ciphers you'll get a warning about missing features
|
||||||
|
|
||||||
|
|
||||||
# following variables make use of $ENV, e.g. OPENSSL=<myprivate_path_to_openssl> ./testssl.sh <host>
|
# following variables make use of $ENV, e.g. OPENSSL=<myprivate_path_to_openssl> ./testssl.sh <host>
|
||||||
|
# 0 is true here (if a 1/- switch)
|
||||||
|
#
|
||||||
COLOR=${COLOR:-2} # 2: Full color, 1: b/w+positioning, 0: no ESC at all
|
COLOR=${COLOR:-2} # 2: Full color, 1: b/w+positioning, 0: no ESC at all
|
||||||
SHOW_LOC_CIPH=${SHOW_LOC_CIPH:-0} # determines whether the client side ciphers are displayed at all (makes no sense normally)
|
SHOW_LOC_CIPH=${SHOW_LOC_CIPH:-1} # will client side ciphers displayed before an individual test (makes no sense normally)
|
||||||
SHOW_EACH_C=${SHOW_EACH_C:-0} # where individual ciphers are tested show just the positively ones tested
|
SHOW_EACH_C=${SHOW_EACH_C:-0} # where individual ciphers are tested show just the positively ones tested #FIXME: wrong value
|
||||||
SNEAKY=${SNEAKY:-1} # if zero: the referer and useragent we leave while checking the http header is just usual
|
SNEAKY=${SNEAKY:-1} # if zero: the referer and useragent we leave while checking the http header is just usual
|
||||||
SSL_NATIVE=${SSL_NATIVE:-0} # we do per default bash sockets!
|
SSL_NATIVE=${SSL_NATIVE:-1} # we do per default bash sockets where possible 0: switch back to native openssl
|
||||||
ASSUMING_HTTP=${ASSUMING_HTTP:-0} # in seldom cases (WAF, old servers/grumpy SSL) the service detection fails. Set to 1 for HTTP
|
ASSUMING_HTTP=${ASSUMING_HTTP:-1} # in seldom cases (WAF, old servers/grumpy SSL) the service detection fails. Set to 0 for forcing HTTP
|
||||||
DEBUG=${DEBUG:-0} # if 1 the temp files won't be erased. 2: list more what's going on (formerly: eq VERBOSE=1),
|
DEBUG=${DEBUG:-0} # if 1 the temp files won't be erased. 2: list more what's going on (formerly: eq VERBOSE=1),
|
||||||
# 3: slight hexdumps + other info, 4: send bytes via sockets, 5: received, 6: whole 9 yards
|
# 3: slight hexdumps + other info, 4: send bytes via sockets, 5: received, 6: whole 9 yards
|
||||||
#FIXME: still to be filled with (more) sense or following to be included:
|
#FIXME: still to be filled with (more) sense or following to be included:
|
||||||
VERBERR=${VERBERR:-1} # 0 means/to be more verbose (some like the errors to be dispayed so that one can tell better
|
VERBERR=${VERBERR:-1} # 0 means to be more verbose (handshake errors to be displayed so that one can tell better
|
||||||
# whether handshake succeeded or not. For errors with individual ciphers you also need to have SHOW_EACH_C=1
|
# whether handshake succeeded or not. While testing individual ciphers you also need to have SHOW_EACH_C=1
|
||||||
|
|
||||||
HEADER_MAXSLEEP=${HEADER_MAXSLEEP:-3} # we wait this long before killing the process to retrieve a service banner / http header
|
HEADER_MAXSLEEP=${HEADER_MAXSLEEP:-3} # we wait this long before killing the process to retrieve a service banner / http header
|
||||||
MAX_WAITSOCK=10 # waiting at max 10 seconds for socket reply
|
MAX_WAITSOCK=10 # waiting at max 10 seconds for socket reply
|
||||||
@ -389,7 +390,7 @@ runs_HTTP() {
|
|||||||
out " $SERVICE, thus skipping HTTP specific checks"
|
out " $SERVICE, thus skipping HTTP specific checks"
|
||||||
ret=0 ;;
|
ret=0 ;;
|
||||||
*) out " Couldn't determine what's running on port $PORT"
|
*) out " Couldn't determine what's running on port $PORT"
|
||||||
if [[ $ASSUMING_HTTP -eq 1 ]]; then
|
if [[ $ASSUMING_HTTP -eq 0 ]]; then
|
||||||
SERVICE=HTTP
|
SERVICE=HTTP
|
||||||
out " -- ASSUMING_HTTP set though"
|
out " -- ASSUMING_HTTP set though"
|
||||||
ret=0
|
ret=0
|
||||||
@ -696,7 +697,6 @@ prettyprint_local() {
|
|||||||
pr_blue "matching word pattern "\"$1\"" (ignore case)";
|
pr_blue "matching word pattern "\"$1\"" (ignore case)";
|
||||||
fi
|
fi
|
||||||
outln "\n"
|
outln "\n"
|
||||||
|
|
||||||
neat_header
|
neat_header
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
@ -710,7 +710,6 @@ prettyprint_local() {
|
|||||||
$OPENSSL ciphers -V 'ALL:COMPLEMENTOFALL:@STRENGTH' | while read hexcode dash ciph sslvers kx auth enc mac export ; do
|
$OPENSSL ciphers -V 'ALL:COMPLEMENTOFALL:@STRENGTH' | while read hexcode dash ciph sslvers kx auth enc mac export ; do
|
||||||
normalize_ciphercode $hexcode
|
normalize_ciphercode $hexcode
|
||||||
neat_list $HEXC $ciph $kx $enc | grep -wai "$arg"
|
neat_list $HEXC $ciph $kx $enc | grep -wai "$arg"
|
||||||
outln
|
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
@ -737,7 +736,7 @@ listciphers() {
|
|||||||
std_cipherlists() {
|
std_cipherlists() {
|
||||||
out "$2 ";
|
out "$2 ";
|
||||||
if listciphers $1; then # is that locally available??
|
if listciphers $1; then # is that locally available??
|
||||||
[ $SHOW_LOC_CIPH = "1" ] && out "local ciphers are: " && sed 's/:/, /g' $TMPFILE
|
[ $SHOW_LOC_CIPH -eq 0 ] && out "local ciphers are: " && sed 's/:/, /g' $TMPFILE
|
||||||
$OPENSSL s_client -cipher "$1" $STARTTLS -connect $NODEIP:$PORT $SNI 2>$TMPFILE >/dev/null </dev/null
|
$OPENSSL s_client -cipher "$1" $STARTTLS -connect $NODEIP:$PORT $SNI 2>$TMPFILE >/dev/null </dev/null
|
||||||
ret=$?
|
ret=$?
|
||||||
[[ $DEBUG -ge 2 ]] && cat $TMPFILE
|
[[ $DEBUG -ge 2 ]] && cat $TMPFILE
|
||||||
@ -839,7 +838,6 @@ test_just_one(){
|
|||||||
$OPENSSL s_client -cipher $ciph $STARTTLS -connect $NODEIP:$PORT $SNI &>$TMPFILE </dev/null
|
$OPENSSL s_client -cipher $ciph $STARTTLS -connect $NODEIP:$PORT $SNI &>$TMPFILE </dev/null
|
||||||
ret=$?
|
ret=$?
|
||||||
neat_list $HEXC $ciph $kx $enc
|
neat_list $HEXC $ciph $kx $enc
|
||||||
|
|
||||||
if [ $ret -eq 0 ]; then
|
if [ $ret -eq 0 ]; then
|
||||||
pr_cyan " available"
|
pr_cyan " available"
|
||||||
else
|
else
|
||||||
@ -960,7 +958,7 @@ runprotocols() {
|
|||||||
|
|
||||||
pr_blue "--> Testing Protocols";
|
pr_blue "--> Testing Protocols";
|
||||||
|
|
||||||
if [ $SSL_NATIVE -eq 1 ] || [ -n "$STARTTLS" ]; then
|
if [ $SSL_NATIVE -eq 0 ] || [ -n "$STARTTLS" ]; then
|
||||||
using_sockets=1
|
using_sockets=1
|
||||||
outln "(via native openssl)\n"
|
outln "(via native openssl)\n"
|
||||||
else
|
else
|
||||||
@ -968,7 +966,7 @@ runprotocols() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
out " SSLv2 ";
|
out " SSLv2 ";
|
||||||
if [ $SSL_NATIVE -eq 1 ] || [ -n "$STARTTLS" ]; then
|
if [ $SSL_NATIVE -eq 0 ] || [ -n "$STARTTLS" ]; then
|
||||||
testprotohelper "-ssl2"
|
testprotohelper "-ssl2"
|
||||||
case $? in
|
case $? in
|
||||||
0) ok 1 1 ;; # pr_red
|
0) ok 1 1 ;; # pr_red
|
||||||
@ -981,7 +979,7 @@ runprotocols() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
out " SSLv3 ";
|
out " SSLv3 ";
|
||||||
if [ $SSL_NATIVE -eq 1 ] || [ -n "$STARTTLS" ]; then
|
if [ $SSL_NATIVE -eq 0 ] || [ -n "$STARTTLS" ]; then
|
||||||
testprotohelper "-ssl3"
|
testprotohelper "-ssl3"
|
||||||
else
|
else
|
||||||
tls_sockets "00" "$TLS_CIPHER"
|
tls_sockets "00" "$TLS_CIPHER"
|
||||||
@ -995,7 +993,7 @@ runprotocols() {
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
out " TLS 1 ";
|
out " TLS 1 ";
|
||||||
#if [ $SSL_NATIVE -eq 1 ] || [ -n "$STARTTLS" ]; then
|
#if [ $SSL_NATIVE -eq 0 ] || [ -n "$STARTTLS" ]; then
|
||||||
testprotohelper "-tls1"
|
testprotohelper "-tls1"
|
||||||
#else
|
#else
|
||||||
#tls_sockets "01" "$TLS_CIPHER"
|
#tls_sockets "01" "$TLS_CIPHER"
|
||||||
@ -1430,7 +1428,7 @@ pfs() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
savedciphers=$(cat $TMPFILE)
|
savedciphers=$(cat $TMPFILE)
|
||||||
[ $SHOW_LOC_CIPH = "1" ] && echo "local ciphers available for testing PFS:" && echo $(cat $TMPFILE)
|
[ $SHOW_LOC_CIPH -eq 0 ] && echo "local ciphers available for testing PFS:" && echo $(cat $TMPFILE)
|
||||||
|
|
||||||
$OPENSSL s_client -cipher 'ECDH:DH' $STARTTLS -connect $NODEIP:$PORT $SNI &>$TMPFILE </dev/null
|
$OPENSSL s_client -cipher 'ECDH:DH' $STARTTLS -connect $NODEIP:$PORT $SNI &>$TMPFILE </dev/null
|
||||||
ret=$?
|
ret=$?
|
||||||
@ -1484,7 +1482,7 @@ rc4() {
|
|||||||
outln
|
outln
|
||||||
pr_blue "--> Checking RC4 Ciphers" ; outln
|
pr_blue "--> Checking RC4 Ciphers" ; outln
|
||||||
$OPENSSL ciphers -V 'RC4:@STRENGTH' >$TMPFILE
|
$OPENSSL ciphers -V 'RC4:@STRENGTH' >$TMPFILE
|
||||||
[ $SHOW_LOC_CIPH = "1" ] && echo "local ciphers available for testing RC4:" && echo $(cat $TMPFILE)
|
[ $SHOW_LOC_CIPH -eq 0 ] && echo "local ciphers available for testing RC4:" && echo $(cat $TMPFILE)
|
||||||
$OPENSSL s_client -cipher $($OPENSSL ciphers RC4) $STARTTLS -connect $NODEIP:$PORT $SNI &>/dev/null </dev/null
|
$OPENSSL s_client -cipher $($OPENSSL ciphers RC4) $STARTTLS -connect $NODEIP:$PORT $SNI &>/dev/null </dev/null
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
pr_litered "\nNOT ok: borken RC4 is being offered!"
|
pr_litered "\nNOT ok: borken RC4 is being offered!"
|
||||||
@ -1535,6 +1533,12 @@ breach() {
|
|||||||
[ $VULN_COUNT -le 1 ] && outln && pr_blue "--> Testing for BREACH (HTTP compression) vulnerability" && outln "\n"
|
[ $VULN_COUNT -le 1 ] && outln && pr_blue "--> Testing for BREACH (HTTP compression) vulnerability" && outln "\n"
|
||||||
pr_bold " BREACH"; out " (CVE-2013-3587) =HTTP Compression "
|
pr_bold " BREACH"; out " (CVE-2013-3587) =HTTP Compression "
|
||||||
|
|
||||||
|
if [[ $SERVICE != "HTTP" ]] ; then
|
||||||
|
pr_litemagenta " Wrong usage: You're not targetting a HTTP service"
|
||||||
|
outln " (how did you get here?)"
|
||||||
|
return 7
|
||||||
|
fi
|
||||||
|
|
||||||
url="$1"
|
url="$1"
|
||||||
[ -z "$url" ] && url="/"
|
[ -z "$url" ] && url="/"
|
||||||
if [ $SNEAKY -eq 0 ] ; then
|
if [ $SNEAKY -eq 0 ] ; then
|
||||||
@ -1578,7 +1582,6 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lucky13() {
|
lucky13() {
|
||||||
#FIXME: to do
|
#FIXME: to do
|
||||||
# CVE-2013-0169
|
# CVE-2013-0169
|
||||||
@ -2521,19 +2524,20 @@ find_openssl_binary() {
|
|||||||
else
|
else
|
||||||
# 2. otherwise try openssl in path of testssl.sh
|
# 2. otherwise try openssl in path of testssl.sh
|
||||||
OPENSSL=$RUN_DIR/openssl
|
OPENSSL=$RUN_DIR/openssl
|
||||||
if [ ! -x $OPENSSL ] ; then
|
if [ ! -x "$OPENSSL" ] ; then
|
||||||
# 3. with arch suffix
|
# 3. with arch suffix
|
||||||
OPENSSL=$RUN_DIR/openssl.$(uname -m)
|
OPENSSL=$RUN_DIR/openssl.$(uname -m)
|
||||||
if [ ! -x $OPENSSL ] ; then
|
if [ ! -x "$OPENSSL" ] ; then
|
||||||
#4. finally: didn't fiond anything, so we take the one propably from system:
|
#4. finally: didn't find anything, so we take the one from the system:
|
||||||
OPENSSL=$(which openssl)
|
OPENSSL=$(which openssl 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! $OPENSSL version -a 2>&1 >/dev/null; then
|
"$OPENSSL" version -a 2>&1 >/dev/null
|
||||||
|
if [ $? -ne 0 ] || [ ! -x "$OPENSSL" ]; then
|
||||||
outln
|
outln
|
||||||
pr_magentaln "FATAL: cannot exec $OPENSSL"
|
pr_magentaln "FATAL: cannot exec or find any openssl binary "
|
||||||
exit -1
|
exit -1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -2667,7 +2671,7 @@ For HTML output you need to pipe through "aha" (Ansi HTML Adapter: github.com/th
|
|||||||
|
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
return $?
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3012,7 +3016,6 @@ initialize_globals() {
|
|||||||
do_heartbleed=false
|
do_heartbleed=false
|
||||||
do_mx_allentries=false
|
do_mx_allentries=false
|
||||||
do_pfs=false
|
do_pfs=false
|
||||||
do_prettyprint_local=false
|
|
||||||
do_protocols=false
|
do_protocols=false
|
||||||
do_rc4=false
|
do_rc4=false
|
||||||
do_renego=false
|
do_renego=false
|
||||||
@ -3049,6 +3052,35 @@ set_scanning_defaults() {
|
|||||||
VULN_COUNT=10
|
VULN_COUNT=10
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug_globals() {
|
||||||
|
echo "do_allciphers: $do_allciphers"
|
||||||
|
echo "do_beast: $do_beast"
|
||||||
|
echo "do_breach: $do_breach"
|
||||||
|
echo "do_ccs_injection: $do_ccs_injection"
|
||||||
|
echo "do_cipher_per_proto: $do_cipher_per_proto"
|
||||||
|
echo "do_crime: $do_crime"
|
||||||
|
echo "do_freak: $do_freak"
|
||||||
|
echo "do_header: $do_header"
|
||||||
|
echo "do_heartbleed: $do_heartbleed"
|
||||||
|
echo "do_mx_allentries $do_mx_allentries"
|
||||||
|
echo "do_pfs: $do_pfs"
|
||||||
|
echo "do_protocols: $do_protocols"
|
||||||
|
echo "do_rc4: $do_rc4"
|
||||||
|
echo "do_renego: $do_renego"
|
||||||
|
echo "do_run_std_cipherlists: $do_run_std_cipherlists"
|
||||||
|
echo "do_server_defaults: $do_server_defaults"
|
||||||
|
echo "do_server_preference: $do_server_preference"
|
||||||
|
echo "do_spdy: $do_spdy"
|
||||||
|
echo "do_ssl_poodle: $do_ssl_poodle"
|
||||||
|
echo "do_starttls: $do_starttls"
|
||||||
|
echo "do_test_just_one: $do_test_just_one"
|
||||||
|
echo "do_tls_sockets: $do_tls_sockets"
|
||||||
|
|
||||||
|
echo "URL: $URI"
|
||||||
|
read a
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Parses options
|
# Parses options
|
||||||
startup() {
|
startup() {
|
||||||
@ -3061,8 +3093,10 @@ startup() {
|
|||||||
exit 0;;
|
exit 0;;
|
||||||
--mx)
|
--mx)
|
||||||
do_mx_allentries=true;;
|
do_mx_allentries=true;;
|
||||||
-V|--local)
|
-V|--local)
|
||||||
do_prettyprint_local=true;;
|
initialize_engine # GOST support-
|
||||||
|
prettyprint_local "$2"
|
||||||
|
exit $? ;;
|
||||||
-x|--single-ciphers-test)
|
-x|--single-ciphers-test)
|
||||||
do_test_just_one=true
|
do_test_just_one=true
|
||||||
single_cipher=$2
|
single_cipher=$2
|
||||||
@ -3076,8 +3110,8 @@ startup() {
|
|||||||
-E|--cipher-per-proto)
|
-E|--cipher-per-proto)
|
||||||
do_cipher_per_proto=true;;
|
do_cipher_per_proto=true;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
help
|
help 0
|
||||||
exit 0;;
|
;;
|
||||||
-p|--protocols)
|
-p|--protocols)
|
||||||
do_protocols=true
|
do_protocols=true
|
||||||
do_spdy=true;;
|
do_spdy=true;;
|
||||||
@ -3129,23 +3163,40 @@ startup() {
|
|||||||
fi
|
fi
|
||||||
shift
|
shift
|
||||||
do_tls_sockets=true
|
do_tls_sockets=true
|
||||||
echo $TLS_LOW_BYTE $HEX_CIPHER
|
#echo $TLS_LOW_BYTE $HEX_CIPHER
|
||||||
;;
|
;;
|
||||||
|
--assuming-http|--assuming_http)
|
||||||
|
ASSUMING_HTTP=0 ;;
|
||||||
|
--sneaky)
|
||||||
|
SNEAKY=0 ;;
|
||||||
|
--color)
|
||||||
|
COLOR=$2
|
||||||
|
if [ $COLOR -ne 0 ] && [ $COLOR -ne 1 ] && [ $COLOR -ne 2 ] ; then
|
||||||
|
COLOR=2
|
||||||
|
pr_magentaln "$0: unrecognized color: $2" 1>&2
|
||||||
|
help 1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--ssl_native|--ssl-native)
|
||||||
|
SSL_NATIVE=0 ;;
|
||||||
(--) shift
|
(--) shift
|
||||||
break;;
|
break;;
|
||||||
(-*) echo "$0: unrecognized option $1" 1>&2; exit 1;;
|
(-*) pr_magentaln "$0: unrecognized option $1" 1>&2;
|
||||||
(*) break;;
|
help 1 ;;
|
||||||
|
(*) break ;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
# Show usage if no options were specified
|
# Show usage if no options were specified
|
||||||
if [ -z $1 ]; then
|
if [ -z $1 ]; then
|
||||||
help
|
help 0
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
URI=$1
|
URI=$1
|
||||||
|
|
||||||
|
#debug_globals
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3172,10 +3223,6 @@ main() {
|
|||||||
|
|
||||||
# OK, let's roll..
|
# OK, let's roll..
|
||||||
${do_mx_allentries} && { mx_allentries "${URI}"; ret=$(($? + ret)); }
|
${do_mx_allentries} && { mx_allentries "${URI}"; ret=$(($? + ret)); }
|
||||||
if ${do_prettyprint_local}; then
|
|
||||||
initialize_engine # GOST support-
|
|
||||||
prettyprint_local "${URI}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
${do_test_just_one} && test_just_one ${single_cipher}
|
${do_test_just_one} && test_just_one ${single_cipher}
|
||||||
${do_starttls} && { starttls ${protocol}; ret=$(($? + ret)); }
|
${do_starttls} && { starttls ${protocol}; ret=$(($? + ret)); }
|
||||||
@ -3210,31 +3257,20 @@ main() {
|
|||||||
${do_ccs_injection} && { ccs_injection; ret=$(($? + ret)); }
|
${do_ccs_injection} && { ccs_injection; ret=$(($? + ret)); }
|
||||||
${do_renego} && { renego; ret=$(($? + ret)); }
|
${do_renego} && { renego; ret=$(($? + ret)); }
|
||||||
${do_crime} && { crime; ret=$(($? + ret)); }
|
${do_crime} && { crime; ret=$(($? + ret)); }
|
||||||
if ${do_breach}; then
|
${do_breach} && { breach "$URL_PATH" ; ret=$(($? + ret)); }
|
||||||
#TODO: refactor this into breach()
|
|
||||||
if [[ $SERVICE != "HTTP" ]] ; then
|
|
||||||
pr_litemagentaln " Wrong usage: You're not targetting a HTTP service"
|
|
||||||
ret=$((2 + ret))
|
|
||||||
else
|
|
||||||
breach "$URL_PATH"
|
|
||||||
ret=$(($? + ret))
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
${do_ssl_poodle} && { ssl_poodle; ret=$(($? + ret)); }
|
${do_ssl_poodle} && { ssl_poodle; ret=$(($? + ret)); }
|
||||||
${do_freak} && { freak; ret=$(($? + ret)); }
|
${do_freak} && { freak; ret=$(($? + ret)); }
|
||||||
${do_beast} && { beast; ret=$(($? + ret)); }
|
${do_beast} && { beast; ret=$(($? + ret)); }
|
||||||
|
|
||||||
${do_rc4} && { rc4; ret=$(($? + ret)); }
|
${do_rc4} && { rc4; ret=$(($? + ret)); }
|
||||||
|
${do_pfs} && { pfs; ret=$(($? + ret)); }
|
||||||
|
|
||||||
${do_tls_sockets} && { tls_sockets "$TLS_LOW_BYTE" "$HEX_CIPHER"; ret=$(($? + ret)); }
|
${do_tls_sockets} && { tls_sockets "$TLS_LOW_BYTE" "$HEX_CIPHER"; ret=$(($? + ret)); }
|
||||||
|
|
||||||
${do_pfs} && { pfs; ret=$(($? + ret)); }
|
|
||||||
|
|
||||||
exit $ret
|
exit $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
||||||
# $Id: testssl.sh,v 1.223 2015/04/10 13:15:46 dirkw Exp $
|
# $Id: testssl.sh,v 1.224 2015/04/13 20:55:38 dirkw Exp $
|
||||||
# vim:ts=5:sw=5
|
# vim:ts=5:sw=5
|
||||||
|
Loading…
Reference in New Issue
Block a user