Я хочу создать приложение, которое направляет весь сетевой трафик (не только HTTP) через мое приложение. По сути, я хочу, чтобы весь трафик был передан моему приложению (они никогда не должны достигать фактической цели, мое приложение должно обрабатывать это), который, в свою очередь, будет перенаправлен на сервер; то же самое касается ввода, только наоборот (сервер -> приложение -> программа, которая хочет получить ответ). Существуют ли какие-либо библиотеки (или подобные вещи), которые упростили бы создание приложения? Я ищу что-то, что я могу использовать из Python или Java, но если это действительно необходимо, я могу выучить другой язык.
Маршрутизировать все пакеты через мою программу?
Ответы (4)
То, что вы хотите использовать, это библиотека захвата пакетов, вы можете использовать e pcap или его реализацию или привязки в python или java.
Однако такие вещи обычно реализуются на низком уровне, в идеале с использованием C. Вот учебник Tutorial
РЕДАКТИРОВАТЬ: в свете ваших комментариев вы определенно хотите взглянуть на хуки netfilter
Пока вы этим занимаетесь, вы также можете взглянуть на netfilter крючки
Взгляните на Jpcap.
Если вы хотите маршрутизировать только tcp-трафик, на самом деле достаточно просто использовать потоки и сокеты. Вы должны прослушивать разные порты для каждого сервера, к которому хотите подключиться. Либо в Java, либо в Python вам нужно создать «сокет» для каждого порта, который вы хотите прослушивать.
Для каждого нового соединения вы создаете новое соединение с сервером и создаете два новых потока для обработки этого соединения, один поток будет считывать все данные с клиента и отправлять их на сервер. Другой будет читать все с сервера и отправлять клиенту. Когда какой-либо конец соединения закрывает его, вы закрываете другой и завершаете оба потока.
Если вы делаете это в Linux, вам следует подумать об использовании устройства TUN/TAP, которое является очень удобным инструментом для перехвата сетевого трафика для пользовательской обработки. Вот базовое руководство, если вы не знакомы с http://backreference.org/2010/03/26/tuntap-interface-tutorial/