|
|
|
@ -1042,6 +1042,7 @@ curl_test()
|
|
|
|
|
}
|
|
|
|
|
ws_curl_test()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
# $1 - ws start function
|
|
|
|
|
# $2 - test function
|
|
|
|
|
# $3 - domain
|
|
|
|
@ -1078,11 +1079,14 @@ pktws_curl_test()
|
|
|
|
|
# $1 - test function
|
|
|
|
|
# $2 - domain
|
|
|
|
|
# $3,$4,$5, ... - nfqws/dvtws params
|
|
|
|
|
echo - checking $PKTWSD ${WF:+$WF }$3 $4 $5 $6 $7 $8 $9${PKTWS_EXTRA:+ $PKTWS_EXTRA}${PKTWS_EXTRA_1:+ "$PKTWS_EXTRA_1"}${PKTWS_EXTRA_2:+ "$PKTWS_EXTRA_2"}${PKTWS_EXTRA_3:+ "$PKTWS_EXTRA_3"}${PKTWS_EXTRA_4:+ "$PKTWS_EXTRA_4"}${PKTWS_EXTRA_5:+ "$PKTWS_EXTRA_5"}${PKTWS_EXTRA_6:+ "$PKTWS_EXTRA_6"}${PKTWS_EXTRA_7:+ "$PKTWS_EXTRA_7"}${PKTWS_EXTRA_8:+ "$PKTWS_EXTRA_8"}${PKTWS_EXTRA_9:+ "$PKTWS_EXTRA_9"}
|
|
|
|
|
ws_curl_test pktws_start "$@"${PKTWS_EXTRA:+ $PKTWS_EXTRA}${PKTWS_EXTRA_1:+ "$PKTWS_EXTRA_1"}${PKTWS_EXTRA_2:+ "$PKTWS_EXTRA_2"}${PKTWS_EXTRA_3:+ "$PKTWS_EXTRA_3"}${PKTWS_EXTRA_4:+ "$PKTWS_EXTRA_4"}${PKTWS_EXTRA_5:+ "$PKTWS_EXTRA_5"}${PKTWS_EXTRA_6:+ "$PKTWS_EXTRA_6"}${PKTWS_EXTRA_7:+ "$PKTWS_EXTRA_7"}${PKTWS_EXTRA_8:+ "$PKTWS_EXTRA_8"}${PKTWS_EXTRA_9:+ "$PKTWS_EXTRA_9"}
|
|
|
|
|
local testf=$1 dom=$2 strategy code=$?
|
|
|
|
|
local testf=$1 dom=$2 strategy code
|
|
|
|
|
|
|
|
|
|
shift; shift;
|
|
|
|
|
echo - checking $PKTWSD ${WF:+$WF }${PKTWS_EXTRA_PRE:+$PKTWS_EXTRA_PRE }${PKTWS_EXTRA_PRE_1:+"$PKTWS_EXTRA_PRE_1" }${PKTWS_EXTRA_PRE_2:+"$PKTWS_EXTRA_PRE_2" }${PKTWS_EXTRA_PRE_3:+"$PKTWS_EXTRA_PRE_3" }${PKTWS_EXTRA_PRE_4:+"$PKTWS_EXTRA_PRE_4" }${PKTWS_EXTRA_PRE_5:+"$PKTWS_EXTRA_PRE_5" }${PKTWS_EXTRA_PRE_6:+"$PKTWS_EXTRA_PRE_6" }${PKTWS_EXTRA_PRE_7:+"$PKTWS_EXTRA_PRE_7" }${PKTWS_EXTRA_PRE_8:+"$PKTWS_EXTRA_PRE_8" }${PKTWS_EXTRA_PRE_9:+"$PKTWS_EXTRA_PRE_9" }$@${PKTWS_EXTRA:+ $PKTWS_EXTRA}${PKTWS_EXTRA_1:+ "$PKTWS_EXTRA_1"}${PKTWS_EXTRA_2:+ "$PKTWS_EXTRA_2"}${PKTWS_EXTRA_3:+ "$PKTWS_EXTRA_3"}${PKTWS_EXTRA_4:+ "$PKTWS_EXTRA_4"}${PKTWS_EXTRA_5:+ "$PKTWS_EXTRA_5"}${PKTWS_EXTRA_6:+ "$PKTWS_EXTRA_6"}${PKTWS_EXTRA_7:+ "$PKTWS_EXTRA_7"}${PKTWS_EXTRA_8:+ "$PKTWS_EXTRA_8"}${PKTWS_EXTRA_9:+ "$PKTWS_EXTRA_9"}
|
|
|
|
|
ws_curl_test pktws_start $testf $dom ${PKTWS_EXTRA_PRE:+$PKTWS_EXTRA_PRE }${PKTWS_EXTRA_PRE_1:+"$PKTWS_EXTRA_PRE_1" }${PKTWS_EXTRA_PRE_2:+"$PKTWS_EXTRA_PRE_2" }${PKTWS_EXTRA_PRE_3:+"$PKTWS_EXTRA_PRE_3" }${PKTWS_EXTRA_PRE_4:+"$PKTWS_EXTRA_PRE_4" }${PKTWS_EXTRA_PRE_5:+"$PKTWS_EXTRA_PRE_5" }${PKTWS_EXTRA_PRE_6:+"$PKTWS_EXTRA_PRE_6" }${PKTWS_EXTRA_PRE_7:+"$PKTWS_EXTRA_PRE_7" }${PKTWS_EXTRA_PRE_8:+"$PKTWS_EXTRA_PRE_8" }${PKTWS_EXTRA_PRE_9:+"$PKTWS_EXTRA_PRE_9" }"$@"${PKTWS_EXTRA:+ $PKTWS_EXTRA}${PKTWS_EXTRA_1:+ "$PKTWS_EXTRA_1"}${PKTWS_EXTRA_2:+ "$PKTWS_EXTRA_2"}${PKTWS_EXTRA_3:+ "$PKTWS_EXTRA_3"}${PKTWS_EXTRA_4:+ "$PKTWS_EXTRA_4"}${PKTWS_EXTRA_5:+ "$PKTWS_EXTRA_5"}${PKTWS_EXTRA_6:+ "$PKTWS_EXTRA_6"}${PKTWS_EXTRA_7:+ "$PKTWS_EXTRA_7"}${PKTWS_EXTRA_8:+ "$PKTWS_EXTRA_8"}${PKTWS_EXTRA_9:+ "$PKTWS_EXTRA_9"}
|
|
|
|
|
|
|
|
|
|
code=$?
|
|
|
|
|
[ "$code" = 0 ] && {
|
|
|
|
|
shift; shift;
|
|
|
|
|
strategy="$@"
|
|
|
|
|
strategy_append_extra_pktws
|
|
|
|
|
report_append "ipv${IPV} $dom $testf : $PKTWSD ${WF:+$WF }$strategy"
|
|
|
|
@ -1092,11 +1096,11 @@ pktws_curl_test()
|
|
|
|
|
|
|
|
|
|
strategy_append_extra_pktws()
|
|
|
|
|
{
|
|
|
|
|
strategy="${strategy:+$strategy${PKTWS_EXTRA:+ $PKTWS_EXTRA}${PKTWS_EXTRA_1:+ "$PKTWS_EXTRA_1"}${PKTWS_EXTRA_2:+ "$PKTWS_EXTRA_2"}${PKTWS_EXTRA_3:+ "$PKTWS_EXTRA_3"}${PKTWS_EXTRA_4:+ "$PKTWS_EXTRA_4"}${PKTWS_EXTRA_5:+ "$PKTWS_EXTRA_5"}${PKTWS_EXTRA_6:+ "$PKTWS_EXTRA_6"}${PKTWS_EXTRA_7:+ "$PKTWS_EXTRA_7"}${PKTWS_EXTRA_8:+ "$PKTWS_EXTRA_8"}${PKTWS_EXTRA_9:+ "$PKTWS_EXTRA_9"}}"
|
|
|
|
|
strategy="${strategy:+${PKTWS_EXTRA_PRE:+$PKTWS_EXTRA_PRE }${PKTWS_EXTRA_PRE_1:+"$PKTWS_EXTRA_PRE_1" }${PKTWS_EXTRA_PRE_2:+"$PKTWS_EXTRA_PRE_2" }${PKTWS_EXTRA_PRE_3:+"$PKTWS_EXTRA_PRE_3" }${PKTWS_EXTRA_PRE_4:+"$PKTWS_EXTRA_PRE_4" }${PKTWS_EXTRA_PRE_5:+"$PKTWS_EXTRA_PRE_5" }${PKTWS_EXTRA_PRE_6:+"$PKTWS_EXTRA_PRE_6" }${PKTWS_EXTRA_PRE_7:+"$PKTWS_EXTRA_PRE_7" }${PKTWS_EXTRA_PRE_8:+"$PKTWS_EXTRA_PRE_8" }${PKTWS_EXTRA_PRE_9:+"$PKTWS_EXTRA_PRE_9" }$strategy${PKTWS_EXTRA:+ $PKTWS_EXTRA}${PKTWS_EXTRA_1:+ "$PKTWS_EXTRA_1"}${PKTWS_EXTRA_2:+ "$PKTWS_EXTRA_2"}${PKTWS_EXTRA_3:+ "$PKTWS_EXTRA_3"}${PKTWS_EXTRA_4:+ "$PKTWS_EXTRA_4"}${PKTWS_EXTRA_5:+ "$PKTWS_EXTRA_5"}${PKTWS_EXTRA_6:+ "$PKTWS_EXTRA_6"}${PKTWS_EXTRA_7:+ "$PKTWS_EXTRA_7"}${PKTWS_EXTRA_8:+ "$PKTWS_EXTRA_8"}${PKTWS_EXTRA_9:+ "$PKTWS_EXTRA_9"}}"
|
|
|
|
|
}
|
|
|
|
|
strategy_append_extra_tpws()
|
|
|
|
|
{
|
|
|
|
|
strategy="${strategy:+$strategy${TPWS_EXTRA:+ $TPWS_EXTRA}${TPWS_EXTRA_1:+ "$TPWS_EXTRA_1"}${TPWS_EXTRA_2:+ "$TPWS_EXTRA_2"}${TPWS_EXTRA_3:+ "$TPWS_EXTRA_3"}${TPWS_EXTRA_4:+ "$TPWS_EXTRA_4"}${TPWS_EXTRA_5:+ "$TPWS_EXTRA_5"}${TPWS_EXTRA_6:+ "$TPWS_EXTRA_6"}${TPWS_EXTRA_7:+ "$TPWS_EXTRA_7"}${TPWS_EXTRA_8:+ "$TPWS_EXTRA_8"}${TPWS_EXTRA_9:+ "$TPWS_EXTRA_9"}}"
|
|
|
|
|
strategy="${strategy:+${PKTWS_EXTRA_PRE:+$PKTWS_EXTRA_PRE }${PKTWS_EXTRA_PRE_1:+"$PKTWS_EXTRA_PRE_1" }${PKTWS_EXTRA_PRE_2:+"$PKTWS_EXTRA_PRE_2" }${PKTWS_EXTRA_PRE_3:+"$PKTWS_EXTRA_PRE_3" }${PKTWS_EXTRA_PRE_4:+"$PKTWS_EXTRA_PRE_4" }${PKTWS_EXTRA_PRE_5:+"$PKTWS_EXTRA_PRE_5" }${PKTWS_EXTRA_PRE_6:+"$PKTWS_EXTRA_PRE_6" }${PKTWS_EXTRA_PRE_7:+"$PKTWS_EXTRA_PRE_7" }${PKTWS_EXTRA_PRE_8:+"$PKTWS_EXTRA_PRE_8" }${PKTWS_EXTRA_PRE_9:+"$PKTWS_EXTRA_PRE_9" }$strategy${TPWS_EXTRA:+ $TPWS_EXTRA}${TPWS_EXTRA_1:+ "$TPWS_EXTRA_1"}${TPWS_EXTRA_2:+ "$TPWS_EXTRA_2"}${TPWS_EXTRA_3:+ "$TPWS_EXTRA_3"}${TPWS_EXTRA_4:+ "$TPWS_EXTRA_4"}${TPWS_EXTRA_5:+ "$TPWS_EXTRA_5"}${TPWS_EXTRA_6:+ "$TPWS_EXTRA_6"}${TPWS_EXTRA_7:+ "$TPWS_EXTRA_7"}${TPWS_EXTRA_8:+ "$TPWS_EXTRA_8"}${TPWS_EXTRA_9:+ "$TPWS_EXTRA_9"}}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
xxxws_curl_test_update()
|
|
|
|
@ -1189,15 +1193,19 @@ pktws_curl_test_update_vary()
|
|
|
|
|
# $4 - desync mode
|
|
|
|
|
# $5,$6,... - strategy
|
|
|
|
|
|
|
|
|
|
local testf=$1 sec=$2 domain=$3 desync=$4 proto zerofake= tlsmod= splits= pos fake ret=1
|
|
|
|
|
local testf=$1 sec=$2 domain=$3 desync=$4 proto splits= pos fake ret=1
|
|
|
|
|
local fake1=- fake2=- fake3=-
|
|
|
|
|
|
|
|
|
|
shift; shift; shift; shift
|
|
|
|
|
|
|
|
|
|
proto=http
|
|
|
|
|
[ "$sec" = 0 ] || proto=tls
|
|
|
|
|
test_has_fake $desync && {
|
|
|
|
|
zerofake="--dpi-desync-fake-$proto=0x00000000"
|
|
|
|
|
[ "$sec" = 0 ] || tlsmod="--dpi-desync-fake-tls-mod=rnd,dupsid,rndsni,padencap"
|
|
|
|
|
fake1="--dpi-desync-fake-$proto=0x00000000"
|
|
|
|
|
[ "$sec" = 0 ] || {
|
|
|
|
|
fake2="--dpi-desync-fake-tls=0x00000000 --dpi-desync-fake-tls=! --dpi-desync-fake-tls-mod=rnd,rndsni,dupsid"
|
|
|
|
|
fake3="--dpi-desync-fake-tls-mod=rnd,dupsid,rndsni,padencap"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if test_has_fakedsplit $desync ; then
|
|
|
|
|
splits="method+2 midsld"
|
|
|
|
@ -1206,7 +1214,8 @@ pktws_curl_test_update_vary()
|
|
|
|
|
splits="method+2 midsld"
|
|
|
|
|
[ "$sec" = 0 ] || splits="1 midsld 1,midsld"
|
|
|
|
|
fi
|
|
|
|
|
for fake in '' $zerofake $tlsmod ; do
|
|
|
|
|
for fake in '' "$fake1" "$fake2" "$fake3" ; do
|
|
|
|
|
[ "$fake" = "-" ] && continue
|
|
|
|
|
if [ -n "$splits" ]; then
|
|
|
|
|
for pos in $splits ; do
|
|
|
|
|
pktws_curl_test_update $testf $domain --dpi-desync=$desync "$@" --dpi-desync-split-pos=$pos $fake && {
|
|
|
|
@ -1231,14 +1240,14 @@ pktws_check_domain_http_bypass_()
|
|
|
|
|
# $2 - encrypted test : 0 = plain, 1 - encrypted with server reply risk, 2 - encrypted without server reply risk
|
|
|
|
|
# $3 - domain
|
|
|
|
|
|
|
|
|
|
local ok ttls s f f2 e desync pos fooling frag sec="$2" delta splits
|
|
|
|
|
local ok ttls s f f2 e desync pos fooling frag sec="$2" delta orig splits
|
|
|
|
|
local need_split need_disorder need_fakedsplit need_fakeddisorder need_fake need_wssize
|
|
|
|
|
local splits_http='method+2 midsld method+2,midsld'
|
|
|
|
|
local splits_tls='2 1 sniext+1 sniext+4 host+1 midsld 1,midsld 1,sniext+1,host+1,midsld-2,midsld,midsld+2,endhost-1'
|
|
|
|
|
|
|
|
|
|
[ "$sec" = 0 ] && {
|
|
|
|
|
for s in '--hostcase' '--hostspell=hoSt' '--hostnospace' '--domcase' '--methodeol'; do
|
|
|
|
|
pktws_curl_test_update $1 $3 $s
|
|
|
|
|
pktws_curl_test_update $1 $3 $s && [ "$SCANLEVEL" = quick ] && return
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1303,10 +1312,21 @@ pktws_check_domain_http_bypass_()
|
|
|
|
|
f="$f badseq datanoack md5sig"
|
|
|
|
|
[ "$IPV" = 6 ] && f="$f hopbyhop hopbyhop2"
|
|
|
|
|
for fooling in $f; do
|
|
|
|
|
ok=0
|
|
|
|
|
pktws_curl_test_update_vary $1 $2 $3 $desync --dpi-desync-fooling=$fooling $e && {
|
|
|
|
|
warn_fool $fooling $desync
|
|
|
|
|
[ "$SCANLEVEL" = quick ] && return
|
|
|
|
|
need_wssize=0
|
|
|
|
|
ok=1
|
|
|
|
|
}
|
|
|
|
|
[ "$fooling" = md5sig ] && {
|
|
|
|
|
[ "$ok" = 1 -a "$SCANLEVEL" != force ] && continue
|
|
|
|
|
pktws_curl_test_update_vary $1 $2 $3 $desync --dpi-desync-fooling=$fooling --dup=1 --dup-cutoff=n2 --dup-fooling=md5sig $e && {
|
|
|
|
|
warn_fool $fooling $desync
|
|
|
|
|
echo "HINT ! To avoid possible 1 sec server response delay use --dup-ttl or --dup-autottl and block ICMP time exceeded"
|
|
|
|
|
[ "$SCANLEVEL" = quick ] && return
|
|
|
|
|
need_wssize=0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
done
|
|
|
|
|
done
|
|
|
|
@ -1369,8 +1389,11 @@ pktws_check_domain_http_bypass_()
|
|
|
|
|
[ "$need_fakedsplit" = 0 ] && contains "$desync" fakedsplit && continue
|
|
|
|
|
[ "$need_fakeddisorder" = 0 ] && contains "$desync" fakeddisorder && continue
|
|
|
|
|
ok=0
|
|
|
|
|
for delta in 1 2 3 4 5; do
|
|
|
|
|
pktws_curl_test_update_vary $1 $2 $3 $desync --dpi-desync-ttl=1 --dpi-desync-autottl=$delta $e && ok=1
|
|
|
|
|
for orig in '' 1 2 3; do
|
|
|
|
|
for delta in 1 2 3 4 5; do
|
|
|
|
|
pktws_curl_test_update_vary $1 $2 $3 $desync ${orig:+--orig-autottl=+$orig} --dpi-desync-ttl=1 --dpi-desync-autottl=-$delta $e && ok=1
|
|
|
|
|
done
|
|
|
|
|
[ "$ok" = 1 -a "$SCANLEVEL" != force ] && break
|
|
|
|
|
done
|
|
|
|
|
[ "$ok" = 1 ] &&
|
|
|
|
|
{
|
|
|
|
|