【问题标题】:How to I create a nested for loop ping sweeper?如何创建嵌套的 for 循环 ping 清扫器?
【发布时间】:2017-06-29 21:20:58
【问题描述】:

好的,所以在编程方面我是一个完全的新手,(我在 Javascript、SQL 和大学课程中的一点视觉基础方面有经验的唯一语言。) 无论如何,我正在参加 SANS 安全/道德黑客课程,我学到的有用的小花絮之一是在 Windows 命令提示符中创建一个 ping 扫描器:

for /L %i in (1,1,255) do @ping -n 1 10.10.10.%i | find "TTL"

现在我想做的不仅是遍历第四个八位字节,还包括第三个八位字节和第二个八位字节。来自 SANS 类的 power point 说这可以通过嵌套的 for 循环和其他变量(%j,%k)来实现,但他们没有展示如何做到这一点的示例。任何帮助,将不胜感激。

【问题讨论】:

  • 当您在 Google 上搜索“嵌套 for 循环”时发现了什么?
  • 我找到了其他示例,但没有一个符合我想要完成的目标。

标签: windows batch-file for-loop cmd ping


【解决方案1】:

这是中的概念

@echo off
for /L %%i in (1,1,255) do (
    for /L %%j in (1,1,255) do (
        for /L %%k in (1,1,255) do (
            for /L %%l in (1,1,255) do (
                echo %%i.%%j.%%k.%%l
            )
        )
    )
)

或者这个 one-liner

for /L %i in (1,1,255) do for /L %j in (1,1,255) do for /L %k in (1,1,255) do for /L %l in (1,1,255) do echo %i.%j.%k.%l

解释:

  • 第 1 步: @echo off 删除此提示 - C:\...>
  • 第 2 步:四个for 循环分别从 1 循环到 255。
  • 第 3 步: 合并它们
  • 第 4 步:循环从 1.1.1.1 开始
    • 然后到下一个IP 1.1.1.2
    • 一路255.255.255.255
      • 第 5 步: echo 循环 IP 地址

【讨论】:

  • 或者如果你坚持直接在命令行上做,使用这个怪物:for /L %i in (1,1,255) do for /L %j in (1,1,255) do for /L %k in (1,1,255) do for /L %l in (1,1,255) do echo %i.%j.%k.%l
  • @Stephan 我从 %%x 更改为 %x 因为问题使用命令行元变量,而不是批处理文件元变量,是的,我讨厌 cmd.exe 不支持多行输入
  • @echo off 和格式清楚地表明这将是一个批处理文件,所以我“更正”了语法。您可以选择回滚到您的版本。
  • @Stephan 你的编辑是正确的,所以我把它留在那里。但我也包括了你的单行方法。
猜你喜欢
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-01
  • 2019-12-22
相关资源
最近更新 更多