Маршрутизация всех пакетов через мою программу? - PullRequest
4 голосов
/ 10 января 2012

Я хочу создать приложение, которое маршрутизирует весь сетевой трафик (не только HTTP) через мое приложение. По сути, я хочу, чтобы весь трафик передавался моему приложению (они никогда не должны достигать реальной цели, мое приложение должно обрабатывать это), который, в свою очередь, будет перенаправлен на сервер; То же самое касается ввода, только в обратном порядке (сервер -> приложение -> программа, которая хочет получить ответ). Существуют ли какие-либо библиотеки (или подобные вещи), которые облегчили бы создание приложения? Я ищу что-то, что я могу использовать из Python или Java, но если это действительно необходимо, я могу выучить другой язык.

Ответы [ 4 ]

4 голосов
/ 10 января 2012

То, что вы хотите использовать, это библиотека захвата пакетов, вы можете использовать e pcap или его реализацию или привязки в python или java.

Однако подобные вещи обычно реализуются на низком уровне, в идеале с использованием C, Вот учебник Учебник

РЕДАКТИРОВАТЬ: В свете ваших комментариев вы определенно хотите взглянуть на крючки netfilter

Пока вы занимаетесь этим, вы также можете взглянуть на крючки сетевого фильтра

1 голос
/ 10 января 2012

Если вы хотите маршрутизировать только tcp-трафик, на самом деле это просто использование потоков и сокетов .Вы должны прослушивать разные порты для каждого сервера, к которому хотите подключиться.В Java или Python вам необходимо создать «сокет» для каждого порта, который вы хотите прослушивать.

Для каждого нового соединения вы создаете новое соединение с сервером и создаете два новых потока для обработки этого соединения,один поток будет читать все с клиента и отправлять его на сервер.Другой будет читать все с сервера и отправлять его клиенту.Когда любой конец соединения закрывает его, вы закрываете другой и заканчиваете оба потока.

1 голос
/ 10 января 2012

Посмотрите на Jpcap .

0 голосов
/ 10 января 2012

Если вы делаете это в Linux, вам следует рассмотреть возможность использования устройства TUN / TAP, которое очень удобно для перехвата сетевого трафика для пользовательской обработки. Вот базовый урок, если вы незнакомы http://backreference.org/2010/03/26/tuntap-interface-tutorial/

...