2014-12-05 43 views
1

snmpenum.pl被引入许多关于渗透测试的材料中,虽然它已经是一个非常古老的程序。snmpenum的用法

我从here下载了它。

这就是我遇到的问题。

$ 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或者真正的问题在哪里?谢谢。

+0

也许在您的系统上的Net :: SNMP模块和作者所拥有的模块之间存在版本冲突? 另外,检查linux.txt是否有符合系统约定的行结束符(Windows的ms-dos行结束符,Linux的unix行结束符等)。 – Jolta 2014-12-07 21:35:18

回答

3

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

我发现,如果通过硬编码字符串,如“1.3.6.1.2.1.1.5”(或任何你想要的值)的Net :: SNMP协议> session.get_bulk_request更换读取OID值( )查询工作。

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+/,$_; 

最后,我在的末尾加上一个\ t(表)在snmpenum.pl发布的windows.txt,linux,txt和cisco.txt文件中,所有这些文件都可以正常工作。对于这个前:

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

另一个解决办法是作出snmpenum.pl代码修改...

干杯, 摩根

0

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