【问题标题】:BASH port knock with combinationBASH 端口敲与组合
【发布时间】:2015-12-24 23:14:51
【问题描述】:

我正在尝试使用 bash 生成带有 {1..3} 的所有可能组合的端口敲击。在过去的 48 小时里,我一直在试图想出一个答案,并最终寻求一些帮助。

我当前的代码如下:

#!/bin/bash
HOST=$1
COUNTER=0
while [ COUNTER -lt 100 ];do
    shift
    for PORT in "$@"
    do
        nmap -Pn --host_timeout 100 --max-retries 0 -p $PORT $HOST
let COUNTER=COUNTER+1
    done
done

#Syntax knock.sh x.x.x.x 1 2 3

【问题讨论】:

  • shift 不应该在while 循环之前吗?
  • 是的,这是我的一个错误。我还使用了 set={1..3} group=3 并修改了 for 循环如下: for ((i=1; i
  • 什么是“{1..3} 的所有可能组合”?它与您提供的代码有何对应关系?你是说在一定范围内生成端口号吗?只使用那些数字(允许重复?)?

标签: bash combinations


【解决方案1】:

不知道为什么你有这个COUNTER,但据我了解你想要什么,你可能:

  • 错位shift,
  • 在您的 while 条件下误用 [](测试),
  • 错位let COUNTER=COUNTER+1

用最少的改动快速修复:

#!/bin/bash
HOST=$1
shift
COUNTER=0
while [ $COUNTER -lt 100 ]; do
    for PORT in "$@"
    do
        nmap -Pn --host_timeout 100 --max-retries 0 -p $PORT $HOST
    done
    let COUNTER=COUNTER+1
done

就个人而言,我会写:

HOST=$1
shift
for (( COUNTER = 0; COUNTER < 100; COUNTER += 1 )); do
  for PORT in "$@"; do
    nmap -Pn --host_timeout 100 --max-retries 0 -p $PORT $HOST
  done
done

我觉得更容易理解。口味问题。关于您的编码风格的评论:您可能应该尝试保持一致并在半列(您的 while 循环)或换行符(您的 for 循环)之间进行选择。当然,正确缩进你的代码。真的很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    相关资源
    最近更新 更多