Method: Rex::Socket.bit2netmask

Defined in:
lib/rex/socket.rb

.bit2netmask(bitmask, ipv6 = false) ⇒ Object

Converts a bitmask (28) into a netmask (255.255.255.240)



492
493
494
495
496
497
498
499
500
# File 'lib/rex/socket.rb', line 492

def self.bit2netmask(bitmask, ipv6=false)
  if bitmask > 32 or ipv6
    i = ((~((2 ** (128 - bitmask)) - 1)) & (2**128-1))
    n = Rex::Socket.addr_iton(i, true)
    return Rex::Socket.addr_ntoa(n)
  else
    [ (~((2 ** (32 - bitmask)) - 1)) & 0xffffffff ].pack('N').unpack('CCCC').join('.')
  end
end