← Все комнаты Путь «Защита (код)» →
СложныйЗащита (код) Код Осенний CTF

Полный IPv6

Прогресс комнаты 0 / 4
Задание 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Практика: напишите код

Примеры

Пример 1
expand_ipv6("::1")
→ "0000:0000:0000:0000:0000:0000:0000:0001"
Пример 2
expand_ipv6("2001:db8::8a2e:370:7334")
→ "2001:0db8:0000:0000:0000:8a2e:0370:7334"

Ещё 10 скрытых тестов.

solution
Ctrl+Enter — отправить Войдите, чтобы отправить

Пошаговый план — открывайте по одному шагу

  1. 1
    Отклоните строки с несколькими ::.

Подсказки — каждая до решения стоит −50 очков

Задание 4Как защититься

Используйте ipaddress.ip_address(s).exploded и сравнивайте адреса только после нормализации.

Разборы участников

Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.