Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.236.55.137] |
|
Сообщ.
#1
,
|
|
|
Добрый день. Ничего стоящего в гугле не нашел. Может кто видел рабочий пример перехвата в Linux?
Приложение чужое, без исходников, работает с сетью (UDP). Нужно перехватить SendTo() и при некоторых условиях подменить ответ. Нашел нечто https://github.com/kubo/plthook https://github.com/Zeex/subhook/ но так и не понял как его применять к стороннему приложению (не библиотеке). P.S. в Windows с такой задачей проблем нет, перехватывается либо с помощью запускающего приложения, либо внедрением библиотеки. Как это делать в Linux не имею понятия. |
Сообщ.
#2
,
|
|
|
Есть какая-то библиотека , которая с ядра тянет пакетики. Посмотреть что идёт через интерфейс в любую сторону точно можно. Пример такой утилиты tcpdump , она в исходных текстах, так что можно посмотреть как библиотека называется , и если есть запрет на передачу пакета. Если нет , то наверное ипчейнами, это встроенный в ядрой брэндмауер, можно заблокировать передачу удп определенному клиенту, а либом вытащить пакеты и переслать кому нужно. Если пакетики идут редко, то можно даже на интерфейс повесить tcpdump, задать ему с командной строки какие пакеты печатать на экран, его вывод на экран перенаправить в собственную программку и разбирать выдачу, наверняка есть более простые методы.
|
Сообщ.
#3
,
|
|
|
Пиши ndis драйвер-монитор.
Добавлено Цитата dch @ Есть какая-то библиотека либпкап Добавлено Тьфу ты нуты. Тебе под линухи, тогда либпкап. Добавлено А если и подмена нужна по опред. критериям, то проще запилить свой модуль для нетфильтра. Добавлено В бздях такое решается написанием своей нетграфы |
Сообщ.
#4
,
|
|
|
Пакеты идут часто, костыли которые будут сильно грузить систему или увеличивать пинг, наверное, не вариант. Если бы это было приемлемо я бы уже написал UDP - прокси, повесил его на порт приложения, а само приложение - на какой-то другой порт.
Где-то есть пример перехвата такого трафика от определенного приложения? С нуля я не напишу, это не винда. Опыт написания под NIX заканчивается запуском виндовых приложений под Wine и компиляцией кросс-платформенных приложений в gcc. |
Сообщ.
#5
,
|
|
|
Цитата Виталь @ Пакеты идут часто, костыли которые будут сильно грузить систему или увеличивать пинг, наверное, не вариант. Зависит от пакетрейта, если пакетов не более 10-20 тысяч в секунду, задержки будут в пределах, 1-2 мсек. Добавлено Цитата Виталь @ Где-то есть пример перехвата такого трафика от определенного приложения? Я не очень красноглазый линуксоид, но на сколько знаю, инструментов для модификации трафика от конкретного приложения нет. Максимум что вы можете, это отследить системные вызовы, и трафик. Пример перехвата трафика и его модификацию можно глянуть тут. |
Сообщ.
#6
,
|
|
|
Цитата Gonarh @ либпкап точно |
Сообщ.
#7
,
|
|
|
Сообщ.
#8
,
|
|
|
ни разу не пробовал, а аскета как я понимаю все исходные тексты есть, можно перекомпилить со своими вставками и либы и ядро и драйвер интерфейса
|
Сообщ.
#9
,
|
|
|
Самый простой способ - через LD_PRELAOD
В аттаче пример, я так хватаю открытие/закрытие файла в FTP/SAMBA и отправляю пути по UDP - замена Inotify т.к. он глючный. Библиотека написана так что легко можно добавить новые функции к перехвату. Со статически линкованными приложениями работать не будет. Нужно скомпилять в динамическую бибиотеку и запустить целевое приложение следующим способом: bash:/# LD_PRELOAD=callmon.so ./my_app Прикреплённый файлcallmon.tar.gz (7 Кбайт, скачиваний: 367) |