我应该使用 Nmap::Parser 还是 Nmap::Scanner 来审计网络?

Posted

技术标签:

【中文标题】我应该使用 Nmap::Parser 还是 Nmap::Scanner 来审计网络?【英文标题】:Should I use Nmap::Parser or Nmap::Scanner to audit a network? 【发布时间】:2010-12-03 16:36:27 【问题描述】:

我想以最快的方式审核我的大型网络的设备。我应该使用Nmap::Parser 还是Nmap::Scanner

我想创建一个返回 ping 以及相关操作系统足迹和标识的 IP 地址列表。

示例

ping 192.168.*.*

然后,当我成功 ping 时,将 IP 地址存储在哈希中,并猜测操作系统是什么

【问题讨论】:

【参考方案1】:

无论你使用Nmap::Parser还是Nmap::Scanner,都必须用Nmap运行同样的扫描,所以两者没有速度差异。

这是一个使用Nmap::Scanner 的示例,它大致完成了您想要的操作,报告主机的状态并尝试在它们启动时对它们进行操作系统指纹识别,并将结果存储在哈希中。您应该能够根据需要对其进行扩展。

#!/usr/bin/perl

use strict;
use warnings;

use Nmap::Scanner;

my %network_status;

my $scanner = new Nmap::Scanner;
$scanner->register_scan_complete_event(\&scan_completed);
$scanner->guess_os();

$scanner->scan('-O 192.168.*.*');

foreach my $host ( keys %network_status ) 
    print "$host => $network_status$host\n";



sub scan_completed 
    my $self     = shift;
    my $host     = shift;

    my $hostname = $host->hostname();
    my $addresses = join(',', map $_->addr() $host->addresses());
    my $status = $host->status();

    print "$hostname ($addresses) is $status ";

    my $os_name = 'unknown OS';
    if ( $status eq 'up' ) 
        if ( $host->os() && $host->os()->osmatches() ) 
            my ($os_type) = $host->os()->osmatches();
            $os_name = $os_type->name();
        
        print "($os_name)";
    
    print "\n";

    $network_status$addresses = $os_name;

【讨论】:

感谢该示例代码...我开始看到我可能想要使用 Nmap::Scanner。如果我的发现过程需要增长,我可以看到如何更轻松地使用异步和 IPC(用于使用不同的发现机器进行解耦)。一个网络是我可能试图发现的 10.*.*.* 或 256^3 个 IP 地址。【参考方案2】:

嗯,其中之一是您已经拥有的数据的解析器,其中之一是创建数据的扫描仪。使用可以完成您需要的工作的那个。任务的哪一部分导致了问题?

【讨论】:

我对模块的无知是导致问题的原因。 :-) 我想使用 Nmap 来发现可发现的设备,然后将网络元素插入队列。一旦完成,我希望对 SNMP、TL1 等进行更严格的调查。谢谢!

以上是关于我应该使用 Nmap::Parser 还是 Nmap::Scanner 来审计网络?的主要内容,如果未能解决你的问题,请参考以下文章

设置SUID用于提权或降权

检查正在使用的端口

我应该使用 createRef 还是 useRef,为啥?

我应该使用 display: block,还是应该始终使用 display: flex?

我应该使用 ScrollView 还是 RecyclerView 在片段中滚动?

我应该使用 MapView 还是 MapFragment