Тема: VbScript:Определение принадлежности IP адреса к подсети с маской
function count_subnet_prefix(subnet) 'первый пришедший в голову алгоритм подсчета префикса подсети
parts=split(subnet,".")
prefix=1
subnet_dec=parts(0)*256^3+parts(1)*256^2+parts(2)*256+parts(3)
do
bin_part=cint(right(cstr(subnet_dec),1)) mod 2
if bin_part=1 then prefix=prefix+1
subnet_dec=(subnet_dec-bin_part)/2
loop while (subnet_dec>2)
count_subnet_prefix=prefix
end function
function is_ip_in_network_masked(ip,network,mask)
parts=Split(IP,".")
dec_ip=parts(0)*256^3+parts(1)*256^2+parts(2)*256+parts(3)
parts=Split(network,".")
network_start=parts(0)*256^3+parts(1)*256^2+parts(2)*256+parts(3)
network_end=network_start+2^(32-count_subnet_prefix(mask))
if (dec_ip>=network_start)and(dec_ip<=network_end) then
is_ip_in_network_masked = true
else
is_ip_in_network_masked = false
end if
end function
msgbox is_ip_in_network_masked("192.168.4.1","192.168.0.0","255.255.252.0")Пользуемся функцией is_ip_in_network_masked(ipадрес, начало подсети, маска) - возвращаем булево - принадлежит ip указанной подсети с указанной маской или нет

