vpn 세팅 스크립트 수정 9

This commit is contained in:
2026-07-13 17:05:35 +09:00
parent 13504848d0
commit 8503a7559a
+30 -14
View File
@@ -136,7 +136,7 @@ runs:
trap cleanup EXIT
totp() {
python3 - "$OTP_SEED" "$OTP_SEED_FORMAT" <<'PY'
python3 - "$OTP_SEED" "$OTP_SEED_FORMAT" "${1:-0}" <<'PY'
import base64
import hashlib
import hmac
@@ -144,7 +144,7 @@ runs:
import sys
import time
seed, fmt = sys.argv[1], sys.argv[2]
seed, fmt, offset_windows = sys.argv[1], sys.argv[2], int(sys.argv[3])
seed = "".join(seed.split())
def decode_base32(value):
@@ -169,7 +169,7 @@ runs:
else:
raise SystemExit(f"잘못된 otp-seed-format: {fmt}")
counter = int(time.time() // 30)
counter = int(time.time() // 30) + offset_windows
digest = hmac.new(raw, struct.pack(">Q", counter), hashlib.sha1).digest()
offset = digest[-1] & 0x0f
code = (struct.unpack(">I", digest[offset:offset + 4])[0] & 0x7fffffff) % 1000000
@@ -215,22 +215,27 @@ runs:
exit 1
fi
while [ $(( $(date +%s) % 30 )) -gt 22 ]; do
sleep 1
done
curl_common -L -b "$COOKIE_JAR" -c "$COOKIE_JAR" \
-X POST "$VPN_HOST/my.policy" \
--data-urlencode "ga_code_attempt=$(totp)" \
--data-urlencode "vhost=standard" \
-o "$WORKDIR/03-webtop.html"
host_no_scheme="${VPN_HOST#https://}"
host_no_scheme="${host_no_scheme#http://}"
host_no_scheme="${host_no_scheme%%/*}"
webtop_path="/vdesk/webtop.eui?z=$RESOURCE_NAME&webtop=/Common/dw_webtop&webtop_type=webtop_na_only"
TOKEN_HEADERS="$WORKDIR/04-token.headers"
otc=""
while [ $(( $(date +%s) % 30 )) -gt 22 ]; do
sleep 1
done
for otp_offset in 0 -1 1; do
echo "OTP 제출 시도 (time-window offset=${otp_offset})"
rm -f "$TOKEN_HEADERS" "$WORKDIR/04-token.body"
curl_common -L -b "$COOKIE_JAR" -c "$COOKIE_JAR" \
-X POST "$VPN_HOST/my.policy" \
--data-urlencode "ga_code_attempt=$(totp "$otp_offset")" \
--data-urlencode "vhost=standard" \
-o "$WORKDIR/03-webtop-${otp_offset}.html"
curl_common -b "$COOKIE_JAR" -c "$COOKIE_JAR" \
-D "$TOKEN_HEADERS" \
-H "X-Requested-With: XMLHttpRequest" \
@@ -243,9 +248,20 @@ runs:
awk 'BEGIN{IGNORECASE=1} /^X-ACCESS-Session-Token:/ { sub(/\r$/, ""); print substr($0, index($0, ":") + 2) }' "$TOKEN_HEADERS" |
tail -n 1
)"
if [ -n "$otc" ]; then
break
fi
if ! grep -q "ga_code_attempt" "$WORKDIR/03-webtop-${otp_offset}.html"; then
break
fi
done
if [ -z "$otc" ]; then
echo "F5 session token 획득 실패"
summarize_html "$WORKDIR/03-webtop.html"
for page in "$WORKDIR"/03-webtop-*.html; do
summarize_html "$page"
done
summarize_html "$WORKDIR/04-token.body"
exit 1
fi