【问题标题】:Extracting IP address and ports of NMAP scan in seperate lines在单独的行中提取 NMAP 扫描的 IP 地址和端口
【发布时间】:2022-01-26 08:49:35
【问题描述】:

我对域进行 nmap 扫描,并希望以以下形式输出 IP 地址和所有打开的端口:

127.0.0.1:22
127.0.0.1:80
127.0.0.1:443

我有以下 bash 脚本

nmap -vv -sV subdomain.domain.tld -oG - |  awk '/open/' | awk '{printf "%s:", $2;
  for (i=4;i<=NF;i++) {
    split($i,a,"/");
    if (a[2]=="open") printf ",%s",a[1];}
  print ""}' |
sed -e 's/,//' 

它输出以下内容:

127.0.0.1:22,80,443

我无法将 IP 地址的值传递到 for 循环中,因此我可以每行输出它。我觉得它只需要一点点调整就可以得到我想要的输出。

【问题讨论】:

  • 在您的问题中,您向我们展示了您不想要的输出和您想要的输出,但您从未向我们展示过您的 awk 脚本的输入,即nmap -vv -sV subdomain.domain.tld -oG - 的输出,所以我们只能做很多事情来帮助您修复解析输入的脚本。对于所有问题,请确保提供示例输入和输出,以便我们可以为您提供最好的帮助,并提供一个示例,我们可以复制/粘贴进行测试。顺便说一句,不是我的反对票或接近票。

标签: awk sed nmap


【解决方案1】:

你已经有了$2的值,你可以用它来打印带有:和端口的ip值。

我认为您可以在末尾省略sed 的管道,您可以使用单个管道到awk 以匹配模式/open/ { 开头

nmap -vv -sV localhost -oG - | awk -v OFS=':' '
/open/ {
  for (i=4;i<=NF;i++) {
    split($i,a,"/");
    if (a[2]=="open") print $2, a[1]
  }
}'

输出

127.0.0.1:80
127.0.0.1:443
...etc

【讨论】:

    猜你喜欢
    • 2019-03-05
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2014-03-14
    相关资源
    最近更新 更多