Bash 如何分析单个文件中模式的多个文本块(多行)?

Bash 如何分析单个文件中模式的多个文本块(多行)?,bash,grep,nmap,Bash,Grep,Nmap,我已经对多个IP地址使用--script ssl enum ciphers-p443 192.168.0.0/24选项运行了nmap扫描。我还使用--script ssh2 enum algos-p22选项运行了一个非常类似的扫描,该扫描以相同的格式生成输出 我想快速分析这些数据,并专注于特定密码或算法的特定匹配。总体目标是在不使用Nessus或Rapid7 InsightVM等高级工具的情况下运行临时内部漏洞评估 虽然nmap支持将-oX选项输出为XML,但我发现Microsoft Word、

我已经对多个IP地址使用
--script ssl enum ciphers-p443 192.168.0.0/24
选项运行了
nmap
扫描。我还使用
--script ssh2 enum algos-p22
选项运行了一个非常类似的扫描,该扫描以相同的格式生成输出

我想快速分析这些数据,并专注于特定密码或算法的特定匹配。总体目标是在不使用Nessus或Rapid7 InsightVM等高级工具的情况下运行临时内部漏洞评估

虽然
nmap
支持将
-oX
选项输出为XML,但我发现Microsoft Word、Excel或web浏览器都不知道如何打开该文件。Microsoft产品不断产生xml格式不正确的错误

于是我试了一下。虽然它可以很容易地按端口对IP地址进行分组,但它似乎无法进一步为我分析密码或算法

所以现在我正试图找到一种手动解析这些数据块的方法。 典型的结果可能包含以下格式的多个IP地址的数据(为了简洁起见,编辑了以下示例stdout):

如何使用bash可用的标准应用程序编写脚本来循环遍历每个文本块?我们不知道每个文本块的长度,因此我需要匹配字符串“Nmap scan report”或类似内容,并提取每个匹配之间的数据

像这样的东西会让我开始,但它并不完整,实际上也不会单独分离每个blob:

for i in $(cat scan-results | grep "Nmap scan report for"); do more data analysis here; done 
例如,我可能希望在端口443上搜索支持RC4密码的任何IP地址,因此在“进行更多数据分析”中,我希望运行:
grep-irc4

或者在ssh算法的情况下,我想确保所有cbc算法都被禁用,这样我就可以运行:
grep-icbc

最终的目标是列出匹配的任何内容,以便我可以快速将匹配归因于特定的IP地址。我不在乎结果如何,我只在乎快速找到结果


任何帮助都将不胜感激

没有更多的示例数据,只讨论有限的示例,并记住输出格式并不重要

注意:我的样本数据文件-
nmap.dat
-是OP提供的样本nmap数据的剪切粘贴副本

我认为多模式
grep
就足够了,例如:

# search for any IP address that support RC4 ciphers on port 443

$ grep -i "Nmap scan report for|443|RC4" nmap.dat
Nmap scan report for 192.168.1.1
443/tcp open  ssl/http lighttpd
Nmap scan report for 192.168.1.2
443/tcp open  ssl/http nginx (reverse proxy)
Nmap scan report for 192.168.1.3
Nmap scan report for 192.168.1.4

# want to ensure all cbc algorithms are disabled

$ egrep -i "Nmap scan report for|cbc" nmap.dat
Nmap scan report for 192.168.1.1
Nmap scan report for 192.168.1.2
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
Nmap scan report for 192.168.1.3
Nmap scan report for 192.168.1.4

多做数据分析
太宽泛;虽然我理解您的
分析
可能会因需求而异,但您(获取帮助)的最佳选择是为
进行更多数据分析的明确示例提供所需的输出
,我刚刚尝试在这里补充一些说明。非常感谢。看起来它会很好地工作。我刚刚在实验室网络中的一些附加扫描结果上验证了它。非常感谢。
# search for any IP address that support RC4 ciphers on port 443

$ grep -i "Nmap scan report for|443|RC4" nmap.dat
Nmap scan report for 192.168.1.1
443/tcp open  ssl/http lighttpd
Nmap scan report for 192.168.1.2
443/tcp open  ssl/http nginx (reverse proxy)
Nmap scan report for 192.168.1.3
Nmap scan report for 192.168.1.4

# want to ensure all cbc algorithms are disabled

$ egrep -i "Nmap scan report for|cbc" nmap.dat
Nmap scan report for 192.168.1.1
Nmap scan report for 192.168.1.2
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
Nmap scan report for 192.168.1.3
Nmap scan report for 192.168.1.4