Как я могу читать и записывать сырые IP-пакеты из Java на Mac? - PullRequest
3 голосов
/ 02 сентября 2008

Какой самый простой способ иметь возможность отправлять и получать необработанные сетевые пакеты. Должен ли я написать свою собственную JNI-оболочку для некоторого c API, и в этом случае какой API я ищу?

РЕДАКТИРОВАТЬ: я хочу иметь возможность делать то, что делает Wireshark, то есть записывать все входящие пакеты на интерфейсе, а также иметь возможность отправлять обратно мои собственные созданные пакеты. И я хочу сделать это на Mac.

Ответы [ 5 ]

1 голос
/ 06 сентября 2008

Моя лучшая ставка до сих пор, кажется, BPF API и написать тонкую оболочку JNI

1 голос
/ 05 сентября 2008

Если вы начнете с мысли, что вам нужно что-то , например, анализатор пакетов, вы захотите взглянуть на http://netresearch.ics.uci.edu/kfujii/jpcap/doc/.

1 голос
/ 05 сентября 2008

Raw Socket для Java - это запрос JDK на долгое время. Смотри запрос здесь . Там долгое обсуждение, где вы можете найти обходные пути и решения. Когда-то мне это было нужно для простой операции PING, но я не могу вспомнить, как я это решил. Извините:)

0 голосов
/ 22 сентября 2008

Вы не можете получить доступ к необработанным сокетам из чистой Java, поэтому вам понадобится какой-то слой между вашим Java-кодом и сетевыми интерфейсами.

Также обратите внимание, что доступ к необработанным сокетам обычно доступен только для «корневых» процессов, поскольку в противном случае любой пользователь может и а) прослушивать весь трафик, и б) генерировать поддельные пакеты.

Вместо того, чтобы писать всю свою программу так, чтобы она работала как «root», вы можете рассмотреть возможность захвата и генерации пакетов в отдельной программе с каким-то IPC (RMI, именованный канал, сокет TCP и т. Д.) для обмена данными с вашим Java-приложением.

0 голосов
/ 02 сентября 2008

TINI - это контроллер Java-сети, в котором могут быть библиотеки и классы для прямого доступа к данным из кадров Ethernet в потоки TCP. Вы можете найти что-то там, что реализует ваши необходимые классы. Если нет, то должны быть указатели или группы пользователей, которые дадут вам преимущество.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...