gpt4 book ai didi

Bash 退出问题

转载 作者:行者123 更新时间:2023-11-29 09:46:29 25 4
gpt4 key购买 nike

当前脚本 (scan.sh) 花费太多时间与下面列出的任何一种密码进行协商,并且进程在尝试协商时停滞不前。

$ openssl ciphers -V | grep "CBC3"

0xC0,0x12 - ECDHE-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=RSA Enc=3DES(168) Mac=SHA1
0xC0,0x08 - ECDHE-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=3DES(168) Mac=SHA1
0x00,0x16 - EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
0x00,0x13 - EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1
0xC0,0x0D - ECDH-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=3DES(168) Mac=SHA1
0xC0,0x03 - ECDH-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=3DES(168) Mac=SHA1
0x00,0x0A - DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1

运行命令:

$./scan.sh X.X.X.X

我如何退出任何延迟密码并移动到下一个密码进行协商?请提出任何建议,我对 Bash 不熟悉。

#scan.sh

#!/usr/bin/env bash

# OpenSSL requires the port number.
SERVER=$1:443
DELAY=1
ciphers=$(openssl ciphers -V | grep "CBC3" | awk '{print $3}')

for cipher in ${ciphers[@]}
do
echo -n Testing $cipher...
result=$(echo -n | openssl s_client -cipher "$cipher" -connect $SERVER 2>&1)
if [[ "$result" =~ ":error:" ]] ; then
error=$(echo -n $result | cut -d':' -f6)
echo NO \($error\)
else
if [[ "$result" =~ "Cipher is ${cipher}" || "$result" =~ "Cipher :" ]] ; then
echo YES
else
echo UNKNOWN RESPONSE
echo $result
fi
fi
sleep $DELAY
done

最佳答案

首先,您可以将 ciphers 设为如下所示的数组,这样看起来更整洁吗?

ciphers=( $(openssl ciphers -V | awk '/CBC3/{print $3}') )

然后做类似的事情

result="$(timeout 10s openssl s_client -cipher "${cipher[@]" -connect "$SERVER" 2>&1)" 

注意事项

  • timeout 10s 等待命令完成 10s 否则终止它
  • 双引号变量,如"$SERVER",并使脚本变量小写,这样它就不会与系统变量冲突。

关于Bash 退出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39193081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com