Pull to refresh

Comments 30

Пан знает толк в извращеньях :-)


С учебной точки зрения опыт интересный ! ICMP действительно может нести данные и в контексте текущей задачи не отличается от UDP. Кроме уровня в модели OSI.

UFO landed and left these words here

Это может иметь применение в стеганографии.

Ещё тут такое упоминается:

Кстати часто операторы связи приоритезируют ICMP, чтобы скрыть перегрузки каналов связи. И "ping туннель" через таких операторов работает лучше чем UDP.

В ранней сети Корбины между районами Москвы ходили только пинги и мы с друзьями туннелировались как раз через них ;)

обидно бывает читать рассказы тех, кто застал рождение интернета из соединения своего компа с компом друга по проводу для quake по локалке) когда родился позже этого...

обиднее — периодически наблюдать что у кого-то в запасе больше лет чем у тебя, а старпёрские рассказы миллениалов — это всё фигня

обиднее — периодически наблюдать что у кого-то в запасе больше лет чем у тебя

Зачем обижаться? Я тихо радуюсь, что я буду червей кормить — а они ещё помучаются!

Если кому интересно, картинка на обложке из аниме "Врата штейна"

UFO landed and left these words here

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

UFO landed and left these words here

Верно, однако зачастую информация теряется не в моем узле. Но факт остается фактом - хранить что либо таким способом не стоит.

оно открытым текстом отправляется


так что С-сарказм

Новое — это хорошо забитое забытое старое!

Сказочка про ping.

Задумал школьный учитель детей ping-у обучить. И умер весь интернет ненадолго. Почему не надолго? Да потому что мертвый интернет не пингуется.

Интересная идея, но бесполезное.

Вспомнилось, как я в своё время реализовал ICMP-туннель между двумя подсетями. Дано: две подсети A, B, между которыми отсутствуют acl - даже пинги не ходят. И есть общий ресурс в третьей подсети C, который доступен всем. Отправляем пинг на общий ресурс, подделывая IP-адрес отправителя. В итоге пакет ходит по маршруту A->C->B. Из встреченных сложностей: нужно знать все три ip-адреса, но позже ICMP-туннель оброс функционалом служебных сообщений, чтобы можно было протестировать туннель или сообщить реальный ip-адрес отправителя. Внутри туннеля бегал обычный tcp, так что потери пакетов восстанавливались им. Для браузинга интернета по выходным этого хватало.

Много думал над этим, но пришел к выводу, что подделывать адрес отправителя бесполезно. Ведь этот адрес в заголовке пакета переписывается NATами и до получателя он дойдёт с другим адресом. Или нет? Если бы эта схема действительно работала, поверх неё можно было бы придумать ещё массу всяких плюшек...

nat'a между подсетями не было в моём случае, просто связь между двумя машинами, на одной из которых был доступ в интернет, и на обеих админские права.

nat'a между подсетями не было в моём случае

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

Я, конечно, могу ошибаться, но NAT никак не мешает подделыванию ip-адреса отправителя icmp-пакета, роутер просто пошлёт echo-ответ в поддельный ip-адрес (он то не в курсе ваших махинаций). На похожем принципе реализована ddos атака через icmp - smurf attack.

Воспользуюсь пожеланиями автора и подкину бесполезных, но весёлых идей.

Во-первых, идея изучения IP (вообще), и ICMP (в частности), по скучным RFC наверняка кем-то будет оценена как бесполезная, но эффект в итоге будет сильно веселее — и английский прокачаешь, и узнаешь больше, и в статьях на хабре не будет чуши, подобной этой:

не упоминаю порты и всё что с ними связано, ведь 1й порт для ICMP это скорее условность

Сразу становится понятно, что источником информации об ICMP являлась соответствующая статья на русской Википедии (да и прямая ссылка в статье как бы подтверждает), ведь нигде больше не написано, что у ICMP есть какой-то неведомый Порт/ID, и равен он 1.

Рис. 1
Рис. 1

А вот если бы автор изучал ICMP по RFC, или хотя бы по англоязычной Википедии, то он бы ещё до написания статьи знал, что порты в привычном смысле существуют только у транспортных (к коим ICMP не относится никак) протоколов типа UDP или TCP, но у всех интернет-протоколов есть очень даже не условный, а самый что ни на есть конкретный Protocol ID, и именно у ICMP он имеет значение 1. Файл /etc/protocols (или более близкий автору %SystemRoot%\System32\drivers\etc\protocol) — это как раз справочник по этим самым ID.

Во-вторых, идея не работать под административным аккаунтом, а для запуска программ, требующих повышения полномочий, использовать doas/sudo/runas.exe, не нова и не так уж и бесполезна, но будет очень весело, если автор себе в один прекрасный день что-нибудь снесёт вплоть до переустановки ОС. Это к тому, что работа с raw-sockets требует админских прав, о чём автор в статье не упомянул (напрасно).

А вообще — молодец, пиши ещё.
Успехов!

Скоро изобретут ассемблер на python

Дизассемлер на ruby Вас устроит? Я написал. Могу, в принципе, и ассемблер написать, просто смысла не вижу.

Sign up to leave a comment.

Articles