1

snmpenum.pl在许多关于渗透测试的材料中都有介绍,尽管它已经是一个非常古老的程序。

我从这里下载了它。

这就是我遇到的问题。

$ perl snmpenum.pl 192.168.1.36 public linux.txt    # official usage

----------------------------------------
    SYSTEM INFO
----------------------------------------

" is expected in dotted decimal notation..1.2.1.1.1

我对Perl一无所知。谁能告诉我linux.txt是否有问题或真正的问题出在哪里?谢谢。

4

2 回答 2

4

我一直在对 snmpenum.pl 脚本进行一些调试,并且 NEt::SNMP 运行良好,问题是脚本在从 OID 值文件(linux.txt,windows.txt)读取行时拆分值的方式。 txt、cisco.txt)。 解决方案: 如果您在 windows.txt/linux.txt/cisco.txt 文件的每一行末尾添加一个 \t,则脚本再次运行!

我发现如果您用硬编码字符串替换读取的 OID 值,例如“1.3.6.1.2.1.1.5”(或您想要的任何值),Net::SNMP->session.get_bulk_request() 查询就可以工作。

my $result = $session-get_bulk_request(){
    -callback         => [\&table_cb, {}],
    -maxrepetitions   => 10,
    -varbindlist      => [$v]
};

使用硬编码字符串:

my $result = $session-get_bulk_request(){
    -callback         => [\&table_cb, {}],
    -maxrepetitions   => 10,
    -varbindlist      => ["1.3.6.1.2.1.1.5"]
};

所以我去看看 var $v 是如何创建的,它是从文件中读取的,代码基于 \t 字符进行拆分,该字符不存在于行尾。所以我假设最后一个值可能包含行尾的任何虚假字符 ascii 代码(换行符或回车符?):

while (<CONFIG>){
    chomp $_;
    my @system= split /\t+/,$_;

最后,我在与 snmpenum.pl 一起分发的 windows.txt、linux、txt 和 cisco.txt 文件的行尾添加了一个 \t (Tab),并且一切正常!例如:

 for filename in $(ls *.txt); do perl -i -p -e 's/\r\n/\t\r\n/' ./$filename; done

另一种解决方案是对 snmpenum.pl 进行代码修改...

干杯,摩根

于 2015-01-17T13:55:59.477 回答
3

snmpenum 附带的包含 OID 的文件(例如 linux.txt)是 DOS 格式的。只需将它们转换为 UNIX 格式(例如 dos2unix),它应该可以正常工作。

于 2016-11-16T02:40:40.407 回答