Перехват TCP-соединения

У меня есть небольшой проект, над которым я работал на C ++, и из-за характера того, что он делает, мне нужно вставить пакеты в поток TCP в реальном времени. (Цель достаточно невинна, http://ee.forumify.com/viewtopic.php?id=3299 , если вы ДОЛЖНЫ знать) Я создаю редактор уровней для игры, и из-за характера рукопожатий я не могу просто установить новое соединение с библиотекой высокого уровня, такой как WinSock. До сих пор он полагался на Winsock Packet Editor для выполнения грязной работы, но если бы я позволил приложению справиться со всем этим, это сделало бы всех счастливыми.

Мой вопрос таков: есть ли где-нибудь API, который разрешите мне взять под контроль живой TCP-поток, и желательно тот, который сохраняет его в силе после его завершения? И я бы предпочел не вводить какие-либо библиотеки DLL. Также нельзя использовать обходные пути, поскольку я использую GCC / Mingw.

Я поигрался с WinPCap, и у меня есть рабочий код (я могу собрать пакет и из него сгенерировать соответствующий пакет для отправки) но поскольку он работает на таком низком уровне, Я не могу предвидеть все возможные протоколы, которые может использовать конечный пользователь. Да, есть вероятность, что они будут использовать IPv4 через Ethernet, но как насчет тех людей, которые все еще используют PPP или какой-то другой малоизвестный протокол? Кроме того, соединение прерывается клиентским приложением после того, как я закончил с ним, поскольку последние значения идентификаторов в пакетах изменились, и клиент предполагает, что он отключился.

Итак, если кто-то может предоставить высокоуровневый TCP Манипулятор потока, я был бы очень рад. Если нет, я просто продолжу возиться с WinPCap и скажу всем пользователям удаленного доступа, чтобы они улучшили Интернет.

Целевая платформа: Microsoft Windows XP через Windows 7

5
задан AstroCB 30 August 2014 в 20:39
поделиться