Path: blob/master/lib/msf/core/opt_address.rb
19778 views
# -*- coding: binary -*-12module Msf34###5#6# Network address option.7#8###9class OptAddress < OptBase10def type11return 'address'12end1314def valid?(value, check_empty: true, datastore: nil)15return false if check_empty && empty_required_value?(value)16return false unless value.kind_of?(String) or value.kind_of?(NilClass)1718if (value != nil and value.empty? == false)19begin20getaddr_result = ::Rex::Socket.getaddress(value, true)21# Covers a wierdcase where an incomplete ipv4 address will have it's22# missing octets filled in with 0's. (e.g 192.168 become 192.0.0.168)23# which does not feel like a legit behaviour24if value =~ /^\d{1,3}(\.\d{1,3}){1,3}$/25return false unless value =~ Rex::Socket::MATCH_IPV426end27rescue28return false29end30end3132return super33end34end3536end373839