имеется программа, захватывающая из сети пакеты, реализованная в виде сервера. -ждет подключения когда клиент подключился, начинается захват пакетов на заданном интерфейсе, с заданным ip & tcp-dest port меняем ip на ip, подключившегося клиента, порт-на порт клиента.... и вот теперь проблема передать это клиенту. думаю это следует передавать как тип SOCK_RAW сокета клиента, но как изменить тип сокета клиента? или может быть есть другой способ. ps: OS: FreeBSD 7.1
смысл менять ip и порт?, если ты хочешь снифанный трафик перекачивать подключившемуся клиенту, то просто передавай отснифанные пакеты дополнив загаловком о размере и времени к примеру, как обычные данные.
ок, я уже рассматривал такой вариант, как отрезать все заголовки и просто передать чистые данные клиенту, но проблема в другом - что если пакеты будут приходить не в том порядке, в котором нужно их передавать клиенту на обработку?... те придется реализовывать работу модуля tcp (собирать фрагменты). ps: эти данные - html страницы, которые вылавливаются с канального уровня.
идея такая: имеется некая сеть вифи, пойманные пакеты пропускаются через фильтр(уже написанный), который отделяет передающиеся пакеты интересующему меня вификлиенту, этот фильтр подает уже отсортированные пакеты на сервер, ждущий подключений....
ну как ты хотел тоже не вариант, у подключившегося клиента уже с твоми сервером установлено соединение и значения seq & ack number, которые при хэндшейке установились, в перехваченных пакетах номера другие. Править их, порт, ип, менять чексуммы это гемор еще тот.
думаю сегменты проще будет. С нужными номерами выбираешь данные, которые не по порядку накапливаешь. Т.е. у тебя есть пакет есть байт начала этих данных и размер. Кстати на счет хтмл, так вовсе не одно соединение для получения страницы. Каждая ссылка отдельный коннект помоему.
самое главное получить текстовую страницу, остальное, если я правильно понимаю, при действующем подключении к интернету, само оттуда придет(ну те это работа браузера) не так ли?
Booster потому что в перехваченных пакетах явно не мой (те не моего подключенного браузера) ip и порт, те они только пролетают мимо меня кому-то, а мне надо их (пакеты) интерпретировать правильно.
Booster можно подключаться как к любому другому серверу: если с одной и той же машины, то 127.0.0.1:порт, если с другой - IP:port, как обычно. ну а вифи карта делает свое дело.