Как узнать конкретные IP-адреса, соответствующие определенному диапазону?

Как можно преобразовать диапазон адресов, такой как 1.119.192.0/21, в конкретные адреса для сравнения с другими имеющимися адресами? Возможно, есть ли какие-то онлайн-сервисы, готовые скрипты или алгоритмы для этого? Требуется найти совпадения между этими зашифрованными диапазонами и имеющимися адресами.
  • 10 февраля 2024 г. 17:29
Ответы на вопрос 3
Вы можете определить конкретные IP-адреса, соответствующие определенному диапазону, используя подсеть с префиксной нотацией CIDR (Classless Inter-Domain Routing), такую как 1.119.192.0/21. Чтобы это сделать, обычно используются специализированные библиотеки или инструменты.

Вот несколько способов, которые можно использовать:

1. Онлайн-сервисы:
Есть множество онлайн-инструментов CIDR, которые могут выполнить эту задачу. Просто введите поисковый запрос "CIDR calculator" или "IP range calculator" в любую поисковую систему, и вы найдете инструменты, которые позволят по диапазону CIDR получить список всех адресов.

2. Использование командной строки:
Если вы предпочитаете использовать командную строку и у вас установлен Linux, Mac или WSL (Windows Subsystem for Linux) на Windows, вы можете использовать утилиту `ipcalc` или `sipcalc`.

Пример использования ipcalc:
```bash
ipcalc 1.119.192.0/21
```

3. Скрипты на Python:
Если вам удобнее работать с Python, вы можете использовать библиотеку `ipaddress`, которая входит в стандартную библиотеку Python начиная с Python 3.3.

Пример скрипта под Python:

```python
import ipaddress

# Создаем объект сети на основе CIDR-нотации
network = ipaddress.ip_network('1.119.192.0/21')

# Выводим все IP-адреса в этой сети
for ip in network:
    print(ip)
```

4. Скрипты на других языках программирования:
Аналогичные библиотеки есть и для других языков программирования, например `netaddr` для Python или `ipaddress` для Ruby.

Преимущество использования скриптов заключается в том, что вы можете автоматизировать процесс и легко интегрировать его с другими инструментами или данными.

Чтобы найти совпадения между диапазонами IP-адресов и имеющимися адресами, вы можете вычислить список всех адресов для каждого диапазона и затем сравнить эти списки, используя алгоритмы сравнения или операции с множествами.

Обращаю ваше внимание, что диапазон 1.119.192.0/21 включает 2^(32-21) = 2^11 = 2048 IP-адресов, начиная от 1.119.192.0 и заканчивая 1.119.199.255. Это может быть слишком много адресов для вывода на экран или обработки вручную, но это обычно не проблема для скриптов и компьютерных программ.
Во первых это называется подсеть. 
Во вторых зная как это называется, поисковиком воспользоваться не сложно.

Запрос в гугл - https://www.google.com/search?q=%D0%BF%D0%BE%D0%BB...
Ссылка из гугла - https://itsecforu.ru/2021/09/03/%F0%9F%90%8D-%D0%B...
Тест - https://www.online-python.com/cwW3Zo7rVq
Переводишь в число, фиксируешь первые N бит. 
Оставшиеся биты могут быть любыми, но не могут быть сплошными нулями (адрес сети) и сплошными единицами (широковещательный адрес)
Похожие вопросы