Russian Qt Forum
Ноябрь 02, 2024, 13:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: работа с реальными пакетами, виртуальные интерфейсы  (Прочитано 4162 раз)
Alukardd
Гость
« : Февраль 03, 2012, 22:51 »

Здравствуйте.

Пойдём от глобального: если возможно, то хотелось бы реализовать маршрутизацию пакетов
Непонятные подзадачи:
- как добиться promiscuous mode (слушать все протоколы и порты на интерфейсе) - хотя про это видимо лучше забыть, т.к. нужны права повышенные
- как использовать некий виртуальный интерфейс
            - использовать адрес loopback интерфейса (127.0.7.2, например - или я что-то не понимаю в этом мире?)
            - использовать дополнительный адрес на реальном физическом интерфейсе (в случае Linux, eth0:1, например)
        при этом так же нужны все протоколы и порты(у кого они есть - IP, например)

Допустим всего это невозможно добиться в разумные сроки одному человеку, тогда задача будет со скрежетом на зубах переформулирована в такую:
Забудем о возможности что-то принять из внешнего мира (т.к. все протоколы реализовать не удалось), тогда будем только устанавливать соединения сами и читать ответы. Соединения будут устанавливаться по запросу от других модулей программы (это не суть важно). Тогда вопрос - есть ли готовые структуры пакетов для TCP (вот это), UDP или только что-то типа QHttp, QFtp, QtTelnet, что бы во внешний мир посылать? И можно ли в QTcpServer принять (соответственно, из QTcpSocket послать) различные структуры данных подряд - как такое обработать (write'у все равно что посылать, а вот как указать read'у что структура другая летит)?

p.s. наверное я навалил много не совсем понятных желаний - спрашивайте - постараюсь доходчиво ответить
p.p.s. вумными оборотами конечно можете ругаться (загуглю → попробую усвоить), но мои навыки программирования в целом и Qt в частности на начальном уровне (вернее на уровне структурного программирования на скриптовых языках). С ООП на каком-то приемлемом уровне знаком  Улыбающийся
Записан
SimpleSunny
Гость
« Ответ #1 : Февраль 04, 2012, 00:10 »

Опишите задачу, а не то как вы хотите ее реализовать.
Записан
Alukardd
Гость
« Ответ #2 : Февраль 04, 2012, 00:16 »

Изначальная задача: эмулировать маршрутизатор (всю "внутреннюю" логику я думаю, что без особых проблем реализую)
Если это ппц как геморройно, то задача превращается в: симулировать маршрутизатор, но всё же что бы в одну сторону общение с внешним миром да было.
Записан
SimpleSunny
Гость
« Ответ #3 : Февраль 04, 2012, 12:15 »

Для windows можно использовать WinPCAP знакомство с которым можно начать с http://cherepovets-city.ru/insecure/reading/index.html
Для linux libpcap
Записан
Alukardd
Гость
« Ответ #4 : Февраль 04, 2012, 12:53 »

Эти библиотеки, конечно, помогут мне распарсить трафик, но кто мне даст его получить?
Я же вроде написал, что это видимо тупиковый вариант, т.к. нужны будут права root'овые (в винде LOCAL/SYSTEM) чтобы перевести интерфейс в неразборчивый режим.

Или с помощью них можно генерить свои пакеты и при этом не отправлять их на реальный интерфейс?

Основной вопрос в том есть ли готовые структуры (или классы) для работы с сетевыми пакетами протоколов (сеансового и транспортного уровней)?
И второй вопрос: можно ли через сокеты подряд передать две разные структуры (как их читать в таком случае)?
« Последнее редактирование: Февраль 04, 2012, 13:01 от Alukardd » Записан
Akon
Гость
« Ответ #5 : Февраль 04, 2012, 19:32 »

Трафик сливается с низкого уровня - уровня драйверов.
В сорцах есть заголовочные файлы, описывающие сетевые протоколы.
Записан
Alukardd
Гость
« Ответ #6 : Февраль 04, 2012, 21:46 »

Спасибо.
Тут еще мысль родилась: можно ли использовать (создавать/управлять/удалять) TAP интерфейсы (в n'ом количестве)?
Это на мой взгляд решило бы мои проблемы полностью (хотя я не нашёл достойной литературы, что бы точно это утверждать).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 21.