Полный IPv6
Задание 1Введение
Цель: Нормализовать IPv6-адреса.
Напишите expand_ipv6(s): разверните IPv6 до 8 групп по 4 строчные hex-цифры. :: встречается не больше одного раза и заменяет хотя бы одну группу нулей. Некорректный адрес → None.
Задание 2Теория и инструменты
Один адрес IPv6 пишется многими способами: ::1, 0:0:0:0:0:0:0:1. Списки доступа без нормализации легко обойти.
:: заменяет одну или несколько групп нулей и встречается не больше раза.
Инструменты
- Python 3 или Node.js
- Встроенные тесты в редакторе
Больше теории — в разделе «Обучение: Защита (код)».
Задание 3Практика: напишите код
Примеры
expand_ipv6("::1")
→ "0000:0000:0000:0000:0000:0000:0000:0001"expand_ipv6("2001:db8::8a2e:370:7334")
→ "2001:0db8:0000:0000:0000:8a2e:0370:7334"Ещё 10 скрытых тестов.
Пошаговый план — открывайте по одному шагу
- 1Отклоните строки с несколькими
::. - 2Восстановите недостающие группы нулей.
- 3Проверьте каждую группу и дополните её до 4 символов.
Подсказки — каждая до решения стоит −50 очков
Задание 4Как защититься
Используйте ipaddress.ip_address(s).exploded и сравнивайте адреса только после нормализации.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.