@@ -8,7 +8,7 @@ class TargetParser
88 # @param ip [String] IP address
99 # @param port [Fixnum] port
1010 # @return [Array] array of enumerated addresses
11- def enumerateIPRange ( ip , port )
11+ def enumerateIPRange ( ip , port = nil )
1212 if ip . fqdn?
1313 if port . nil?
1414 socket = ip
@@ -17,29 +17,22 @@ def enumerateIPRange(ip,port)
1717 end
1818 return [ socket ]
1919 else
20- if ip . include? "-"
21- octets = ip . split ( '.' )
22- range = octets . pop . split ( '-' )
23- lower = NetAddr ::CIDR . create ( octets . join ( '.' ) + "." + range [ 0 ] )
24- upper = NetAddr ::CIDR . create ( octets . join ( '.' ) + "." + range [ 1 ] )
25- ip_array = NetAddr . range ( lower , upper , :Inclusive => true )
26- if !port . nil?
27- ip_array . map! { |i | i . concat ( ":" ) . concat ( port . to_s ) }
28- end
29- return ip_array
30- elsif ip . include? "/"
20+ if ip . include? "/"
3121 begin
32- cidr = NetAddr ::CIDR . create ( ip )
22+ ip_net = NetAddr ::IPv4Net . parse ( ip )
3323 rescue
3424 raise ArgumentError , "Invalid target: #{ ip } "
3525 end
36- ip_array = cidr . enumerate
37- ip_array . delete ( cidr . network )
38- ip_array . delete ( cidr . last )
26+
27+ sock_array = [ ]
28+ 1 . upto ( ip_net . len - 2 ) do |i |
29+ sock_array << ip_net . nth ( i ) . to_s
30+ end
31+
3932 if !port . nil?
40- ip_array . map! { |i | i . concat ( ":" ) . concat ( port . to_s ) }
33+ sock_array . map! { |i | i . concat ( ":" ) . concat ( port . to_s ) }
4134 end
42- return ip_array
35+ return sock_array
4336 else
4437 if port . nil?
4538 socket = ip
0 commit comments