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或者真正的问题在哪里?谢谢。
我一直在对 snmpenum.pl 脚本进行一些调试,NEt::SNMP 做得很好,问题是脚本在从 OID 值文件(linux.txt、windows.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 char 进行拆分,该字符不存在于行尾。所以我假设最后一个值可能包含行尾的任何虚假字符 ascii 代码(换行符或回车符?
while (<CONFIG>){
chomp $_;
my @system= split /t+/,$_;
最后,我在Windows.txt,linux,txt和cisco的行尾添加了一个\t(制表符.txt这些文件与 snmpenum.pl 一起分发并且都运行良好!例如:
for filename in $(ls *.txt); do perl -i -p -e 's/rn/trn/' ./$filename; done
另一种解决方案是为 snmpenum.pl 进行代码修改...
干杯摩根
包含snmpenum附带的OID的文件(例如linux.txt(是DOS格式。只需将它们转换为UNIX格式(例如dos2unix(,它应该可以正常工作。