• ipadress - библиотека для работы с IP адрес
    • Главное, что нам из библиотеки нужно - функция ip_network(adress, strict)
      • Функция возвращает "адрес сети/количество единиц в маске"
      • ip_network().netmask возвращает Маска сети в десятичном виде
      • ip_network().prefixlen возвращает количество единиц в маске
      • Итерация по ip_network() возвращает адрес каждого доступного узла в этой сети (включая служебные)

  • Для перевода IP адреса в двоичную систему счисления стоит использовать функцию:
def ip2bin(sIp):  
    bytes = [int(byte) for byte in sIp.split('.')]
      
    ip_bytes_as_sum = bytes[0] * 256 ** 3 + bytes[1] * 256 ** 2 + bytes[2] * 256 + bytes[3] # без понятия, как это работает
      
    ip_bytes_in_binary = f'{ip_bytes_as_sum:b}'
      
    result = "0" * (32 - len(ip_bytes_in_binary)) + ip_bytes_in_binary # Добавление значащих нулей в начало до 32 битов 
     
    return result
  • После с этой репрезентацией можно делать всё что угодно