2014-12-05 73 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),它應該可以正常工作。