Инкапсуляция UDP в протоколе TCP - PullRequest
2 голосов
/ 15 апреля 2011

Я не совсем уверен, с чего начать все это, но я предполагаю, что мне понадобится какой-то сетевой драйвер для захвата всего UDP-трафика. (Скажите, пожалуйста, какой из них лучше всего документирован и работает)

После того, как я успешно получу UDP-пакеты в C #, я буду отправлять их по TCP-соединению на мой сервер, на котором мне нужно отправить UDP-адрес получателю, а затем передать ответ BACK на клиентский компьютер ( это захватывает пакеты), а затем отправляет ответ программе, как если бы он был непосредственно с рассматриваемого сервера.

Так что в основном моя связь ниже:

Client running UDP program <<==TCP connection==>> Conversion Server <<==UDP connection==>> UDP Server 

Очки, с которыми мне нужна помощь:

  • Захват пакетов UDP из программ (с использованием сетевого драйвера)
  • Отправка ответа, полученного с сервера, обратно в программы (используя тот же сетевой драйвер ????)

Редактировать # 1

Хорошо, позвольте мне уточнить. У меня есть программа на моем компьютере, которую я не могу контролировать. У меня нет его источника, нет способа изменить источник, и я не могу использовать методы инъекций, чтобы сказать ему делать что-то другое. И, конечно, он использует UDP для соединения с сервером, и мне нужно, чтобы это работало.

Теперь мне нужно, чтобы эта программа работала, однако я нахожусь в защищенной сети, которая не допускает UDP-трафик (не спрашивайте). Мне нужно создать сетевой драйвер, который будет перехватывать весь UDP-трафик, генерируемый ВСЕМИ программами на моем компьютере, отправлять его на выделенный сервер (в котором я бы закодировал демон сервера для преобразования TCP в UDP и отправил его на пункт назначения).

Ответы [ 2 ]

2 голосов
/ 16 апреля 2011

Вам необходимо написать LSP (Layered Service Provider) и установить его.При реализации LSP ваш код получит фактический пакет, полученный от порта UDP, а затем отправит его на сервер TCP, который внесет некоторые изменения.После этого вы можете отправить измененный пакет из кода LSP вместо фактического в прикладную программу.Вы можете найти некоторые детали здесь .

Ресурсы:

0 голосов
/ 16 апреля 2011

Вам нужно установить свою сетевую карту в беспорядочный режим (например, Ethereal / Wireshark).Вам необходимо отфильтровать все пакеты UDP по определенному шаблону, чтобы определить, что именно это приложение отправляет их (может быть, по адресу назначения, может быть по полезной нагрузке).Это позаботится о перехвате.

Затем вы создадите сервер с UDP-сервером (внутри брандмауэра) с одной стороны и TCP-клиентом с другой, который будет инкапсулировать UDP-трафик в TCP и отправлять его другому.сервер (за пределами брандмауэра), который будет действовать противоположным образом.

В целом это выполнимо, а не специалистам в области ракетостроения просто необходимо хорошее понимание сетей.

PS Это напоминает мне, как парень получил доступодин раз в банковскую систему, и у нее был только ICPM (ping).Поэтому он написал TCP-over-PING и таким образом смог подключиться к telnet.Забавно.

...