Название: работа с реальными пакетами, виртуальные интерфейсы Отправлено: Alukardd от Февраль 03, 2012, 22:51 Здравствуйте.
Пойдём от глобального: если возможно, то хотелось бы реализовать маршрутизацию пакетов Непонятные подзадачи: - как добиться promiscuous mode (слушать все протоколы и порты на интерфейсе) - хотя про это видимо лучше забыть, т.к. нужны права повышенные - как использовать некий виртуальный интерфейс - использовать адрес loopback интерфейса (127.0.7.2, например - или я что-то не понимаю в этом мире?) - использовать дополнительный адрес на реальном физическом интерфейсе (в случае Linux, eth0:1, например) при этом так же нужны все протоколы и порты(у кого они есть - IP, например) Допустим всего это невозможно добиться в разумные сроки одному человеку, тогда задача будет со скрежетом на зубах переформулирована в такую: Забудем о возможности что-то принять из внешнего мира (т.к. все протоколы реализовать не удалось), тогда будем только устанавливать соединения сами и читать ответы. Соединения будут устанавливаться по запросу от других модулей программы (это не суть важно). Тогда вопрос - есть ли готовые структуры пакетов для TCP (вот это (http://ru.wikipedia.org/wiki/TCP#.D0.97.D0.B0.D0.B3.D0.BE.D0.BB.D0.BE.D0.B2.D0.BE.D0.BA_.D1.81.D0.B5.D0.B3.D0.BC.D0.B5.D0.BD.D1.82.D0.B0_TCP)), UDP или только что-то типа QHttp, QFtp, QtTelnet, что бы во внешний мир посылать? И можно ли в QTcpServer принять (соответственно, из QTcpSocket послать) различные структуры данных подряд - как такое обработать (write'у все равно что посылать, а вот как указать read'у что структура другая летит)? p.s. наверное я навалил много не совсем понятных желаний - спрашивайте - постараюсь доходчиво ответить p.p.s. вумными оборотами конечно можете ругаться (загуглю → попробую усвоить), но мои навыки программирования в целом и Qt в частности на начальном уровне (вернее на уровне структурного программирования на скриптовых языках). С ООП на каком-то приемлемом уровне знаком :) Название: Re: работа с реальными пакетами, виртуальные интерфейсы Отправлено: SimpleSunny от Февраль 04, 2012, 00:10 Опишите задачу, а не то как вы хотите ее реализовать.
Название: Re: работа с реальными пакетами, виртуальные интерфейсы Отправлено: Alukardd от Февраль 04, 2012, 00:16 Изначальная задача: эмулировать маршрутизатор (всю "внутреннюю" логику я думаю, что без особых проблем реализую)
Если это ппц как геморройно, то задача превращается в: симулировать маршрутизатор, но всё же что бы в одну сторону общение с внешним миром да было. Название: Re: работа с реальными пакетами, виртуальные интерфейсы Отправлено: SimpleSunny от Февраль 04, 2012, 12:15 Для windows можно использовать WinPCAP знакомство с которым можно начать с http://cherepovets-city.ru/insecure/reading/index.html
Для linux libpcap Название: Re: работа с реальными пакетами, виртуальные интерфейсы Отправлено: Alukardd от Февраль 04, 2012, 12:53 Эти библиотеки, конечно, помогут мне распарсить трафик, но кто мне даст его получить?
Я же вроде написал, что это видимо тупиковый вариант, т.к. нужны будут права root'овые (в винде LOCAL/SYSTEM) чтобы перевести интерфейс в неразборчивый режим. Или с помощью них можно генерить свои пакеты и при этом не отправлять их на реальный интерфейс? Основной вопрос в том есть ли готовые структуры (или классы) для работы с сетевыми пакетами протоколов (сеансового и транспортного уровней)? И второй вопрос: можно ли через сокеты подряд передать две разные структуры (как их читать в таком случае)? Название: Re: работа с реальными пакетами, виртуальные интерфейсы Отправлено: Akon от Февраль 04, 2012, 19:32 Трафик сливается с низкого уровня - уровня драйверов.
В сорцах есть заголовочные файлы, описывающие сетевые протоколы. Название: Re: работа с реальными пакетами, виртуальные интерфейсы Отправлено: Alukardd от Февраль 04, 2012, 21:46 Спасибо.
Тут еще мысль родилась: можно ли использовать (создавать/управлять/удалять) TAP интерфейсы (в n'ом количестве)? Это на мой взгляд решило бы мои проблемы полностью (хотя я не нашёл достойной литературы, что бы точно это утверждать). |